(git:34ef472)
hfx_contract_block.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 !> \brief routines to contract density matrix blocks with the for center
9 !> integrals to yield the Kohn-Sham matrix. The specialized routines
10 !> are about 1.2-2.0 as fast as the default one.
11 !> \par History
12 !> 10.2009 created [Joost VandeVondele]
13 !> \author Joost VandeVondele
14 ! **************************************************************************************************
16  USE kinds, ONLY: dp
17 #include "../base/base_uses.f90"
18 
19  IMPLICIT NONE
20  PRIVATE
21  CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'hfx_contract_block'
22  PUBLIC :: contract_block
23 CONTAINS
24 ! **************************************************************************************************
25 !> \brief ...
26 !> \param ma_max ...
27 !> \param mb_max ...
28 !> \param mc_max ...
29 !> \param md_max ...
30 !> \param kbd ...
31 !> \param kbc ...
32 !> \param kad ...
33 !> \param kac ...
34 !> \param pbd ...
35 !> \param pbc ...
36 !> \param pad ...
37 !> \param pac ...
38 !> \param prim ...
39 !> \param scale ...
40 ! **************************************************************************************************
41  SUBROUTINE contract_block(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
42  INTEGER :: ma_max, mb_max, mc_max, md_max
43  REAL(kind=dp) :: kbd(mb_max*md_max), kbc(mb_max*mc_max), &
44  kad(ma_max*md_max), kac(ma_max*mc_max), pbd(mb_max*md_max), &
45  pbc(mb_max*mc_max), pad(ma_max*md_max), pac(ma_max*mc_max), &
46  prim(ma_max*mb_max*mc_max*md_max), scale
47 
48 #if !defined (__LIBINT)
49  mark_used(ma_max)
50  mark_used(mb_max)
51  mark_used(mc_max)
52  mark_used(md_max)
53  mark_used(kbd)
54  mark_used(kbc)
55  mark_used(kad)
56  mark_used(kac)
57  mark_used(pbd)
58  mark_used(pbc)
59  mark_used(pad)
60  mark_used(pac)
61  mark_used(prim)
62  mark_used(scale)
63  cpabort("libint not compiled in")
64 #else
65  SELECT CASE (ma_max)
66  CASE (1)
67  SELECT CASE (mb_max)
68  CASE (1)
69  SELECT CASE (mc_max)
70  CASE (1)
71  SELECT CASE (md_max)
72  CASE (1)
73  CALL block_1_1_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
74  CASE (2)
75  CALL block_1_1_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
76  CASE (3)
77  CALL block_1_1_1_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
78  CASE (4)
79  CALL block_1_1_1_4(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
80  CASE (5)
81  CALL block_1_1_1_5(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
82  CASE (6)
83  CALL block_1_1_1_6(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
84  CASE (7)
85  CALL block_1_1_1_7(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
86  CASE (9)
87  CALL block_1_1_1_9(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
88  CASE (10)
89  CALL block_1_1_1_10(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
90  CASE (11)
91  CALL block_1_1_1_11(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
92  CASE (15)
93  CALL block_1_1_1_15(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
94  CASE DEFAULT
95  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
96  END SELECT
97  CASE (2)
98  SELECT CASE (md_max)
99  CASE (1)
100  CALL block_1_1_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
101  CASE (2)
102  CALL block_1_1_2_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
103  CASE (3)
104  CALL block_1_1_2_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
105  CASE (4)
106  CALL block_1_1_2_4(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
107  CASE (5)
108  CALL block_1_1_2_5(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
109  CASE (6)
110  CALL block_1_1_2_6(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
111  CASE (7)
112  CALL block_1_1_2_7(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
113  CASE (9)
114  CALL block_1_1_2_9(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
115  CASE (10)
116  CALL block_1_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
117  CASE (11)
118  CALL block_1_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
119  CASE (15)
120  CALL block_1_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
121  CASE DEFAULT
122  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
123  END SELECT
124  CASE (3)
125  SELECT CASE (md_max)
126  CASE (1)
127  CALL block_1_1_3_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
128  CASE (2)
129  CALL block_1_1_3_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
130  CASE (3)
131  CALL block_1_1_3_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
132  CASE (4)
133  CALL block_1_1_3_4(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
134  CASE (5)
135  CALL block_1_1_3_5(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
136  CASE (6)
137  CALL block_1_1_3_6(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
138  CASE (7)
139  CALL block_1_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
140  CASE (9)
141  CALL block_1_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
142  CASE (10)
143  CALL block_1_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
144  CASE (11)
145  CALL block_1_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
146  CASE (15)
147  CALL block_1_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
148  CASE DEFAULT
149  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
150  END SELECT
151  CASE (4)
152  SELECT CASE (md_max)
153  CASE (1)
154  CALL block_1_1_4_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
155  CASE (2)
156  CALL block_1_1_4_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
157  CASE (3)
158  CALL block_1_1_4_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
159  CASE (4)
160  CALL block_1_1_4_4(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
161  CASE (5)
162  CALL block_1_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
163  CASE (6)
164  CALL block_1_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
165  CASE (7)
166  CALL block_1_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
167  CASE (9)
168  CALL block_1_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
169  CASE (10)
170  CALL block_1_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
171  CASE (11)
172  CALL block_1_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
173  CASE (15)
174  CALL block_1_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
175  CASE DEFAULT
176  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
177  END SELECT
178  CASE (5)
179  SELECT CASE (md_max)
180  CASE (1)
181  CALL block_1_1_5_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
182  CASE (2)
183  CALL block_1_1_5_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
184  CASE (3)
185  CALL block_1_1_5_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
186  CASE (4)
187  CALL block_1_1_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
188  CASE (5)
189  CALL block_1_1_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
190  CASE (6)
191  CALL block_1_1_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
192  CASE (7)
193  CALL block_1_1_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
194  CASE (9)
195  CALL block_1_1_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
196  CASE (10)
197  CALL block_1_1_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
198  CASE (11)
199  CALL block_1_1_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
200  CASE (15)
201  CALL block_1_1_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
202  CASE DEFAULT
203  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
204  END SELECT
205  CASE (6)
206  SELECT CASE (md_max)
207  CASE (1)
208  CALL block_1_1_6_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
209  CASE (2)
210  CALL block_1_1_6_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
211  CASE (3)
212  CALL block_1_1_6_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
213  CASE (4)
214  CALL block_1_1_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
215  CASE (5)
216  CALL block_1_1_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
217  CASE (6)
218  CALL block_1_1_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
219  CASE (7)
220  CALL block_1_1_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
221  CASE (9)
222  CALL block_1_1_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
223  CASE (10)
224  CALL block_1_1_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
225  CASE (11)
226  CALL block_1_1_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
227  CASE (15)
228  CALL block_1_1_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
229  CASE DEFAULT
230  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
231  END SELECT
232  CASE (7)
233  SELECT CASE (md_max)
234  CASE (1)
235  CALL block_1_1_7_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
236  CASE (2)
237  CALL block_1_1_7_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
238  CASE (3)
239  CALL block_1_1_7(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
240  CASE (4)
241  CALL block_1_1_7(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
242  CASE (5)
243  CALL block_1_1_7(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
244  CASE (6)
245  CALL block_1_1_7(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
246  CASE (7)
247  CALL block_1_1_7(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
248  CASE (9)
249  CALL block_1_1_7(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
250  CASE (10)
251  CALL block_1_1_7(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
252  CASE (11)
253  CALL block_1_1_7(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
254  CASE (15)
255  CALL block_1_1_7(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
256  CASE DEFAULT
257  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
258  END SELECT
259  CASE (9)
260  SELECT CASE (md_max)
261  CASE (1)
262  CALL block_1_1_9_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
263  CASE (2)
264  CALL block_1_1_9_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
265  CASE (3)
266  CALL block_1_1_9(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
267  CASE (4)
268  CALL block_1_1_9(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
269  CASE (5)
270  CALL block_1_1_9(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
271  CASE (6)
272  CALL block_1_1_9(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
273  CASE (7)
274  CALL block_1_1_9(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
275  CASE (9)
276  CALL block_1_1_9(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
277  CASE (10)
278  CALL block_1_1_9(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
279  CASE (11)
280  CALL block_1_1_9(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
281  CASE (15)
282  CALL block_1_1_9(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
283  CASE DEFAULT
284  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
285  END SELECT
286  CASE (10)
287  SELECT CASE (md_max)
288  CASE (1)
289  CALL block_1_1_10_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
290  CASE (2)
291  CALL block_1_1_10(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
292  CASE (3)
293  CALL block_1_1_10(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
294  CASE (4)
295  CALL block_1_1_10(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
296  CASE (5)
297  CALL block_1_1_10(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
298  CASE (6)
299  CALL block_1_1_10(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
300  CASE (7)
301  CALL block_1_1_10(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
302  CASE (9)
303  CALL block_1_1_10(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
304  CASE (10)
305  CALL block_1_1_10(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
306  CASE (11)
307  CALL block_1_1_10(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
308  CASE (15)
309  CALL block_1_1_10(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
310  CASE DEFAULT
311  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
312  END SELECT
313  CASE (11)
314  SELECT CASE (md_max)
315  CASE (1)
316  CALL block_1_1_11_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
317  CASE (2)
318  CALL block_1_1_11(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
319  CASE (3)
320  CALL block_1_1_11(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
321  CASE (4)
322  CALL block_1_1_11(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
323  CASE (5)
324  CALL block_1_1_11(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
325  CASE (6)
326  CALL block_1_1_11(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
327  CASE (7)
328  CALL block_1_1_11(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
329  CASE (9)
330  CALL block_1_1_11(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
331  CASE (10)
332  CALL block_1_1_11(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
333  CASE (11)
334  CALL block_1_1_11(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
335  CASE (15)
336  CALL block_1_1_11(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
337  CASE DEFAULT
338  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
339  END SELECT
340  CASE (15)
341  SELECT CASE (md_max)
342  CASE (1)
343  CALL block_1_1_15_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
344  CASE (2)
345  CALL block_1_1_15(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
346  CASE (3)
347  CALL block_1_1_15(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
348  CASE (4)
349  CALL block_1_1_15(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
350  CASE (5)
351  CALL block_1_1_15(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
352  CASE (6)
353  CALL block_1_1_15(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
354  CASE (7)
355  CALL block_1_1_15(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
356  CASE (9)
357  CALL block_1_1_15(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
358  CASE (10)
359  CALL block_1_1_15(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
360  CASE (11)
361  CALL block_1_1_15(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
362  CASE (15)
363  CALL block_1_1_15(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
364  CASE DEFAULT
365  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
366  END SELECT
367  CASE DEFAULT
368  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
369  END SELECT
370  CASE (2)
371  SELECT CASE (mc_max)
372  CASE (1)
373  SELECT CASE (md_max)
374  CASE (1)
375  CALL block_1_2_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
376  CASE (2)
377  CALL block_1_2_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
378  CASE (3)
379  CALL block_1_2_1_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
380  CASE (4)
381  CALL block_1_2_1_4(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
382  CASE (5)
383  CALL block_1_2_1_5(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
384  CASE (6)
385  CALL block_1_2_1_6(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
386  CASE (7)
387  CALL block_1_2_1_7(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
388  CASE (9)
389  CALL block_1_2_1_9(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
390  CASE (10)
391  CALL block_1_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
392  CASE (11)
393  CALL block_1_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
394  CASE (15)
395  CALL block_1_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
396  CASE DEFAULT
397  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
398  END SELECT
399  CASE (2)
400  SELECT CASE (md_max)
401  CASE (1)
402  CALL block_1_2_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
403  CASE (2)
404  CALL block_1_2_2_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
405  CASE (3)
406  CALL block_1_2_2_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
407  CASE (4)
408  CALL block_1_2_2_4(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
409  CASE (5)
410  CALL block_1_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
411  CASE (6)
412  CALL block_1_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
413  CASE (7)
414  CALL block_1_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
415  CASE (9)
416  CALL block_1_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
417  CASE (10)
418  CALL block_1_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
419  CASE (11)
420  CALL block_1_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
421  CASE (15)
422  CALL block_1_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
423  CASE DEFAULT
424  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
425  END SELECT
426  CASE (3)
427  SELECT CASE (md_max)
428  CASE (1)
429  CALL block_1_2_3_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
430  CASE (2)
431  CALL block_1_2_3_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
432  CASE (3)
433  CALL block_1_2_3_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
434  CASE (4)
435  CALL block_1_2_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
436  CASE (5)
437  CALL block_1_2_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
438  CASE (6)
439  CALL block_1_2_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
440  CASE (7)
441  CALL block_1_2_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
442  CASE (9)
443  CALL block_1_2_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
444  CASE (10)
445  CALL block_1_2_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
446  CASE (11)
447  CALL block_1_2_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
448  CASE (15)
449  CALL block_1_2_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
450  CASE DEFAULT
451  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
452  END SELECT
453  CASE (4)
454  SELECT CASE (md_max)
455  CASE (1)
456  CALL block_1_2_4_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
457  CASE (2)
458  CALL block_1_2_4_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
459  CASE (3)
460  CALL block_1_2_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
461  CASE (4)
462  CALL block_1_2_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
463  CASE (5)
464  CALL block_1_2_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
465  CASE (6)
466  CALL block_1_2_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
467  CASE (7)
468  CALL block_1_2_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
469  CASE (9)
470  CALL block_1_2_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
471  CASE (10)
472  CALL block_1_2_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
473  CASE (11)
474  CALL block_1_2_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
475  CASE (15)
476  CALL block_1_2_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
477  CASE DEFAULT
478  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
479  END SELECT
480  CASE (5)
481  SELECT CASE (md_max)
482  CASE (1)
483  CALL block_1_2_5_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
484  CASE (2)
485  CALL block_1_2_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
486  CASE (3)
487  CALL block_1_2_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
488  CASE (4)
489  CALL block_1_2_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
490  CASE (5)
491  CALL block_1_2_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
492  CASE (6)
493  CALL block_1_2_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
494  CASE (7)
495  CALL block_1_2_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
496  CASE (9)
497  CALL block_1_2_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
498  CASE (10)
499  CALL block_1_2_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
500  CASE (11)
501  CALL block_1_2_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
502  CASE (15)
503  CALL block_1_2_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
504  CASE DEFAULT
505  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
506  END SELECT
507  CASE (6)
508  SELECT CASE (md_max)
509  CASE (1)
510  CALL block_1_2_6_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
511  CASE (2)
512  CALL block_1_2_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
513  CASE (3)
514  CALL block_1_2_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
515  CASE (4)
516  CALL block_1_2_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
517  CASE (5)
518  CALL block_1_2_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
519  CASE (6)
520  CALL block_1_2_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
521  CASE (7)
522  CALL block_1_2_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
523  CASE (9)
524  CALL block_1_2_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
525  CASE (10)
526  CALL block_1_2_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
527  CASE (11)
528  CALL block_1_2_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
529  CASE (15)
530  CALL block_1_2_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
531  CASE DEFAULT
532  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
533  END SELECT
534  CASE (7)
535  SELECT CASE (md_max)
536  CASE (1)
537  CALL block_1_2_7_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
538  CASE (2)
539  CALL block_1_2_7(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
540  CASE (3)
541  CALL block_1_2_7(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
542  CASE (4)
543  CALL block_1_2_7(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
544  CASE (5)
545  CALL block_1_2_7(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
546  CASE (6)
547  CALL block_1_2_7(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
548  CASE (7)
549  CALL block_1_2_7(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
550  CASE (9)
551  CALL block_1_2_7(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
552  CASE (10)
553  CALL block_1_2_7(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
554  CASE (11)
555  CALL block_1_2_7(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
556  CASE (15)
557  CALL block_1_2_7(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
558  CASE DEFAULT
559  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
560  END SELECT
561  CASE (9)
562  SELECT CASE (md_max)
563  CASE (1)
564  CALL block_1_2_9_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
565  CASE (2)
566  CALL block_1_2_9(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
567  CASE (3)
568  CALL block_1_2_9(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
569  CASE (4)
570  CALL block_1_2_9(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
571  CASE (5)
572  CALL block_1_2_9(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
573  CASE (6)
574  CALL block_1_2_9(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
575  CASE (7)
576  CALL block_1_2_9(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
577  CASE (9)
578  CALL block_1_2_9(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
579  CASE (10)
580  CALL block_1_2_9(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
581  CASE (11)
582  CALL block_1_2_9(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
583  CASE (15)
584  CALL block_1_2_9(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
585  CASE DEFAULT
586  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
587  END SELECT
588  CASE (10)
589  CALL block_1_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
590  CASE (11)
591  CALL block_1_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
592  CASE (15)
593  CALL block_1_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
594  CASE DEFAULT
595  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
596  END SELECT
597  CASE (3)
598  SELECT CASE (mc_max)
599  CASE (1)
600  SELECT CASE (md_max)
601  CASE (1)
602  CALL block_1_3_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
603  CASE (2)
604  CALL block_1_3_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
605  CASE (3)
606  CALL block_1_3_1_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
607  CASE (4)
608  CALL block_1_3_1_4(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
609  CASE (5)
610  CALL block_1_3_1_5(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
611  CASE (6)
612  CALL block_1_3_1_6(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
613  CASE (7)
614  CALL block_1_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
615  CASE (9)
616  CALL block_1_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
617  CASE (10)
618  CALL block_1_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
619  CASE (11)
620  CALL block_1_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
621  CASE (15)
622  CALL block_1_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
623  CASE DEFAULT
624  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
625  END SELECT
626  CASE (2)
627  SELECT CASE (md_max)
628  CASE (1)
629  CALL block_1_3_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
630  CASE (2)
631  CALL block_1_3_2_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
632  CASE (3)
633  CALL block_1_3_2_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
634  CASE (4)
635  CALL block_1_3_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
636  CASE (5)
637  CALL block_1_3_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
638  CASE (6)
639  CALL block_1_3_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
640  CASE (7)
641  CALL block_1_3_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
642  CASE (9)
643  CALL block_1_3_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
644  CASE (10)
645  CALL block_1_3_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
646  CASE (11)
647  CALL block_1_3_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
648  CASE (15)
649  CALL block_1_3_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
650  CASE DEFAULT
651  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
652  END SELECT
653  CASE (3)
654  SELECT CASE (md_max)
655  CASE (1)
656  CALL block_1_3_3_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
657  CASE (2)
658  CALL block_1_3_3_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
659  CASE (3)
660  CALL block_1_3_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
661  CASE (4)
662  CALL block_1_3_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
663  CASE (5)
664  CALL block_1_3_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
665  CASE (6)
666  CALL block_1_3_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
667  CASE (7)
668  CALL block_1_3_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
669  CASE (9)
670  CALL block_1_3_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
671  CASE (10)
672  CALL block_1_3_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
673  CASE (11)
674  CALL block_1_3_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
675  CASE (15)
676  CALL block_1_3_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
677  CASE DEFAULT
678  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
679  END SELECT
680  CASE (4)
681  SELECT CASE (md_max)
682  CASE (1)
683  CALL block_1_3_4_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
684  CASE (2)
685  CALL block_1_3_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
686  CASE (3)
687  CALL block_1_3_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
688  CASE (4)
689  CALL block_1_3_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
690  CASE (5)
691  CALL block_1_3_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
692  CASE (6)
693  CALL block_1_3_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
694  CASE (7)
695  CALL block_1_3_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
696  CASE (9)
697  CALL block_1_3_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
698  CASE (10)
699  CALL block_1_3_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
700  CASE (11)
701  CALL block_1_3_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
702  CASE (15)
703  CALL block_1_3_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
704  CASE DEFAULT
705  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
706  END SELECT
707  CASE (5)
708  SELECT CASE (md_max)
709  CASE (1)
710  CALL block_1_3_5_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
711  CASE (2)
712  CALL block_1_3_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
713  CASE (3)
714  CALL block_1_3_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
715  CASE (4)
716  CALL block_1_3_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
717  CASE (5)
718  CALL block_1_3_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
719  CASE (6)
720  CALL block_1_3_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
721  CASE (7)
722  CALL block_1_3_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
723  CASE (9)
724  CALL block_1_3_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
725  CASE (10)
726  CALL block_1_3_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
727  CASE (11)
728  CALL block_1_3_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
729  CASE (15)
730  CALL block_1_3_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
731  CASE DEFAULT
732  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
733  END SELECT
734  CASE (6)
735  SELECT CASE (md_max)
736  CASE (1)
737  CALL block_1_3_6_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
738  CASE (2)
739  CALL block_1_3_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
740  CASE (3)
741  CALL block_1_3_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
742  CASE (4)
743  CALL block_1_3_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
744  CASE (5)
745  CALL block_1_3_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
746  CASE (6)
747  CALL block_1_3_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
748  CASE (7)
749  CALL block_1_3_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
750  CASE (9)
751  CALL block_1_3_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
752  CASE (10)
753  CALL block_1_3_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
754  CASE (11)
755  CALL block_1_3_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
756  CASE (15)
757  CALL block_1_3_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
758  CASE DEFAULT
759  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
760  END SELECT
761  CASE (7)
762  CALL block_1_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
763  CASE (9)
764  CALL block_1_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
765  CASE (10)
766  CALL block_1_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
767  CASE (11)
768  CALL block_1_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
769  CASE (15)
770  CALL block_1_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
771  CASE DEFAULT
772  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
773  END SELECT
774  CASE (4)
775  SELECT CASE (mc_max)
776  CASE (1)
777  SELECT CASE (md_max)
778  CASE (1)
779  CALL block_1_4_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
780  CASE (2)
781  CALL block_1_4_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
782  CASE (3)
783  CALL block_1_4_1_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
784  CASE (4)
785  CALL block_1_4_1_4(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
786  CASE (5)
787  CALL block_1_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
788  CASE (6)
789  CALL block_1_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
790  CASE (7)
791  CALL block_1_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
792  CASE (9)
793  CALL block_1_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
794  CASE (10)
795  CALL block_1_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
796  CASE (11)
797  CALL block_1_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
798  CASE (15)
799  CALL block_1_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
800  CASE DEFAULT
801  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
802  END SELECT
803  CASE (2)
804  SELECT CASE (md_max)
805  CASE (1)
806  CALL block_1_4_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
807  CASE (2)
808  CALL block_1_4_2_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
809  CASE (3)
810  CALL block_1_4_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
811  CASE (4)
812  CALL block_1_4_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
813  CASE (5)
814  CALL block_1_4_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
815  CASE (6)
816  CALL block_1_4_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
817  CASE (7)
818  CALL block_1_4_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
819  CASE (9)
820  CALL block_1_4_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
821  CASE (10)
822  CALL block_1_4_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
823  CASE (11)
824  CALL block_1_4_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
825  CASE (15)
826  CALL block_1_4_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
827  CASE DEFAULT
828  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
829  END SELECT
830  CASE (3)
831  SELECT CASE (md_max)
832  CASE (1)
833  CALL block_1_4_3_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
834  CASE (2)
835  CALL block_1_4_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
836  CASE (3)
837  CALL block_1_4_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
838  CASE (4)
839  CALL block_1_4_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
840  CASE (5)
841  CALL block_1_4_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
842  CASE (6)
843  CALL block_1_4_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
844  CASE (7)
845  CALL block_1_4_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
846  CASE (9)
847  CALL block_1_4_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
848  CASE (10)
849  CALL block_1_4_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
850  CASE (11)
851  CALL block_1_4_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
852  CASE (15)
853  CALL block_1_4_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
854  CASE DEFAULT
855  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
856  END SELECT
857  CASE (4)
858  SELECT CASE (md_max)
859  CASE (1)
860  CALL block_1_4_4_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
861  CASE (2)
862  CALL block_1_4_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
863  CASE (3)
864  CALL block_1_4_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
865  CASE (4)
866  CALL block_1_4_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
867  CASE (5)
868  CALL block_1_4_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
869  CASE (6)
870  CALL block_1_4_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
871  CASE (7)
872  CALL block_1_4_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
873  CASE (9)
874  CALL block_1_4_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
875  CASE (10)
876  CALL block_1_4_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
877  CASE (11)
878  CALL block_1_4_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
879  CASE (15)
880  CALL block_1_4_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
881  CASE DEFAULT
882  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
883  END SELECT
884  CASE (5)
885  CALL block_1_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
886  CASE (6)
887  CALL block_1_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
888  CASE (7)
889  CALL block_1_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
890  CASE (9)
891  CALL block_1_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
892  CASE (10)
893  CALL block_1_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
894  CASE (11)
895  CALL block_1_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
896  CASE (15)
897  CALL block_1_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
898  CASE DEFAULT
899  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
900  END SELECT
901  CASE (5)
902  SELECT CASE (mc_max)
903  CASE (1)
904  SELECT CASE (md_max)
905  CASE (1)
906  CALL block_1_5_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
907  CASE (2)
908  CALL block_1_5_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
909  CASE (3)
910  CALL block_1_5_1_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
911  CASE (4)
912  CALL block_1_5_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
913  CASE (5)
914  CALL block_1_5_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
915  CASE (6)
916  CALL block_1_5_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
917  CASE (7)
918  CALL block_1_5_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
919  CASE (9)
920  CALL block_1_5_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
921  CASE (10)
922  CALL block_1_5_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
923  CASE (11)
924  CALL block_1_5_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
925  CASE (15)
926  CALL block_1_5_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
927  CASE DEFAULT
928  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
929  END SELECT
930  CASE (2)
931  SELECT CASE (md_max)
932  CASE (1)
933  CALL block_1_5_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
934  CASE (2)
935  CALL block_1_5_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
936  CASE (3)
937  CALL block_1_5_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
938  CASE (4)
939  CALL block_1_5_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
940  CASE (5)
941  CALL block_1_5_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
942  CASE (6)
943  CALL block_1_5_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
944  CASE (7)
945  CALL block_1_5_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
946  CASE (9)
947  CALL block_1_5_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
948  CASE (10)
949  CALL block_1_5_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
950  CASE (11)
951  CALL block_1_5_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
952  CASE (15)
953  CALL block_1_5_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
954  CASE DEFAULT
955  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
956  END SELECT
957  CASE (3)
958  SELECT CASE (md_max)
959  CASE (1)
960  CALL block_1_5_3_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
961  CASE (2)
962  CALL block_1_5_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
963  CASE (3)
964  CALL block_1_5_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
965  CASE (4)
966  CALL block_1_5_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
967  CASE (5)
968  CALL block_1_5_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
969  CASE (6)
970  CALL block_1_5_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
971  CASE (7)
972  CALL block_1_5_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
973  CASE (9)
974  CALL block_1_5_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
975  CASE (10)
976  CALL block_1_5_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
977  CASE (11)
978  CALL block_1_5_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
979  CASE (15)
980  CALL block_1_5_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
981  CASE DEFAULT
982  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
983  END SELECT
984  CASE (4)
985  CALL block_1_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
986  CASE (5)
987  CALL block_1_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
988  CASE (6)
989  CALL block_1_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
990  CASE (7)
991  CALL block_1_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
992  CASE (9)
993  CALL block_1_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
994  CASE (10)
995  CALL block_1_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
996  CASE (11)
997  CALL block_1_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
998  CASE (15)
999  CALL block_1_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1000  CASE DEFAULT
1001  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1002  END SELECT
1003  CASE (6)
1004  SELECT CASE (mc_max)
1005  CASE (1)
1006  SELECT CASE (md_max)
1007  CASE (1)
1008  CALL block_1_6_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1009  CASE (2)
1010  CALL block_1_6_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1011  CASE (3)
1012  CALL block_1_6_1_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1013  CASE (4)
1014  CALL block_1_6_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1015  CASE (5)
1016  CALL block_1_6_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1017  CASE (6)
1018  CALL block_1_6_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1019  CASE (7)
1020  CALL block_1_6_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1021  CASE (9)
1022  CALL block_1_6_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1023  CASE (10)
1024  CALL block_1_6_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1025  CASE (11)
1026  CALL block_1_6_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1027  CASE (15)
1028  CALL block_1_6_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1029  CASE DEFAULT
1030  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1031  END SELECT
1032  CASE (2)
1033  SELECT CASE (md_max)
1034  CASE (1)
1035  CALL block_1_6_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1036  CASE (2)
1037  CALL block_1_6_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1038  CASE (3)
1039  CALL block_1_6_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1040  CASE (4)
1041  CALL block_1_6_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1042  CASE (5)
1043  CALL block_1_6_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1044  CASE (6)
1045  CALL block_1_6_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1046  CASE (7)
1047  CALL block_1_6_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1048  CASE (9)
1049  CALL block_1_6_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1050  CASE (10)
1051  CALL block_1_6_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1052  CASE (11)
1053  CALL block_1_6_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1054  CASE (15)
1055  CALL block_1_6_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1056  CASE DEFAULT
1057  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1058  END SELECT
1059  CASE (3)
1060  SELECT CASE (md_max)
1061  CASE (1)
1062  CALL block_1_6_3_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1063  CASE (2)
1064  CALL block_1_6_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1065  CASE (3)
1066  CALL block_1_6_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1067  CASE (4)
1068  CALL block_1_6_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1069  CASE (5)
1070  CALL block_1_6_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1071  CASE (6)
1072  CALL block_1_6_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1073  CASE (7)
1074  CALL block_1_6_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1075  CASE (9)
1076  CALL block_1_6_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1077  CASE (10)
1078  CALL block_1_6_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1079  CASE (11)
1080  CALL block_1_6_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1081  CASE (15)
1082  CALL block_1_6_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1083  CASE DEFAULT
1084  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1085  END SELECT
1086  CASE (4)
1087  CALL block_1_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1088  CASE (5)
1089  CALL block_1_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1090  CASE (6)
1091  CALL block_1_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1092  CASE (7)
1093  CALL block_1_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1094  CASE (9)
1095  CALL block_1_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1096  CASE (10)
1097  CALL block_1_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1098  CASE (11)
1099  CALL block_1_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1100  CASE (15)
1101  CALL block_1_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1102  CASE DEFAULT
1103  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1104  END SELECT
1105  CASE (7)
1106  SELECT CASE (mc_max)
1107  CASE (1)
1108  SELECT CASE (md_max)
1109  CASE (1)
1110  CALL block_1_7_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1111  CASE (2)
1112  CALL block_1_7_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1113  CASE (3)
1114  CALL block_1_7_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1115  CASE (4)
1116  CALL block_1_7_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1117  CASE (5)
1118  CALL block_1_7_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1119  CASE (6)
1120  CALL block_1_7_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1121  CASE (7)
1122  CALL block_1_7_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1123  CASE (9)
1124  CALL block_1_7_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1125  CASE (10)
1126  CALL block_1_7_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1127  CASE (11)
1128  CALL block_1_7_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1129  CASE (15)
1130  CALL block_1_7_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1131  CASE DEFAULT
1132  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1133  END SELECT
1134  CASE (2)
1135  SELECT CASE (md_max)
1136  CASE (1)
1137  CALL block_1_7_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1138  CASE (2)
1139  CALL block_1_7_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1140  CASE (3)
1141  CALL block_1_7_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1142  CASE (4)
1143  CALL block_1_7_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1144  CASE (5)
1145  CALL block_1_7_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1146  CASE (6)
1147  CALL block_1_7_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1148  CASE (7)
1149  CALL block_1_7_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1150  CASE (9)
1151  CALL block_1_7_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1152  CASE (10)
1153  CALL block_1_7_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1154  CASE (11)
1155  CALL block_1_7_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1156  CASE (15)
1157  CALL block_1_7_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1158  CASE DEFAULT
1159  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1160  END SELECT
1161  CASE (3)
1162  CALL block_1_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1163  CASE (4)
1164  CALL block_1_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1165  CASE (5)
1166  CALL block_1_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1167  CASE (6)
1168  CALL block_1_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1169  CASE (7)
1170  CALL block_1_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1171  CASE (9)
1172  CALL block_1_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1173  CASE (10)
1174  CALL block_1_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1175  CASE (11)
1176  CALL block_1_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1177  CASE (15)
1178  CALL block_1_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1179  CASE DEFAULT
1180  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1181  END SELECT
1182  CASE (9)
1183  SELECT CASE (mc_max)
1184  CASE (1)
1185  SELECT CASE (md_max)
1186  CASE (1)
1187  CALL block_1_9_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1188  CASE (2)
1189  CALL block_1_9_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1190  CASE (3)
1191  CALL block_1_9_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1192  CASE (4)
1193  CALL block_1_9_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1194  CASE (5)
1195  CALL block_1_9_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1196  CASE (6)
1197  CALL block_1_9_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1198  CASE (7)
1199  CALL block_1_9_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1200  CASE (9)
1201  CALL block_1_9_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1202  CASE (10)
1203  CALL block_1_9_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1204  CASE (11)
1205  CALL block_1_9_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1206  CASE (15)
1207  CALL block_1_9_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1208  CASE DEFAULT
1209  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1210  END SELECT
1211  CASE (2)
1212  SELECT CASE (md_max)
1213  CASE (1)
1214  CALL block_1_9_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1215  CASE (2)
1216  CALL block_1_9_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1217  CASE (3)
1218  CALL block_1_9_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1219  CASE (4)
1220  CALL block_1_9_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1221  CASE (5)
1222  CALL block_1_9_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1223  CASE (6)
1224  CALL block_1_9_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1225  CASE (7)
1226  CALL block_1_9_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1227  CASE (9)
1228  CALL block_1_9_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1229  CASE (10)
1230  CALL block_1_9_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1231  CASE (11)
1232  CALL block_1_9_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1233  CASE (15)
1234  CALL block_1_9_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1235  CASE DEFAULT
1236  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1237  END SELECT
1238  CASE (3)
1239  CALL block_1_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1240  CASE (4)
1241  CALL block_1_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1242  CASE (5)
1243  CALL block_1_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1244  CASE (6)
1245  CALL block_1_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1246  CASE (7)
1247  CALL block_1_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1248  CASE (9)
1249  CALL block_1_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1250  CASE (10)
1251  CALL block_1_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1252  CASE (11)
1253  CALL block_1_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1254  CASE (15)
1255  CALL block_1_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1256  CASE DEFAULT
1257  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1258  END SELECT
1259  CASE (10)
1260  SELECT CASE (mc_max)
1261  CASE (1)
1262  SELECT CASE (md_max)
1263  CASE (1)
1264  CALL block_1_10_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1265  CASE (2)
1266  CALL block_1_10_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1267  CASE (3)
1268  CALL block_1_10_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1269  CASE (4)
1270  CALL block_1_10_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1271  CASE (5)
1272  CALL block_1_10_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1273  CASE (6)
1274  CALL block_1_10_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1275  CASE (7)
1276  CALL block_1_10_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1277  CASE (9)
1278  CALL block_1_10_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1279  CASE (10)
1280  CALL block_1_10_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1281  CASE (11)
1282  CALL block_1_10_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1283  CASE (15)
1284  CALL block_1_10_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1285  CASE DEFAULT
1286  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1287  END SELECT
1288  CASE (2)
1289  CALL block_1_10(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1290  CASE (3)
1291  CALL block_1_10(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1292  CASE (4)
1293  CALL block_1_10(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1294  CASE (5)
1295  CALL block_1_10(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1296  CASE (6)
1297  CALL block_1_10(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1298  CASE (7)
1299  CALL block_1_10(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1300  CASE (9)
1301  CALL block_1_10(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1302  CASE (10)
1303  CALL block_1_10(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1304  CASE (11)
1305  CALL block_1_10(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1306  CASE (15)
1307  CALL block_1_10(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1308  CASE DEFAULT
1309  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1310  END SELECT
1311  CASE (11)
1312  SELECT CASE (mc_max)
1313  CASE (1)
1314  SELECT CASE (md_max)
1315  CASE (1)
1316  CALL block_1_11_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1317  CASE (2)
1318  CALL block_1_11_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1319  CASE (3)
1320  CALL block_1_11_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1321  CASE (4)
1322  CALL block_1_11_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1323  CASE (5)
1324  CALL block_1_11_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1325  CASE (6)
1326  CALL block_1_11_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1327  CASE (7)
1328  CALL block_1_11_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1329  CASE (9)
1330  CALL block_1_11_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1331  CASE (10)
1332  CALL block_1_11_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1333  CASE (11)
1334  CALL block_1_11_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1335  CASE (15)
1336  CALL block_1_11_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1337  CASE DEFAULT
1338  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1339  END SELECT
1340  CASE (2)
1341  CALL block_1_11(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1342  CASE (3)
1343  CALL block_1_11(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1344  CASE (4)
1345  CALL block_1_11(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1346  CASE (5)
1347  CALL block_1_11(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1348  CASE (6)
1349  CALL block_1_11(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1350  CASE (7)
1351  CALL block_1_11(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1352  CASE (9)
1353  CALL block_1_11(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1354  CASE (10)
1355  CALL block_1_11(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1356  CASE (11)
1357  CALL block_1_11(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1358  CASE (15)
1359  CALL block_1_11(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1360  CASE DEFAULT
1361  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1362  END SELECT
1363  CASE (15)
1364  SELECT CASE (mc_max)
1365  CASE (1)
1366  SELECT CASE (md_max)
1367  CASE (1)
1368  CALL block_1_15_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1369  CASE (2)
1370  CALL block_1_15_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1371  CASE (3)
1372  CALL block_1_15_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1373  CASE (4)
1374  CALL block_1_15_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1375  CASE (5)
1376  CALL block_1_15_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1377  CASE (6)
1378  CALL block_1_15_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1379  CASE (7)
1380  CALL block_1_15_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1381  CASE (9)
1382  CALL block_1_15_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1383  CASE (10)
1384  CALL block_1_15_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1385  CASE (11)
1386  CALL block_1_15_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1387  CASE (15)
1388  CALL block_1_15_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1389  CASE DEFAULT
1390  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1391  END SELECT
1392  CASE (2)
1393  CALL block_1_15(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1394  CASE (3)
1395  CALL block_1_15(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1396  CASE (4)
1397  CALL block_1_15(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1398  CASE (5)
1399  CALL block_1_15(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1400  CASE (6)
1401  CALL block_1_15(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1402  CASE (7)
1403  CALL block_1_15(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1404  CASE (9)
1405  CALL block_1_15(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1406  CASE (10)
1407  CALL block_1_15(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1408  CASE (11)
1409  CALL block_1_15(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1410  CASE (15)
1411  CALL block_1_15(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1412  CASE DEFAULT
1413  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1414  END SELECT
1415  CASE DEFAULT
1416  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1417  END SELECT
1418  CASE (2)
1419  SELECT CASE (mb_max)
1420  CASE (1)
1421  SELECT CASE (mc_max)
1422  CASE (1)
1423  SELECT CASE (md_max)
1424  CASE (1)
1425  CALL block_2_1_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1426  CASE (2)
1427  CALL block_2_1_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1428  CASE (3)
1429  CALL block_2_1_1_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1430  CASE (4)
1431  CALL block_2_1_1_4(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1432  CASE (5)
1433  CALL block_2_1_1_5(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1434  CASE (6)
1435  CALL block_2_1_1_6(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1436  CASE (7)
1437  CALL block_2_1_1_7(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1438  CASE (9)
1439  CALL block_2_1_1_9(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1440  CASE (10)
1441  CALL block_2_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1442  CASE (11)
1443  CALL block_2_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1444  CASE (15)
1445  CALL block_2_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1446  CASE DEFAULT
1447  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1448  END SELECT
1449  CASE (2)
1450  SELECT CASE (md_max)
1451  CASE (1)
1452  CALL block_2_1_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1453  CASE (2)
1454  CALL block_2_1_2_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1455  CASE (3)
1456  CALL block_2_1_2_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1457  CASE (4)
1458  CALL block_2_1_2_4(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1459  CASE (5)
1460  CALL block_2_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1461  CASE (6)
1462  CALL block_2_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1463  CASE (7)
1464  CALL block_2_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1465  CASE (9)
1466  CALL block_2_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1467  CASE (10)
1468  CALL block_2_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1469  CASE (11)
1470  CALL block_2_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1471  CASE (15)
1472  CALL block_2_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1473  CASE DEFAULT
1474  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1475  END SELECT
1476  CASE (3)
1477  SELECT CASE (md_max)
1478  CASE (1)
1479  CALL block_2_1_3_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1480  CASE (2)
1481  CALL block_2_1_3_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1482  CASE (3)
1483  CALL block_2_1_3_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1484  CASE (4)
1485  CALL block_2_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1486  CASE (5)
1487  CALL block_2_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1488  CASE (6)
1489  CALL block_2_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1490  CASE (7)
1491  CALL block_2_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1492  CASE (9)
1493  CALL block_2_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1494  CASE (10)
1495  CALL block_2_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1496  CASE (11)
1497  CALL block_2_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1498  CASE (15)
1499  CALL block_2_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1500  CASE DEFAULT
1501  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1502  END SELECT
1503  CASE (4)
1504  SELECT CASE (md_max)
1505  CASE (1)
1506  CALL block_2_1_4_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1507  CASE (2)
1508  CALL block_2_1_4_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1509  CASE (3)
1510  CALL block_2_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1511  CASE (4)
1512  CALL block_2_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1513  CASE (5)
1514  CALL block_2_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1515  CASE (6)
1516  CALL block_2_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1517  CASE (7)
1518  CALL block_2_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1519  CASE (9)
1520  CALL block_2_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1521  CASE (10)
1522  CALL block_2_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1523  CASE (11)
1524  CALL block_2_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1525  CASE (15)
1526  CALL block_2_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1527  CASE DEFAULT
1528  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1529  END SELECT
1530  CASE (5)
1531  SELECT CASE (md_max)
1532  CASE (1)
1533  CALL block_2_1_5_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1534  CASE (2)
1535  CALL block_2_1_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1536  CASE (3)
1537  CALL block_2_1_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1538  CASE (4)
1539  CALL block_2_1_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1540  CASE (5)
1541  CALL block_2_1_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1542  CASE (6)
1543  CALL block_2_1_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1544  CASE (7)
1545  CALL block_2_1_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1546  CASE (9)
1547  CALL block_2_1_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1548  CASE (10)
1549  CALL block_2_1_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1550  CASE (11)
1551  CALL block_2_1_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1552  CASE (15)
1553  CALL block_2_1_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1554  CASE DEFAULT
1555  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1556  END SELECT
1557  CASE (6)
1558  SELECT CASE (md_max)
1559  CASE (1)
1560  CALL block_2_1_6_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1561  CASE (2)
1562  CALL block_2_1_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1563  CASE (3)
1564  CALL block_2_1_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1565  CASE (4)
1566  CALL block_2_1_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1567  CASE (5)
1568  CALL block_2_1_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1569  CASE (6)
1570  CALL block_2_1_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1571  CASE (7)
1572  CALL block_2_1_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1573  CASE (9)
1574  CALL block_2_1_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1575  CASE (10)
1576  CALL block_2_1_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1577  CASE (11)
1578  CALL block_2_1_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1579  CASE (15)
1580  CALL block_2_1_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1581  CASE DEFAULT
1582  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1583  END SELECT
1584  CASE (7)
1585  SELECT CASE (md_max)
1586  CASE (1)
1587  CALL block_2_1_7_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1588  CASE (2)
1589  CALL block_2_1_7(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1590  CASE (3)
1591  CALL block_2_1_7(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1592  CASE (4)
1593  CALL block_2_1_7(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1594  CASE (5)
1595  CALL block_2_1_7(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1596  CASE (6)
1597  CALL block_2_1_7(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1598  CASE (7)
1599  CALL block_2_1_7(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1600  CASE (9)
1601  CALL block_2_1_7(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1602  CASE (10)
1603  CALL block_2_1_7(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1604  CASE (11)
1605  CALL block_2_1_7(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1606  CASE (15)
1607  CALL block_2_1_7(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1608  CASE DEFAULT
1609  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1610  END SELECT
1611  CASE (9)
1612  SELECT CASE (md_max)
1613  CASE (1)
1614  CALL block_2_1_9_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1615  CASE (2)
1616  CALL block_2_1_9(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1617  CASE (3)
1618  CALL block_2_1_9(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1619  CASE (4)
1620  CALL block_2_1_9(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1621  CASE (5)
1622  CALL block_2_1_9(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1623  CASE (6)
1624  CALL block_2_1_9(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1625  CASE (7)
1626  CALL block_2_1_9(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1627  CASE (9)
1628  CALL block_2_1_9(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1629  CASE (10)
1630  CALL block_2_1_9(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1631  CASE (11)
1632  CALL block_2_1_9(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1633  CASE (15)
1634  CALL block_2_1_9(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1635  CASE DEFAULT
1636  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1637  END SELECT
1638  CASE (10)
1639  CALL block_2_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1640  CASE (11)
1641  CALL block_2_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1642  CASE (15)
1643  CALL block_2_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1644  CASE DEFAULT
1645  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1646  END SELECT
1647  CASE (2)
1648  SELECT CASE (mc_max)
1649  CASE (1)
1650  SELECT CASE (md_max)
1651  CASE (1)
1652  CALL block_2_2_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1653  CASE (2)
1654  CALL block_2_2_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1655  CASE (3)
1656  CALL block_2_2_1_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1657  CASE (4)
1658  CALL block_2_2_1_4(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1659  CASE (5)
1660  CALL block_2_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1661  CASE (6)
1662  CALL block_2_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1663  CASE (7)
1664  CALL block_2_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1665  CASE (9)
1666  CALL block_2_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1667  CASE (10)
1668  CALL block_2_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1669  CASE (11)
1670  CALL block_2_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1671  CASE (15)
1672  CALL block_2_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1673  CASE DEFAULT
1674  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1675  END SELECT
1676  CASE (2)
1677  SELECT CASE (md_max)
1678  CASE (1)
1679  CALL block_2_2_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1680  CASE (2)
1681  CALL block_2_2_2_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1682  CASE (3)
1683  CALL block_2_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1684  CASE (4)
1685  CALL block_2_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1686  CASE (5)
1687  CALL block_2_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1688  CASE (6)
1689  CALL block_2_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1690  CASE (7)
1691  CALL block_2_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1692  CASE (9)
1693  CALL block_2_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1694  CASE (10)
1695  CALL block_2_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1696  CASE (11)
1697  CALL block_2_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1698  CASE (15)
1699  CALL block_2_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1700  CASE DEFAULT
1701  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1702  END SELECT
1703  CASE (3)
1704  SELECT CASE (md_max)
1705  CASE (1)
1706  CALL block_2_2_3_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1707  CASE (2)
1708  CALL block_2_2_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1709  CASE (3)
1710  CALL block_2_2_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1711  CASE (4)
1712  CALL block_2_2_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1713  CASE (5)
1714  CALL block_2_2_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1715  CASE (6)
1716  CALL block_2_2_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1717  CASE (7)
1718  CALL block_2_2_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1719  CASE (9)
1720  CALL block_2_2_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1721  CASE (10)
1722  CALL block_2_2_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1723  CASE (11)
1724  CALL block_2_2_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1725  CASE (15)
1726  CALL block_2_2_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1727  CASE DEFAULT
1728  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1729  END SELECT
1730  CASE (4)
1731  SELECT CASE (md_max)
1732  CASE (1)
1733  CALL block_2_2_4_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1734  CASE (2)
1735  CALL block_2_2_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1736  CASE (3)
1737  CALL block_2_2_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1738  CASE (4)
1739  CALL block_2_2_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1740  CASE (5)
1741  CALL block_2_2_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1742  CASE (6)
1743  CALL block_2_2_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1744  CASE (7)
1745  CALL block_2_2_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1746  CASE (9)
1747  CALL block_2_2_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1748  CASE (10)
1749  CALL block_2_2_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1750  CASE (11)
1751  CALL block_2_2_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1752  CASE (15)
1753  CALL block_2_2_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1754  CASE DEFAULT
1755  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1756  END SELECT
1757  CASE (5)
1758  CALL block_2_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1759  CASE (6)
1760  CALL block_2_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1761  CASE (7)
1762  CALL block_2_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1763  CASE (9)
1764  CALL block_2_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1765  CASE (10)
1766  CALL block_2_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1767  CASE (11)
1768  CALL block_2_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1769  CASE (15)
1770  CALL block_2_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1771  CASE DEFAULT
1772  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1773  END SELECT
1774  CASE (3)
1775  SELECT CASE (mc_max)
1776  CASE (1)
1777  SELECT CASE (md_max)
1778  CASE (1)
1779  CALL block_2_3_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1780  CASE (2)
1781  CALL block_2_3_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1782  CASE (3)
1783  CALL block_2_3_1_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1784  CASE (4)
1785  CALL block_2_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1786  CASE (5)
1787  CALL block_2_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1788  CASE (6)
1789  CALL block_2_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1790  CASE (7)
1791  CALL block_2_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1792  CASE (9)
1793  CALL block_2_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1794  CASE (10)
1795  CALL block_2_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1796  CASE (11)
1797  CALL block_2_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1798  CASE (15)
1799  CALL block_2_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1800  CASE DEFAULT
1801  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1802  END SELECT
1803  CASE (2)
1804  SELECT CASE (md_max)
1805  CASE (1)
1806  CALL block_2_3_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1807  CASE (2)
1808  CALL block_2_3_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1809  CASE (3)
1810  CALL block_2_3_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1811  CASE (4)
1812  CALL block_2_3_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1813  CASE (5)
1814  CALL block_2_3_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1815  CASE (6)
1816  CALL block_2_3_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1817  CASE (7)
1818  CALL block_2_3_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1819  CASE (9)
1820  CALL block_2_3_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1821  CASE (10)
1822  CALL block_2_3_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1823  CASE (11)
1824  CALL block_2_3_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1825  CASE (15)
1826  CALL block_2_3_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1827  CASE DEFAULT
1828  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1829  END SELECT
1830  CASE (3)
1831  SELECT CASE (md_max)
1832  CASE (1)
1833  CALL block_2_3_3_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1834  CASE (2)
1835  CALL block_2_3_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1836  CASE (3)
1837  CALL block_2_3_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1838  CASE (4)
1839  CALL block_2_3_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1840  CASE (5)
1841  CALL block_2_3_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1842  CASE (6)
1843  CALL block_2_3_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1844  CASE (7)
1845  CALL block_2_3_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1846  CASE (9)
1847  CALL block_2_3_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1848  CASE (10)
1849  CALL block_2_3_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1850  CASE (11)
1851  CALL block_2_3_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1852  CASE (15)
1853  CALL block_2_3_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1854  CASE DEFAULT
1855  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1856  END SELECT
1857  CASE (4)
1858  CALL block_2_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1859  CASE (5)
1860  CALL block_2_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1861  CASE (6)
1862  CALL block_2_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1863  CASE (7)
1864  CALL block_2_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1865  CASE (9)
1866  CALL block_2_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1867  CASE (10)
1868  CALL block_2_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1869  CASE (11)
1870  CALL block_2_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1871  CASE (15)
1872  CALL block_2_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1873  CASE DEFAULT
1874  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1875  END SELECT
1876  CASE (4)
1877  SELECT CASE (mc_max)
1878  CASE (1)
1879  SELECT CASE (md_max)
1880  CASE (1)
1881  CALL block_2_4_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1882  CASE (2)
1883  CALL block_2_4_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1884  CASE (3)
1885  CALL block_2_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1886  CASE (4)
1887  CALL block_2_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1888  CASE (5)
1889  CALL block_2_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1890  CASE (6)
1891  CALL block_2_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1892  CASE (7)
1893  CALL block_2_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1894  CASE (9)
1895  CALL block_2_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1896  CASE (10)
1897  CALL block_2_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1898  CASE (11)
1899  CALL block_2_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1900  CASE (15)
1901  CALL block_2_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1902  CASE DEFAULT
1903  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1904  END SELECT
1905  CASE (2)
1906  SELECT CASE (md_max)
1907  CASE (1)
1908  CALL block_2_4_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1909  CASE (2)
1910  CALL block_2_4_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1911  CASE (3)
1912  CALL block_2_4_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1913  CASE (4)
1914  CALL block_2_4_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1915  CASE (5)
1916  CALL block_2_4_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1917  CASE (6)
1918  CALL block_2_4_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1919  CASE (7)
1920  CALL block_2_4_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1921  CASE (9)
1922  CALL block_2_4_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1923  CASE (10)
1924  CALL block_2_4_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1925  CASE (11)
1926  CALL block_2_4_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1927  CASE (15)
1928  CALL block_2_4_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1929  CASE DEFAULT
1930  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1931  END SELECT
1932  CASE (3)
1933  CALL block_2_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1934  CASE (4)
1935  CALL block_2_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1936  CASE (5)
1937  CALL block_2_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1938  CASE (6)
1939  CALL block_2_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1940  CASE (7)
1941  CALL block_2_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1942  CASE (9)
1943  CALL block_2_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1944  CASE (10)
1945  CALL block_2_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1946  CASE (11)
1947  CALL block_2_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1948  CASE (15)
1949  CALL block_2_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1950  CASE DEFAULT
1951  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1952  END SELECT
1953  CASE (5)
1954  SELECT CASE (mc_max)
1955  CASE (1)
1956  SELECT CASE (md_max)
1957  CASE (1)
1958  CALL block_2_5_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1959  CASE (2)
1960  CALL block_2_5_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1961  CASE (3)
1962  CALL block_2_5_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1963  CASE (4)
1964  CALL block_2_5_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1965  CASE (5)
1966  CALL block_2_5_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1967  CASE (6)
1968  CALL block_2_5_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1969  CASE (7)
1970  CALL block_2_5_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1971  CASE (9)
1972  CALL block_2_5_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1973  CASE (10)
1974  CALL block_2_5_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1975  CASE (11)
1976  CALL block_2_5_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1977  CASE (15)
1978  CALL block_2_5_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1979  CASE DEFAULT
1980  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1981  END SELECT
1982  CASE (2)
1983  CALL block_2_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1984  CASE (3)
1985  CALL block_2_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1986  CASE (4)
1987  CALL block_2_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1988  CASE (5)
1989  CALL block_2_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1990  CASE (6)
1991  CALL block_2_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1992  CASE (7)
1993  CALL block_2_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1994  CASE (9)
1995  CALL block_2_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1996  CASE (10)
1997  CALL block_2_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
1998  CASE (11)
1999  CALL block_2_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2000  CASE (15)
2001  CALL block_2_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2002  CASE DEFAULT
2003  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2004  END SELECT
2005  CASE (6)
2006  SELECT CASE (mc_max)
2007  CASE (1)
2008  SELECT CASE (md_max)
2009  CASE (1)
2010  CALL block_2_6_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2011  CASE (2)
2012  CALL block_2_6_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2013  CASE (3)
2014  CALL block_2_6_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2015  CASE (4)
2016  CALL block_2_6_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2017  CASE (5)
2018  CALL block_2_6_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2019  CASE (6)
2020  CALL block_2_6_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2021  CASE (7)
2022  CALL block_2_6_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2023  CASE (9)
2024  CALL block_2_6_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2025  CASE (10)
2026  CALL block_2_6_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2027  CASE (11)
2028  CALL block_2_6_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2029  CASE (15)
2030  CALL block_2_6_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2031  CASE DEFAULT
2032  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2033  END SELECT
2034  CASE (2)
2035  CALL block_2_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2036  CASE (3)
2037  CALL block_2_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2038  CASE (4)
2039  CALL block_2_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2040  CASE (5)
2041  CALL block_2_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2042  CASE (6)
2043  CALL block_2_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2044  CASE (7)
2045  CALL block_2_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2046  CASE (9)
2047  CALL block_2_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2048  CASE (10)
2049  CALL block_2_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2050  CASE (11)
2051  CALL block_2_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2052  CASE (15)
2053  CALL block_2_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2054  CASE DEFAULT
2055  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2056  END SELECT
2057  CASE (7)
2058  SELECT CASE (mc_max)
2059  CASE (1)
2060  SELECT CASE (md_max)
2061  CASE (1)
2062  CALL block_2_7_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2063  CASE (2)
2064  CALL block_2_7_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2065  CASE (3)
2066  CALL block_2_7_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2067  CASE (4)
2068  CALL block_2_7_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2069  CASE (5)
2070  CALL block_2_7_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2071  CASE (6)
2072  CALL block_2_7_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2073  CASE (7)
2074  CALL block_2_7_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2075  CASE (9)
2076  CALL block_2_7_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2077  CASE (10)
2078  CALL block_2_7_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2079  CASE (11)
2080  CALL block_2_7_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2081  CASE (15)
2082  CALL block_2_7_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2083  CASE DEFAULT
2084  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2085  END SELECT
2086  CASE (2)
2087  CALL block_2_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2088  CASE (3)
2089  CALL block_2_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2090  CASE (4)
2091  CALL block_2_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2092  CASE (5)
2093  CALL block_2_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2094  CASE (6)
2095  CALL block_2_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2096  CASE (7)
2097  CALL block_2_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2098  CASE (9)
2099  CALL block_2_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2100  CASE (10)
2101  CALL block_2_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2102  CASE (11)
2103  CALL block_2_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2104  CASE (15)
2105  CALL block_2_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2106  CASE DEFAULT
2107  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2108  END SELECT
2109  CASE (9)
2110  SELECT CASE (mc_max)
2111  CASE (1)
2112  SELECT CASE (md_max)
2113  CASE (1)
2114  CALL block_2_9_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2115  CASE (2)
2116  CALL block_2_9_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2117  CASE (3)
2118  CALL block_2_9_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2119  CASE (4)
2120  CALL block_2_9_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2121  CASE (5)
2122  CALL block_2_9_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2123  CASE (6)
2124  CALL block_2_9_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2125  CASE (7)
2126  CALL block_2_9_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2127  CASE (9)
2128  CALL block_2_9_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2129  CASE (10)
2130  CALL block_2_9_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2131  CASE (11)
2132  CALL block_2_9_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2133  CASE (15)
2134  CALL block_2_9_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2135  CASE DEFAULT
2136  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2137  END SELECT
2138  CASE (2)
2139  CALL block_2_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2140  CASE (3)
2141  CALL block_2_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2142  CASE (4)
2143  CALL block_2_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2144  CASE (5)
2145  CALL block_2_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2146  CASE (6)
2147  CALL block_2_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2148  CASE (7)
2149  CALL block_2_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2150  CASE (9)
2151  CALL block_2_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2152  CASE (10)
2153  CALL block_2_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2154  CASE (11)
2155  CALL block_2_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2156  CASE (15)
2157  CALL block_2_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2158  CASE DEFAULT
2159  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2160  END SELECT
2161  CASE (10)
2162  CALL block_2_10(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2163  CASE (11)
2164  CALL block_2_11(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2165  CASE (15)
2166  CALL block_2_15(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2167  CASE DEFAULT
2168  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2169  END SELECT
2170  CASE (3)
2171  SELECT CASE (mb_max)
2172  CASE (1)
2173  SELECT CASE (mc_max)
2174  CASE (1)
2175  SELECT CASE (md_max)
2176  CASE (1)
2177  CALL block_3_1_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2178  CASE (2)
2179  CALL block_3_1_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2180  CASE (3)
2181  CALL block_3_1_1_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2182  CASE (4)
2183  CALL block_3_1_1_4(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2184  CASE (5)
2185  CALL block_3_1_1_5(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2186  CASE (6)
2187  CALL block_3_1_1_6(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2188  CASE (7)
2189  CALL block_3_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2190  CASE (9)
2191  CALL block_3_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2192  CASE (10)
2193  CALL block_3_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2194  CASE (11)
2195  CALL block_3_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2196  CASE (15)
2197  CALL block_3_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2198  CASE DEFAULT
2199  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2200  END SELECT
2201  CASE (2)
2202  SELECT CASE (md_max)
2203  CASE (1)
2204  CALL block_3_1_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2205  CASE (2)
2206  CALL block_3_1_2_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2207  CASE (3)
2208  CALL block_3_1_2_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2209  CASE (4)
2210  CALL block_3_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2211  CASE (5)
2212  CALL block_3_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2213  CASE (6)
2214  CALL block_3_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2215  CASE (7)
2216  CALL block_3_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2217  CASE (9)
2218  CALL block_3_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2219  CASE (10)
2220  CALL block_3_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2221  CASE (11)
2222  CALL block_3_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2223  CASE (15)
2224  CALL block_3_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2225  CASE DEFAULT
2226  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2227  END SELECT
2228  CASE (3)
2229  SELECT CASE (md_max)
2230  CASE (1)
2231  CALL block_3_1_3_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2232  CASE (2)
2233  CALL block_3_1_3_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2234  CASE (3)
2235  CALL block_3_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2236  CASE (4)
2237  CALL block_3_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2238  CASE (5)
2239  CALL block_3_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2240  CASE (6)
2241  CALL block_3_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2242  CASE (7)
2243  CALL block_3_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2244  CASE (9)
2245  CALL block_3_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2246  CASE (10)
2247  CALL block_3_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2248  CASE (11)
2249  CALL block_3_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2250  CASE (15)
2251  CALL block_3_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2252  CASE DEFAULT
2253  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2254  END SELECT
2255  CASE (4)
2256  SELECT CASE (md_max)
2257  CASE (1)
2258  CALL block_3_1_4_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2259  CASE (2)
2260  CALL block_3_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2261  CASE (3)
2262  CALL block_3_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2263  CASE (4)
2264  CALL block_3_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2265  CASE (5)
2266  CALL block_3_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2267  CASE (6)
2268  CALL block_3_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2269  CASE (7)
2270  CALL block_3_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2271  CASE (9)
2272  CALL block_3_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2273  CASE (10)
2274  CALL block_3_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2275  CASE (11)
2276  CALL block_3_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2277  CASE (15)
2278  CALL block_3_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2279  CASE DEFAULT
2280  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2281  END SELECT
2282  CASE (5)
2283  SELECT CASE (md_max)
2284  CASE (1)
2285  CALL block_3_1_5_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2286  CASE (2)
2287  CALL block_3_1_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2288  CASE (3)
2289  CALL block_3_1_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2290  CASE (4)
2291  CALL block_3_1_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2292  CASE (5)
2293  CALL block_3_1_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2294  CASE (6)
2295  CALL block_3_1_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2296  CASE (7)
2297  CALL block_3_1_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2298  CASE (9)
2299  CALL block_3_1_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2300  CASE (10)
2301  CALL block_3_1_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2302  CASE (11)
2303  CALL block_3_1_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2304  CASE (15)
2305  CALL block_3_1_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2306  CASE DEFAULT
2307  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2308  END SELECT
2309  CASE (6)
2310  SELECT CASE (md_max)
2311  CASE (1)
2312  CALL block_3_1_6_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2313  CASE (2)
2314  CALL block_3_1_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2315  CASE (3)
2316  CALL block_3_1_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2317  CASE (4)
2318  CALL block_3_1_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2319  CASE (5)
2320  CALL block_3_1_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2321  CASE (6)
2322  CALL block_3_1_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2323  CASE (7)
2324  CALL block_3_1_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2325  CASE (9)
2326  CALL block_3_1_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2327  CASE (10)
2328  CALL block_3_1_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2329  CASE (11)
2330  CALL block_3_1_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2331  CASE (15)
2332  CALL block_3_1_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2333  CASE DEFAULT
2334  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2335  END SELECT
2336  CASE (7)
2337  CALL block_3_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2338  CASE (9)
2339  CALL block_3_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2340  CASE (10)
2341  CALL block_3_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2342  CASE (11)
2343  CALL block_3_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2344  CASE (15)
2345  CALL block_3_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2346  CASE DEFAULT
2347  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2348  END SELECT
2349  CASE (2)
2350  SELECT CASE (mc_max)
2351  CASE (1)
2352  SELECT CASE (md_max)
2353  CASE (1)
2354  CALL block_3_2_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2355  CASE (2)
2356  CALL block_3_2_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2357  CASE (3)
2358  CALL block_3_2_1_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2359  CASE (4)
2360  CALL block_3_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2361  CASE (5)
2362  CALL block_3_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2363  CASE (6)
2364  CALL block_3_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2365  CASE (7)
2366  CALL block_3_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2367  CASE (9)
2368  CALL block_3_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2369  CASE (10)
2370  CALL block_3_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2371  CASE (11)
2372  CALL block_3_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2373  CASE (15)
2374  CALL block_3_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2375  CASE DEFAULT
2376  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2377  END SELECT
2378  CASE (2)
2379  SELECT CASE (md_max)
2380  CASE (1)
2381  CALL block_3_2_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2382  CASE (2)
2383  CALL block_3_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2384  CASE (3)
2385  CALL block_3_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2386  CASE (4)
2387  CALL block_3_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2388  CASE (5)
2389  CALL block_3_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2390  CASE (6)
2391  CALL block_3_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2392  CASE (7)
2393  CALL block_3_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2394  CASE (9)
2395  CALL block_3_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2396  CASE (10)
2397  CALL block_3_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2398  CASE (11)
2399  CALL block_3_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2400  CASE (15)
2401  CALL block_3_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2402  CASE DEFAULT
2403  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2404  END SELECT
2405  CASE (3)
2406  SELECT CASE (md_max)
2407  CASE (1)
2408  CALL block_3_2_3_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2409  CASE (2)
2410  CALL block_3_2_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2411  CASE (3)
2412  CALL block_3_2_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2413  CASE (4)
2414  CALL block_3_2_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2415  CASE (5)
2416  CALL block_3_2_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2417  CASE (6)
2418  CALL block_3_2_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2419  CASE (7)
2420  CALL block_3_2_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2421  CASE (9)
2422  CALL block_3_2_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2423  CASE (10)
2424  CALL block_3_2_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2425  CASE (11)
2426  CALL block_3_2_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2427  CASE (15)
2428  CALL block_3_2_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2429  CASE DEFAULT
2430  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2431  END SELECT
2432  CASE (4)
2433  CALL block_3_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2434  CASE (5)
2435  CALL block_3_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2436  CASE (6)
2437  CALL block_3_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2438  CASE (7)
2439  CALL block_3_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2440  CASE (9)
2441  CALL block_3_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2442  CASE (10)
2443  CALL block_3_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2444  CASE (11)
2445  CALL block_3_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2446  CASE (15)
2447  CALL block_3_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2448  CASE DEFAULT
2449  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2450  END SELECT
2451  CASE (3)
2452  SELECT CASE (mc_max)
2453  CASE (1)
2454  SELECT CASE (md_max)
2455  CASE (1)
2456  CALL block_3_3_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2457  CASE (2)
2458  CALL block_3_3_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2459  CASE (3)
2460  CALL block_3_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2461  CASE (4)
2462  CALL block_3_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2463  CASE (5)
2464  CALL block_3_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2465  CASE (6)
2466  CALL block_3_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2467  CASE (7)
2468  CALL block_3_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2469  CASE (9)
2470  CALL block_3_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2471  CASE (10)
2472  CALL block_3_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2473  CASE (11)
2474  CALL block_3_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2475  CASE (15)
2476  CALL block_3_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2477  CASE DEFAULT
2478  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2479  END SELECT
2480  CASE (2)
2481  SELECT CASE (md_max)
2482  CASE (1)
2483  CALL block_3_3_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2484  CASE (2)
2485  CALL block_3_3_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2486  CASE (3)
2487  CALL block_3_3_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2488  CASE (4)
2489  CALL block_3_3_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2490  CASE (5)
2491  CALL block_3_3_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2492  CASE (6)
2493  CALL block_3_3_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2494  CASE (7)
2495  CALL block_3_3_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2496  CASE (9)
2497  CALL block_3_3_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2498  CASE (10)
2499  CALL block_3_3_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2500  CASE (11)
2501  CALL block_3_3_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2502  CASE (15)
2503  CALL block_3_3_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2504  CASE DEFAULT
2505  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2506  END SELECT
2507  CASE (3)
2508  CALL block_3_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2509  CASE (4)
2510  CALL block_3_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2511  CASE (5)
2512  CALL block_3_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2513  CASE (6)
2514  CALL block_3_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2515  CASE (7)
2516  CALL block_3_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2517  CASE (9)
2518  CALL block_3_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2519  CASE (10)
2520  CALL block_3_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2521  CASE (11)
2522  CALL block_3_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2523  CASE (15)
2524  CALL block_3_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2525  CASE DEFAULT
2526  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2527  END SELECT
2528  CASE (4)
2529  SELECT CASE (mc_max)
2530  CASE (1)
2531  SELECT CASE (md_max)
2532  CASE (1)
2533  CALL block_3_4_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2534  CASE (2)
2535  CALL block_3_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2536  CASE (3)
2537  CALL block_3_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2538  CASE (4)
2539  CALL block_3_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2540  CASE (5)
2541  CALL block_3_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2542  CASE (6)
2543  CALL block_3_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2544  CASE (7)
2545  CALL block_3_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2546  CASE (9)
2547  CALL block_3_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2548  CASE (10)
2549  CALL block_3_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2550  CASE (11)
2551  CALL block_3_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2552  CASE (15)
2553  CALL block_3_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2554  CASE DEFAULT
2555  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2556  END SELECT
2557  CASE (2)
2558  CALL block_3_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2559  CASE (3)
2560  CALL block_3_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2561  CASE (4)
2562  CALL block_3_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2563  CASE (5)
2564  CALL block_3_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2565  CASE (6)
2566  CALL block_3_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2567  CASE (7)
2568  CALL block_3_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2569  CASE (9)
2570  CALL block_3_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2571  CASE (10)
2572  CALL block_3_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2573  CASE (11)
2574  CALL block_3_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2575  CASE (15)
2576  CALL block_3_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2577  CASE DEFAULT
2578  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2579  END SELECT
2580  CASE (5)
2581  SELECT CASE (mc_max)
2582  CASE (1)
2583  SELECT CASE (md_max)
2584  CASE (1)
2585  CALL block_3_5_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2586  CASE (2)
2587  CALL block_3_5_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2588  CASE (3)
2589  CALL block_3_5_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2590  CASE (4)
2591  CALL block_3_5_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2592  CASE (5)
2593  CALL block_3_5_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2594  CASE (6)
2595  CALL block_3_5_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2596  CASE (7)
2597  CALL block_3_5_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2598  CASE (9)
2599  CALL block_3_5_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2600  CASE (10)
2601  CALL block_3_5_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2602  CASE (11)
2603  CALL block_3_5_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2604  CASE (15)
2605  CALL block_3_5_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2606  CASE DEFAULT
2607  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2608  END SELECT
2609  CASE (2)
2610  CALL block_3_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2611  CASE (3)
2612  CALL block_3_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2613  CASE (4)
2614  CALL block_3_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2615  CASE (5)
2616  CALL block_3_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2617  CASE (6)
2618  CALL block_3_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2619  CASE (7)
2620  CALL block_3_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2621  CASE (9)
2622  CALL block_3_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2623  CASE (10)
2624  CALL block_3_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2625  CASE (11)
2626  CALL block_3_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2627  CASE (15)
2628  CALL block_3_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2629  CASE DEFAULT
2630  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2631  END SELECT
2632  CASE (6)
2633  SELECT CASE (mc_max)
2634  CASE (1)
2635  SELECT CASE (md_max)
2636  CASE (1)
2637  CALL block_3_6_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2638  CASE (2)
2639  CALL block_3_6_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2640  CASE (3)
2641  CALL block_3_6_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2642  CASE (4)
2643  CALL block_3_6_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2644  CASE (5)
2645  CALL block_3_6_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2646  CASE (6)
2647  CALL block_3_6_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2648  CASE (7)
2649  CALL block_3_6_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2650  CASE (9)
2651  CALL block_3_6_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2652  CASE (10)
2653  CALL block_3_6_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2654  CASE (11)
2655  CALL block_3_6_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2656  CASE (15)
2657  CALL block_3_6_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2658  CASE DEFAULT
2659  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2660  END SELECT
2661  CASE (2)
2662  CALL block_3_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2663  CASE (3)
2664  CALL block_3_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2665  CASE (4)
2666  CALL block_3_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2667  CASE (5)
2668  CALL block_3_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2669  CASE (6)
2670  CALL block_3_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2671  CASE (7)
2672  CALL block_3_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2673  CASE (9)
2674  CALL block_3_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2675  CASE (10)
2676  CALL block_3_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2677  CASE (11)
2678  CALL block_3_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2679  CASE (15)
2680  CALL block_3_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2681  CASE DEFAULT
2682  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2683  END SELECT
2684  CASE (7)
2685  CALL block_3_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2686  CASE (9)
2687  CALL block_3_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2688  CASE (10)
2689  CALL block_3_10(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2690  CASE (11)
2691  CALL block_3_11(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2692  CASE (15)
2693  CALL block_3_15(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2694  CASE DEFAULT
2695  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2696  END SELECT
2697  CASE (4)
2698  SELECT CASE (mb_max)
2699  CASE (1)
2700  SELECT CASE (mc_max)
2701  CASE (1)
2702  SELECT CASE (md_max)
2703  CASE (1)
2704  CALL block_4_1_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2705  CASE (2)
2706  CALL block_4_1_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2707  CASE (3)
2708  CALL block_4_1_1_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2709  CASE (4)
2710  CALL block_4_1_1_4(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2711  CASE (5)
2712  CALL block_4_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2713  CASE (6)
2714  CALL block_4_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2715  CASE (7)
2716  CALL block_4_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2717  CASE (9)
2718  CALL block_4_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2719  CASE (10)
2720  CALL block_4_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2721  CASE (11)
2722  CALL block_4_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2723  CASE (15)
2724  CALL block_4_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2725  CASE DEFAULT
2726  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2727  END SELECT
2728  CASE (2)
2729  SELECT CASE (md_max)
2730  CASE (1)
2731  CALL block_4_1_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2732  CASE (2)
2733  CALL block_4_1_2_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2734  CASE (3)
2735  CALL block_4_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2736  CASE (4)
2737  CALL block_4_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2738  CASE (5)
2739  CALL block_4_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2740  CASE (6)
2741  CALL block_4_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2742  CASE (7)
2743  CALL block_4_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2744  CASE (9)
2745  CALL block_4_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2746  CASE (10)
2747  CALL block_4_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2748  CASE (11)
2749  CALL block_4_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2750  CASE (15)
2751  CALL block_4_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2752  CASE DEFAULT
2753  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2754  END SELECT
2755  CASE (3)
2756  SELECT CASE (md_max)
2757  CASE (1)
2758  CALL block_4_1_3_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2759  CASE (2)
2760  CALL block_4_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2761  CASE (3)
2762  CALL block_4_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2763  CASE (4)
2764  CALL block_4_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2765  CASE (5)
2766  CALL block_4_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2767  CASE (6)
2768  CALL block_4_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2769  CASE (7)
2770  CALL block_4_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2771  CASE (9)
2772  CALL block_4_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2773  CASE (10)
2774  CALL block_4_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2775  CASE (11)
2776  CALL block_4_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2777  CASE (15)
2778  CALL block_4_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2779  CASE DEFAULT
2780  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2781  END SELECT
2782  CASE (4)
2783  SELECT CASE (md_max)
2784  CASE (1)
2785  CALL block_4_1_4_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2786  CASE (2)
2787  CALL block_4_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2788  CASE (3)
2789  CALL block_4_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2790  CASE (4)
2791  CALL block_4_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2792  CASE (5)
2793  CALL block_4_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2794  CASE (6)
2795  CALL block_4_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2796  CASE (7)
2797  CALL block_4_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2798  CASE (9)
2799  CALL block_4_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2800  CASE (10)
2801  CALL block_4_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2802  CASE (11)
2803  CALL block_4_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2804  CASE (15)
2805  CALL block_4_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2806  CASE DEFAULT
2807  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2808  END SELECT
2809  CASE (5)
2810  CALL block_4_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2811  CASE (6)
2812  CALL block_4_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2813  CASE (7)
2814  CALL block_4_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2815  CASE (9)
2816  CALL block_4_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2817  CASE (10)
2818  CALL block_4_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2819  CASE (11)
2820  CALL block_4_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2821  CASE (15)
2822  CALL block_4_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2823  CASE DEFAULT
2824  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2825  END SELECT
2826  CASE (2)
2827  SELECT CASE (mc_max)
2828  CASE (1)
2829  SELECT CASE (md_max)
2830  CASE (1)
2831  CALL block_4_2_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2832  CASE (2)
2833  CALL block_4_2_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2834  CASE (3)
2835  CALL block_4_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2836  CASE (4)
2837  CALL block_4_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2838  CASE (5)
2839  CALL block_4_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2840  CASE (6)
2841  CALL block_4_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2842  CASE (7)
2843  CALL block_4_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2844  CASE (9)
2845  CALL block_4_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2846  CASE (10)
2847  CALL block_4_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2848  CASE (11)
2849  CALL block_4_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2850  CASE (15)
2851  CALL block_4_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2852  CASE DEFAULT
2853  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2854  END SELECT
2855  CASE (2)
2856  SELECT CASE (md_max)
2857  CASE (1)
2858  CALL block_4_2_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2859  CASE (2)
2860  CALL block_4_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2861  CASE (3)
2862  CALL block_4_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2863  CASE (4)
2864  CALL block_4_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2865  CASE (5)
2866  CALL block_4_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2867  CASE (6)
2868  CALL block_4_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2869  CASE (7)
2870  CALL block_4_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2871  CASE (9)
2872  CALL block_4_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2873  CASE (10)
2874  CALL block_4_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2875  CASE (11)
2876  CALL block_4_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2877  CASE (15)
2878  CALL block_4_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2879  CASE DEFAULT
2880  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2881  END SELECT
2882  CASE (3)
2883  CALL block_4_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2884  CASE (4)
2885  CALL block_4_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2886  CASE (5)
2887  CALL block_4_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2888  CASE (6)
2889  CALL block_4_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2890  CASE (7)
2891  CALL block_4_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2892  CASE (9)
2893  CALL block_4_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2894  CASE (10)
2895  CALL block_4_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2896  CASE (11)
2897  CALL block_4_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2898  CASE (15)
2899  CALL block_4_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2900  CASE DEFAULT
2901  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2902  END SELECT
2903  CASE (3)
2904  SELECT CASE (mc_max)
2905  CASE (1)
2906  SELECT CASE (md_max)
2907  CASE (1)
2908  CALL block_4_3_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2909  CASE (2)
2910  CALL block_4_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2911  CASE (3)
2912  CALL block_4_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2913  CASE (4)
2914  CALL block_4_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2915  CASE (5)
2916  CALL block_4_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2917  CASE (6)
2918  CALL block_4_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2919  CASE (7)
2920  CALL block_4_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2921  CASE (9)
2922  CALL block_4_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2923  CASE (10)
2924  CALL block_4_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2925  CASE (11)
2926  CALL block_4_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2927  CASE (15)
2928  CALL block_4_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2929  CASE DEFAULT
2930  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2931  END SELECT
2932  CASE (2)
2933  CALL block_4_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2934  CASE (3)
2935  CALL block_4_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2936  CASE (4)
2937  CALL block_4_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2938  CASE (5)
2939  CALL block_4_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2940  CASE (6)
2941  CALL block_4_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2942  CASE (7)
2943  CALL block_4_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2944  CASE (9)
2945  CALL block_4_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2946  CASE (10)
2947  CALL block_4_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2948  CASE (11)
2949  CALL block_4_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2950  CASE (15)
2951  CALL block_4_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2952  CASE DEFAULT
2953  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2954  END SELECT
2955  CASE (4)
2956  SELECT CASE (mc_max)
2957  CASE (1)
2958  SELECT CASE (md_max)
2959  CASE (1)
2960  CALL block_4_4_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2961  CASE (2)
2962  CALL block_4_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2963  CASE (3)
2964  CALL block_4_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2965  CASE (4)
2966  CALL block_4_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2967  CASE (5)
2968  CALL block_4_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2969  CASE (6)
2970  CALL block_4_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2971  CASE (7)
2972  CALL block_4_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2973  CASE (9)
2974  CALL block_4_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2975  CASE (10)
2976  CALL block_4_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2977  CASE (11)
2978  CALL block_4_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2979  CASE (15)
2980  CALL block_4_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2981  CASE DEFAULT
2982  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2983  END SELECT
2984  CASE (2)
2985  CALL block_4_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2986  CASE (3)
2987  CALL block_4_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2988  CASE (4)
2989  CALL block_4_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2990  CASE (5)
2991  CALL block_4_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2992  CASE (6)
2993  CALL block_4_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2994  CASE (7)
2995  CALL block_4_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2996  CASE (9)
2997  CALL block_4_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
2998  CASE (10)
2999  CALL block_4_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3000  CASE (11)
3001  CALL block_4_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3002  CASE (15)
3003  CALL block_4_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3004  CASE DEFAULT
3005  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3006  END SELECT
3007  CASE (5)
3008  CALL block_4_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3009  CASE (6)
3010  CALL block_4_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3011  CASE (7)
3012  CALL block_4_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3013  CASE (9)
3014  CALL block_4_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3015  CASE (10)
3016  CALL block_4_10(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3017  CASE (11)
3018  CALL block_4_11(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3019  CASE (15)
3020  CALL block_4_15(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3021  CASE DEFAULT
3022  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3023  END SELECT
3024  CASE (5)
3025  SELECT CASE (mb_max)
3026  CASE (1)
3027  SELECT CASE (mc_max)
3028  CASE (1)
3029  SELECT CASE (md_max)
3030  CASE (1)
3031  CALL block_5_1_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3032  CASE (2)
3033  CALL block_5_1_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3034  CASE (3)
3035  CALL block_5_1_1_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3036  CASE (4)
3037  CALL block_5_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3038  CASE (5)
3039  CALL block_5_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3040  CASE (6)
3041  CALL block_5_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3042  CASE (7)
3043  CALL block_5_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3044  CASE (9)
3045  CALL block_5_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3046  CASE (10)
3047  CALL block_5_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3048  CASE (11)
3049  CALL block_5_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3050  CASE (15)
3051  CALL block_5_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3052  CASE DEFAULT
3053  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3054  END SELECT
3055  CASE (2)
3056  SELECT CASE (md_max)
3057  CASE (1)
3058  CALL block_5_1_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3059  CASE (2)
3060  CALL block_5_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3061  CASE (3)
3062  CALL block_5_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3063  CASE (4)
3064  CALL block_5_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3065  CASE (5)
3066  CALL block_5_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3067  CASE (6)
3068  CALL block_5_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3069  CASE (7)
3070  CALL block_5_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3071  CASE (9)
3072  CALL block_5_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3073  CASE (10)
3074  CALL block_5_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3075  CASE (11)
3076  CALL block_5_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3077  CASE (15)
3078  CALL block_5_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3079  CASE DEFAULT
3080  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3081  END SELECT
3082  CASE (3)
3083  SELECT CASE (md_max)
3084  CASE (1)
3085  CALL block_5_1_3_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3086  CASE (2)
3087  CALL block_5_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3088  CASE (3)
3089  CALL block_5_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3090  CASE (4)
3091  CALL block_5_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3092  CASE (5)
3093  CALL block_5_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3094  CASE (6)
3095  CALL block_5_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3096  CASE (7)
3097  CALL block_5_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3098  CASE (9)
3099  CALL block_5_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3100  CASE (10)
3101  CALL block_5_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3102  CASE (11)
3103  CALL block_5_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3104  CASE (15)
3105  CALL block_5_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3106  CASE DEFAULT
3107  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3108  END SELECT
3109  CASE (4)
3110  CALL block_5_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3111  CASE (5)
3112  CALL block_5_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3113  CASE (6)
3114  CALL block_5_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3115  CASE (7)
3116  CALL block_5_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3117  CASE (9)
3118  CALL block_5_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3119  CASE (10)
3120  CALL block_5_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3121  CASE (11)
3122  CALL block_5_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3123  CASE (15)
3124  CALL block_5_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3125  CASE DEFAULT
3126  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3127  END SELECT
3128  CASE (2)
3129  SELECT CASE (mc_max)
3130  CASE (1)
3131  SELECT CASE (md_max)
3132  CASE (1)
3133  CALL block_5_2_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3134  CASE (2)
3135  CALL block_5_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3136  CASE (3)
3137  CALL block_5_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3138  CASE (4)
3139  CALL block_5_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3140  CASE (5)
3141  CALL block_5_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3142  CASE (6)
3143  CALL block_5_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3144  CASE (7)
3145  CALL block_5_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3146  CASE (9)
3147  CALL block_5_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3148  CASE (10)
3149  CALL block_5_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3150  CASE (11)
3151  CALL block_5_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3152  CASE (15)
3153  CALL block_5_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3154  CASE DEFAULT
3155  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3156  END SELECT
3157  CASE (2)
3158  CALL block_5_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3159  CASE (3)
3160  CALL block_5_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3161  CASE (4)
3162  CALL block_5_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3163  CASE (5)
3164  CALL block_5_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3165  CASE (6)
3166  CALL block_5_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3167  CASE (7)
3168  CALL block_5_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3169  CASE (9)
3170  CALL block_5_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3171  CASE (10)
3172  CALL block_5_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3173  CASE (11)
3174  CALL block_5_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3175  CASE (15)
3176  CALL block_5_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3177  CASE DEFAULT
3178  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3179  END SELECT
3180  CASE (3)
3181  SELECT CASE (mc_max)
3182  CASE (1)
3183  SELECT CASE (md_max)
3184  CASE (1)
3185  CALL block_5_3_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3186  CASE (2)
3187  CALL block_5_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3188  CASE (3)
3189  CALL block_5_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3190  CASE (4)
3191  CALL block_5_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3192  CASE (5)
3193  CALL block_5_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3194  CASE (6)
3195  CALL block_5_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3196  CASE (7)
3197  CALL block_5_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3198  CASE (9)
3199  CALL block_5_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3200  CASE (10)
3201  CALL block_5_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3202  CASE (11)
3203  CALL block_5_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3204  CASE (15)
3205  CALL block_5_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3206  CASE DEFAULT
3207  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3208  END SELECT
3209  CASE (2)
3210  CALL block_5_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3211  CASE (3)
3212  CALL block_5_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3213  CASE (4)
3214  CALL block_5_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3215  CASE (5)
3216  CALL block_5_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3217  CASE (6)
3218  CALL block_5_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3219  CASE (7)
3220  CALL block_5_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3221  CASE (9)
3222  CALL block_5_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3223  CASE (10)
3224  CALL block_5_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3225  CASE (11)
3226  CALL block_5_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3227  CASE (15)
3228  CALL block_5_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3229  CASE DEFAULT
3230  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3231  END SELECT
3232  CASE (4)
3233  CALL block_5_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3234  CASE (5)
3235  CALL block_5_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3236  CASE (6)
3237  CALL block_5_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3238  CASE (7)
3239  CALL block_5_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3240  CASE (9)
3241  CALL block_5_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3242  CASE (10)
3243  CALL block_5_10(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3244  CASE (11)
3245  CALL block_5_11(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3246  CASE (15)
3247  CALL block_5_15(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3248  CASE DEFAULT
3249  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3250  END SELECT
3251  CASE (6)
3252  SELECT CASE (mb_max)
3253  CASE (1)
3254  SELECT CASE (mc_max)
3255  CASE (1)
3256  SELECT CASE (md_max)
3257  CASE (1)
3258  CALL block_6_1_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3259  CASE (2)
3260  CALL block_6_1_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3261  CASE (3)
3262  CALL block_6_1_1_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3263  CASE (4)
3264  CALL block_6_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3265  CASE (5)
3266  CALL block_6_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3267  CASE (6)
3268  CALL block_6_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3269  CASE (7)
3270  CALL block_6_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3271  CASE (9)
3272  CALL block_6_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3273  CASE (10)
3274  CALL block_6_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3275  CASE (11)
3276  CALL block_6_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3277  CASE (15)
3278  CALL block_6_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3279  CASE DEFAULT
3280  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3281  END SELECT
3282  CASE (2)
3283  SELECT CASE (md_max)
3284  CASE (1)
3285  CALL block_6_1_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3286  CASE (2)
3287  CALL block_6_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3288  CASE (3)
3289  CALL block_6_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3290  CASE (4)
3291  CALL block_6_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3292  CASE (5)
3293  CALL block_6_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3294  CASE (6)
3295  CALL block_6_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3296  CASE (7)
3297  CALL block_6_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3298  CASE (9)
3299  CALL block_6_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3300  CASE (10)
3301  CALL block_6_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3302  CASE (11)
3303  CALL block_6_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3304  CASE (15)
3305  CALL block_6_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3306  CASE DEFAULT
3307  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3308  END SELECT
3309  CASE (3)
3310  SELECT CASE (md_max)
3311  CASE (1)
3312  CALL block_6_1_3_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3313  CASE (2)
3314  CALL block_6_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3315  CASE (3)
3316  CALL block_6_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3317  CASE (4)
3318  CALL block_6_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3319  CASE (5)
3320  CALL block_6_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3321  CASE (6)
3322  CALL block_6_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3323  CASE (7)
3324  CALL block_6_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3325  CASE (9)
3326  CALL block_6_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3327  CASE (10)
3328  CALL block_6_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3329  CASE (11)
3330  CALL block_6_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3331  CASE (15)
3332  CALL block_6_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3333  CASE DEFAULT
3334  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3335  END SELECT
3336  CASE (4)
3337  CALL block_6_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3338  CASE (5)
3339  CALL block_6_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3340  CASE (6)
3341  CALL block_6_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3342  CASE (7)
3343  CALL block_6_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3344  CASE (9)
3345  CALL block_6_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3346  CASE (10)
3347  CALL block_6_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3348  CASE (11)
3349  CALL block_6_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3350  CASE (15)
3351  CALL block_6_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3352  CASE DEFAULT
3353  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3354  END SELECT
3355  CASE (2)
3356  SELECT CASE (mc_max)
3357  CASE (1)
3358  SELECT CASE (md_max)
3359  CASE (1)
3360  CALL block_6_2_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3361  CASE (2)
3362  CALL block_6_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3363  CASE (3)
3364  CALL block_6_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3365  CASE (4)
3366  CALL block_6_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3367  CASE (5)
3368  CALL block_6_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3369  CASE (6)
3370  CALL block_6_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3371  CASE (7)
3372  CALL block_6_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3373  CASE (9)
3374  CALL block_6_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3375  CASE (10)
3376  CALL block_6_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3377  CASE (11)
3378  CALL block_6_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3379  CASE (15)
3380  CALL block_6_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3381  CASE DEFAULT
3382  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3383  END SELECT
3384  CASE (2)
3385  CALL block_6_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3386  CASE (3)
3387  CALL block_6_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3388  CASE (4)
3389  CALL block_6_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3390  CASE (5)
3391  CALL block_6_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3392  CASE (6)
3393  CALL block_6_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3394  CASE (7)
3395  CALL block_6_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3396  CASE (9)
3397  CALL block_6_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3398  CASE (10)
3399  CALL block_6_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3400  CASE (11)
3401  CALL block_6_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3402  CASE (15)
3403  CALL block_6_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3404  CASE DEFAULT
3405  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3406  END SELECT
3407  CASE (3)
3408  SELECT CASE (mc_max)
3409  CASE (1)
3410  SELECT CASE (md_max)
3411  CASE (1)
3412  CALL block_6_3_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3413  CASE (2)
3414  CALL block_6_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3415  CASE (3)
3416  CALL block_6_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3417  CASE (4)
3418  CALL block_6_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3419  CASE (5)
3420  CALL block_6_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3421  CASE (6)
3422  CALL block_6_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3423  CASE (7)
3424  CALL block_6_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3425  CASE (9)
3426  CALL block_6_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3427  CASE (10)
3428  CALL block_6_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3429  CASE (11)
3430  CALL block_6_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3431  CASE (15)
3432  CALL block_6_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3433  CASE DEFAULT
3434  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3435  END SELECT
3436  CASE (2)
3437  CALL block_6_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3438  CASE (3)
3439  CALL block_6_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3440  CASE (4)
3441  CALL block_6_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3442  CASE (5)
3443  CALL block_6_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3444  CASE (6)
3445  CALL block_6_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3446  CASE (7)
3447  CALL block_6_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3448  CASE (9)
3449  CALL block_6_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3450  CASE (10)
3451  CALL block_6_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3452  CASE (11)
3453  CALL block_6_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3454  CASE (15)
3455  CALL block_6_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3456  CASE DEFAULT
3457  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3458  END SELECT
3459  CASE (4)
3460  CALL block_6_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3461  CASE (5)
3462  CALL block_6_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3463  CASE (6)
3464  CALL block_6_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3465  CASE (7)
3466  CALL block_6_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3467  CASE (9)
3468  CALL block_6_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3469  CASE (10)
3470  CALL block_6_10(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3471  CASE (11)
3472  CALL block_6_11(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3473  CASE (15)
3474  CALL block_6_15(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3475  CASE DEFAULT
3476  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3477  END SELECT
3478  CASE (7)
3479  SELECT CASE (mb_max)
3480  CASE (1)
3481  SELECT CASE (mc_max)
3482  CASE (1)
3483  SELECT CASE (md_max)
3484  CASE (1)
3485  CALL block_7_1_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3486  CASE (2)
3487  CALL block_7_1_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3488  CASE (3)
3489  CALL block_7_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3490  CASE (4)
3491  CALL block_7_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3492  CASE (5)
3493  CALL block_7_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3494  CASE (6)
3495  CALL block_7_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3496  CASE (7)
3497  CALL block_7_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3498  CASE (9)
3499  CALL block_7_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3500  CASE (10)
3501  CALL block_7_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3502  CASE (11)
3503  CALL block_7_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3504  CASE (15)
3505  CALL block_7_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3506  CASE DEFAULT
3507  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3508  END SELECT
3509  CASE (2)
3510  SELECT CASE (md_max)
3511  CASE (1)
3512  CALL block_7_1_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3513  CASE (2)
3514  CALL block_7_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3515  CASE (3)
3516  CALL block_7_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3517  CASE (4)
3518  CALL block_7_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3519  CASE (5)
3520  CALL block_7_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3521  CASE (6)
3522  CALL block_7_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3523  CASE (7)
3524  CALL block_7_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3525  CASE (9)
3526  CALL block_7_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3527  CASE (10)
3528  CALL block_7_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3529  CASE (11)
3530  CALL block_7_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3531  CASE (15)
3532  CALL block_7_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3533  CASE DEFAULT
3534  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3535  END SELECT
3536  CASE (3)
3537  CALL block_7_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3538  CASE (4)
3539  CALL block_7_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3540  CASE (5)
3541  CALL block_7_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3542  CASE (6)
3543  CALL block_7_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3544  CASE (7)
3545  CALL block_7_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3546  CASE (9)
3547  CALL block_7_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3548  CASE (10)
3549  CALL block_7_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3550  CASE (11)
3551  CALL block_7_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3552  CASE (15)
3553  CALL block_7_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3554  CASE DEFAULT
3555  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3556  END SELECT
3557  CASE (2)
3558  SELECT CASE (mc_max)
3559  CASE (1)
3560  SELECT CASE (md_max)
3561  CASE (1)
3562  CALL block_7_2_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3563  CASE (2)
3564  CALL block_7_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3565  CASE (3)
3566  CALL block_7_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3567  CASE (4)
3568  CALL block_7_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3569  CASE (5)
3570  CALL block_7_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3571  CASE (6)
3572  CALL block_7_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3573  CASE (7)
3574  CALL block_7_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3575  CASE (9)
3576  CALL block_7_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3577  CASE (10)
3578  CALL block_7_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3579  CASE (11)
3580  CALL block_7_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3581  CASE (15)
3582  CALL block_7_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3583  CASE DEFAULT
3584  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3585  END SELECT
3586  CASE (2)
3587  CALL block_7_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3588  CASE (3)
3589  CALL block_7_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3590  CASE (4)
3591  CALL block_7_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3592  CASE (5)
3593  CALL block_7_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3594  CASE (6)
3595  CALL block_7_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3596  CASE (7)
3597  CALL block_7_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3598  CASE (9)
3599  CALL block_7_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3600  CASE (10)
3601  CALL block_7_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3602  CASE (11)
3603  CALL block_7_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3604  CASE (15)
3605  CALL block_7_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3606  CASE DEFAULT
3607  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3608  END SELECT
3609  CASE (3)
3610  CALL block_7_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3611  CASE (4)
3612  CALL block_7_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3613  CASE (5)
3614  CALL block_7_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3615  CASE (6)
3616  CALL block_7_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3617  CASE (7)
3618  CALL block_7_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3619  CASE (9)
3620  CALL block_7_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3621  CASE (10)
3622  CALL block_7_10(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3623  CASE (11)
3624  CALL block_7_11(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3625  CASE (15)
3626  CALL block_7_15(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3627  CASE DEFAULT
3628  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3629  END SELECT
3630  CASE (9)
3631  SELECT CASE (mb_max)
3632  CASE (1)
3633  SELECT CASE (mc_max)
3634  CASE (1)
3635  SELECT CASE (md_max)
3636  CASE (1)
3637  CALL block_9_1_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3638  CASE (2)
3639  CALL block_9_1_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3640  CASE (3)
3641  CALL block_9_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3642  CASE (4)
3643  CALL block_9_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3644  CASE (5)
3645  CALL block_9_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3646  CASE (6)
3647  CALL block_9_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3648  CASE (7)
3649  CALL block_9_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3650  CASE (9)
3651  CALL block_9_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3652  CASE (10)
3653  CALL block_9_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3654  CASE (11)
3655  CALL block_9_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3656  CASE (15)
3657  CALL block_9_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3658  CASE DEFAULT
3659  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3660  END SELECT
3661  CASE (2)
3662  SELECT CASE (md_max)
3663  CASE (1)
3664  CALL block_9_1_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3665  CASE (2)
3666  CALL block_9_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3667  CASE (3)
3668  CALL block_9_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3669  CASE (4)
3670  CALL block_9_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3671  CASE (5)
3672  CALL block_9_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3673  CASE (6)
3674  CALL block_9_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3675  CASE (7)
3676  CALL block_9_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3677  CASE (9)
3678  CALL block_9_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3679  CASE (10)
3680  CALL block_9_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3681  CASE (11)
3682  CALL block_9_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3683  CASE (15)
3684  CALL block_9_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3685  CASE DEFAULT
3686  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3687  END SELECT
3688  CASE (3)
3689  CALL block_9_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3690  CASE (4)
3691  CALL block_9_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3692  CASE (5)
3693  CALL block_9_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3694  CASE (6)
3695  CALL block_9_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3696  CASE (7)
3697  CALL block_9_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3698  CASE (9)
3699  CALL block_9_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3700  CASE (10)
3701  CALL block_9_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3702  CASE (11)
3703  CALL block_9_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3704  CASE (15)
3705  CALL block_9_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3706  CASE DEFAULT
3707  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3708  END SELECT
3709  CASE (2)
3710  SELECT CASE (mc_max)
3711  CASE (1)
3712  SELECT CASE (md_max)
3713  CASE (1)
3714  CALL block_9_2_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3715  CASE (2)
3716  CALL block_9_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3717  CASE (3)
3718  CALL block_9_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3719  CASE (4)
3720  CALL block_9_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3721  CASE (5)
3722  CALL block_9_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3723  CASE (6)
3724  CALL block_9_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3725  CASE (7)
3726  CALL block_9_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3727  CASE (9)
3728  CALL block_9_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3729  CASE (10)
3730  CALL block_9_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3731  CASE (11)
3732  CALL block_9_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3733  CASE (15)
3734  CALL block_9_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3735  CASE DEFAULT
3736  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3737  END SELECT
3738  CASE (2)
3739  CALL block_9_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3740  CASE (3)
3741  CALL block_9_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3742  CASE (4)
3743  CALL block_9_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3744  CASE (5)
3745  CALL block_9_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3746  CASE (6)
3747  CALL block_9_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3748  CASE (7)
3749  CALL block_9_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3750  CASE (9)
3751  CALL block_9_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3752  CASE (10)
3753  CALL block_9_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3754  CASE (11)
3755  CALL block_9_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3756  CASE (15)
3757  CALL block_9_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3758  CASE DEFAULT
3759  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3760  END SELECT
3761  CASE (3)
3762  CALL block_9_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3763  CASE (4)
3764  CALL block_9_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3765  CASE (5)
3766  CALL block_9_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3767  CASE (6)
3768  CALL block_9_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3769  CASE (7)
3770  CALL block_9_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3771  CASE (9)
3772  CALL block_9_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3773  CASE (10)
3774  CALL block_9_10(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3775  CASE (11)
3776  CALL block_9_11(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3777  CASE (15)
3778  CALL block_9_15(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3779  CASE DEFAULT
3780  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3781  END SELECT
3782  CASE (10)
3783  SELECT CASE (mb_max)
3784  CASE (1)
3785  SELECT CASE (mc_max)
3786  CASE (1)
3787  SELECT CASE (md_max)
3788  CASE (1)
3789  CALL block_10_1_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3790  CASE (2)
3791  CALL block_10_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3792  CASE (3)
3793  CALL block_10_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3794  CASE (4)
3795  CALL block_10_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3796  CASE (5)
3797  CALL block_10_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3798  CASE (6)
3799  CALL block_10_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3800  CASE (7)
3801  CALL block_10_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3802  CASE (9)
3803  CALL block_10_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3804  CASE (10)
3805  CALL block_10_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3806  CASE (11)
3807  CALL block_10_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3808  CASE (15)
3809  CALL block_10_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3810  CASE DEFAULT
3811  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3812  END SELECT
3813  CASE (2)
3814  CALL block_10_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3815  CASE (3)
3816  CALL block_10_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3817  CASE (4)
3818  CALL block_10_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3819  CASE (5)
3820  CALL block_10_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3821  CASE (6)
3822  CALL block_10_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3823  CASE (7)
3824  CALL block_10_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3825  CASE (9)
3826  CALL block_10_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3827  CASE (10)
3828  CALL block_10_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3829  CASE (11)
3830  CALL block_10_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3831  CASE (15)
3832  CALL block_10_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3833  CASE DEFAULT
3834  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3835  END SELECT
3836  CASE (2)
3837  CALL block_10_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3838  CASE (3)
3839  CALL block_10_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3840  CASE (4)
3841  CALL block_10_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3842  CASE (5)
3843  CALL block_10_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3844  CASE (6)
3845  CALL block_10_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3846  CASE (7)
3847  CALL block_10_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3848  CASE (9)
3849  CALL block_10_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3850  CASE (10)
3851  CALL block_10_10(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3852  CASE (11)
3853  CALL block_10_11(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3854  CASE (15)
3855  CALL block_10_15(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3856  CASE DEFAULT
3857  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3858  END SELECT
3859  CASE (11)
3860  SELECT CASE (mb_max)
3861  CASE (1)
3862  SELECT CASE (mc_max)
3863  CASE (1)
3864  SELECT CASE (md_max)
3865  CASE (1)
3866  CALL block_11_1_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3867  CASE (2)
3868  CALL block_11_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3869  CASE (3)
3870  CALL block_11_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3871  CASE (4)
3872  CALL block_11_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3873  CASE (5)
3874  CALL block_11_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3875  CASE (6)
3876  CALL block_11_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3877  CASE (7)
3878  CALL block_11_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3879  CASE (9)
3880  CALL block_11_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3881  CASE (10)
3882  CALL block_11_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3883  CASE (11)
3884  CALL block_11_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3885  CASE (15)
3886  CALL block_11_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3887  CASE DEFAULT
3888  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3889  END SELECT
3890  CASE (2)
3891  CALL block_11_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3892  CASE (3)
3893  CALL block_11_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3894  CASE (4)
3895  CALL block_11_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3896  CASE (5)
3897  CALL block_11_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3898  CASE (6)
3899  CALL block_11_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3900  CASE (7)
3901  CALL block_11_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3902  CASE (9)
3903  CALL block_11_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3904  CASE (10)
3905  CALL block_11_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3906  CASE (11)
3907  CALL block_11_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3908  CASE (15)
3909  CALL block_11_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3910  CASE DEFAULT
3911  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3912  END SELECT
3913  CASE (2)
3914  CALL block_11_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3915  CASE (3)
3916  CALL block_11_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3917  CASE (4)
3918  CALL block_11_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3919  CASE (5)
3920  CALL block_11_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3921  CASE (6)
3922  CALL block_11_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3923  CASE (7)
3924  CALL block_11_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3925  CASE (9)
3926  CALL block_11_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3927  CASE (10)
3928  CALL block_11_10(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3929  CASE (11)
3930  CALL block_11_11(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3931  CASE (15)
3932  CALL block_11_15(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3933  CASE DEFAULT
3934  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3935  END SELECT
3936  CASE (15)
3937  SELECT CASE (mb_max)
3938  CASE (1)
3939  SELECT CASE (mc_max)
3940  CASE (1)
3941  SELECT CASE (md_max)
3942  CASE (1)
3943  CALL block_15_1_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3944  CASE (2)
3945  CALL block_15_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3946  CASE (3)
3947  CALL block_15_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3948  CASE (4)
3949  CALL block_15_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3950  CASE (5)
3951  CALL block_15_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3952  CASE (6)
3953  CALL block_15_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3954  CASE (7)
3955  CALL block_15_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3956  CASE (9)
3957  CALL block_15_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3958  CASE (10)
3959  CALL block_15_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3960  CASE (11)
3961  CALL block_15_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3962  CASE (15)
3963  CALL block_15_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3964  CASE DEFAULT
3965  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3966  END SELECT
3967  CASE (2)
3968  CALL block_15_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3969  CASE (3)
3970  CALL block_15_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3971  CASE (4)
3972  CALL block_15_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3973  CASE (5)
3974  CALL block_15_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3975  CASE (6)
3976  CALL block_15_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3977  CASE (7)
3978  CALL block_15_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3979  CASE (9)
3980  CALL block_15_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3981  CASE (10)
3982  CALL block_15_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3983  CASE (11)
3984  CALL block_15_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3985  CASE (15)
3986  CALL block_15_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3987  CASE DEFAULT
3988  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3989  END SELECT
3990  CASE (2)
3991  CALL block_15_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3992  CASE (3)
3993  CALL block_15_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3994  CASE (4)
3995  CALL block_15_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3996  CASE (5)
3997  CALL block_15_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
3998  CASE (6)
3999  CALL block_15_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
4000  CASE (7)
4001  CALL block_15_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
4002  CASE (9)
4003  CALL block_15_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
4004  CASE (10)
4005  CALL block_15_10(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
4006  CASE (11)
4007  CALL block_15_11(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
4008  CASE (15)
4009  CALL block_15_15(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
4010  CASE DEFAULT
4011  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
4012  END SELECT
4013  CASE DEFAULT
4014  CALL block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
4015  END SELECT
4016 #endif
4017  END SUBROUTINE contract_block
4018 
4019 #if defined (__LIBINT)
4020 ! **************************************************************************************************
4021 !> \brief ...
4022 !> \param ma_max ...
4023 !> \param mb_max ...
4024 !> \param mc_max ...
4025 !> \param md_max ...
4026 !> \param kbd ...
4027 !> \param kbc ...
4028 !> \param kad ...
4029 !> \param kac ...
4030 !> \param pbd ...
4031 !> \param pbc ...
4032 !> \param pad ...
4033 !> \param pac ...
4034 !> \param prim ...
4035 !> \param scale ...
4036 ! **************************************************************************************************
4037  SUBROUTINE block_default(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
4038  INTEGER :: ma_max, mb_max, mc_max, md_max
4039  REAL(kind=dp) :: kbd(mb_max*md_max), kbc(mb_max*mc_max), kad(ma_max*md_max), &
4040  kac(ma_max*mc_max), pbd(mb_max*md_max), pbc(mb_max*mc_max), pad(ma_max*md_max), &
4041  pac(ma_max*mc_max), prim(ma_max*mb_max*mc_max*md_max), scale
4042 
4043  INTEGER :: ma, mb, mc, md, p_index
4044  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
4045 
4046  kbd(1:mb_max*md_max) = 0.0_dp
4047  kbc(1:mb_max*mc_max) = 0.0_dp
4048  kad(1:ma_max*md_max) = 0.0_dp
4049  kac(1:ma_max*mc_max) = 0.0_dp
4050  p_index = 0
4051  DO md = 1, md_max
4052  DO mc = 1, mc_max
4053  DO mb = 1, mb_max
4054  ks_bd = 0.0_dp
4055  ks_bc = 0.0_dp
4056  p_bd = pbd((md - 1)*mb_max + mb)
4057  p_bc = pbc((mc - 1)*mb_max + mb)
4058  DO ma = 1, ma_max
4059  p_index = p_index + 1
4060  tmp = scale*prim(p_index)
4061  ks_bc = ks_bc + tmp*pad((md - 1)*ma_max + ma)
4062  ks_bd = ks_bd + tmp*pac((mc - 1)*ma_max + ma)
4063  kad((md - 1)*ma_max + ma) = kad((md - 1)*ma_max + ma) - tmp*p_bc
4064  kac((mc - 1)*ma_max + ma) = kac((mc - 1)*ma_max + ma) - tmp*p_bd
4065  END DO
4066  kbd((md - 1)*mb_max + mb) = kbd((md - 1)*mb_max + mb) - ks_bd
4067  kbc((mc - 1)*mb_max + mb) = kbc((mc - 1)*mb_max + mb) - ks_bc
4068  END DO
4069  END DO
4070  END DO
4071  END SUBROUTINE block_default
4072 ! **************************************************************************************************
4073 !> \brief ...
4074 !> \param kbd ...
4075 !> \param kbc ...
4076 !> \param kad ...
4077 !> \param kac ...
4078 !> \param pbd ...
4079 !> \param pbc ...
4080 !> \param pad ...
4081 !> \param pac ...
4082 !> \param prim ...
4083 !> \param scale ...
4084 ! **************************************************************************************************
4085  SUBROUTINE block_1_1_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
4086  REAL(kind=dp) :: kbd(1*1), kbc(1*1), kad(1*1), kac(1*1), &
4087  pbd(1*1), pbc(1*1), pad(1*1), &
4088  pac(1*1), prim(1*1*1*1), scale
4089 
4090  INTEGER :: ma, mb, mc, md, p_index
4091  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
4092 
4093  kbd(1:1*1) = 0.0_dp
4094  kbc(1:1*1) = 0.0_dp
4095  kad(1:1*1) = 0.0_dp
4096  kac(1:1*1) = 0.0_dp
4097  p_index = 0
4098  DO md = 1, 1
4099  DO mc = 1, 1
4100  DO mb = 1, 1
4101  ks_bd = 0.0_dp
4102  ks_bc = 0.0_dp
4103  p_bd = pbd((md - 1)*1 + mb)
4104  p_bc = pbc((mc - 1)*1 + mb)
4105  DO ma = 1, 1
4106  p_index = p_index + 1
4107  tmp = scale*prim(p_index)
4108  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
4109  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
4110  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
4111  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
4112  END DO
4113  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
4114  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
4115  END DO
4116  END DO
4117  END DO
4118  END SUBROUTINE block_1_1_1_1
4119 ! **************************************************************************************************
4120 !> \brief ...
4121 !> \param kbd ...
4122 !> \param kbc ...
4123 !> \param kad ...
4124 !> \param kac ...
4125 !> \param pbd ...
4126 !> \param pbc ...
4127 !> \param pad ...
4128 !> \param pac ...
4129 !> \param prim ...
4130 !> \param scale ...
4131 ! **************************************************************************************************
4132  SUBROUTINE block_1_1_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
4133  REAL(kind=dp) :: kbd(1*2), kbc(1*1), kad(1*2), kac(1*1), &
4134  pbd(1*2), pbc(1*1), pad(1*2), &
4135  pac(1*1), prim(1*1*1*2), scale
4136 
4137  INTEGER :: ma, mb, mc, md, p_index
4138  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
4139 
4140  kbd(1:1*2) = 0.0_dp
4141  kbc(1:1*1) = 0.0_dp
4142  kad(1:1*2) = 0.0_dp
4143  kac(1:1*1) = 0.0_dp
4144  p_index = 0
4145  DO md = 1, 2
4146  DO mc = 1, 1
4147  DO mb = 1, 1
4148  ks_bd = 0.0_dp
4149  ks_bc = 0.0_dp
4150  p_bd = pbd((md - 1)*1 + mb)
4151  p_bc = pbc((mc - 1)*1 + mb)
4152  DO ma = 1, 1
4153  p_index = p_index + 1
4154  tmp = scale*prim(p_index)
4155  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
4156  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
4157  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
4158  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
4159  END DO
4160  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
4161  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
4162  END DO
4163  END DO
4164  END DO
4165  END SUBROUTINE block_1_1_1_2
4166 ! **************************************************************************************************
4167 !> \brief ...
4168 !> \param kbd ...
4169 !> \param kbc ...
4170 !> \param kad ...
4171 !> \param kac ...
4172 !> \param pbd ...
4173 !> \param pbc ...
4174 !> \param pad ...
4175 !> \param pac ...
4176 !> \param prim ...
4177 !> \param scale ...
4178 ! **************************************************************************************************
4179  SUBROUTINE block_1_1_1_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
4180  REAL(kind=dp) :: kbd(1*3), kbc(1*1), kad(1*3), kac(1*1), &
4181  pbd(1*3), pbc(1*1), pad(1*3), &
4182  pac(1*1), prim(1*1*1*3), scale
4183 
4184  INTEGER :: ma, mb, mc, md, p_index
4185  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
4186 
4187  kbd(1:1*3) = 0.0_dp
4188  kbc(1:1*1) = 0.0_dp
4189  kad(1:1*3) = 0.0_dp
4190  kac(1:1*1) = 0.0_dp
4191  p_index = 0
4192  DO md = 1, 3
4193  DO mc = 1, 1
4194  DO mb = 1, 1
4195  ks_bd = 0.0_dp
4196  ks_bc = 0.0_dp
4197  p_bd = pbd((md - 1)*1 + mb)
4198  p_bc = pbc((mc - 1)*1 + mb)
4199  DO ma = 1, 1
4200  p_index = p_index + 1
4201  tmp = scale*prim(p_index)
4202  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
4203  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
4204  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
4205  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
4206  END DO
4207  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
4208  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
4209  END DO
4210  END DO
4211  END DO
4212  END SUBROUTINE block_1_1_1_3
4213 ! **************************************************************************************************
4214 !> \brief ...
4215 !> \param kbd ...
4216 !> \param kbc ...
4217 !> \param kad ...
4218 !> \param kac ...
4219 !> \param pbd ...
4220 !> \param pbc ...
4221 !> \param pad ...
4222 !> \param pac ...
4223 !> \param prim ...
4224 !> \param scale ...
4225 ! **************************************************************************************************
4226  SUBROUTINE block_1_1_1_4(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
4227  REAL(kind=dp) :: kbd(1*4), kbc(1*1), kad(1*4), kac(1*1), &
4228  pbd(1*4), pbc(1*1), pad(1*4), &
4229  pac(1*1), prim(1*1*1*4), scale
4230 
4231  INTEGER :: ma, mb, mc, md, p_index
4232  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
4233 
4234  kbd(1:1*4) = 0.0_dp
4235  kbc(1:1*1) = 0.0_dp
4236  kad(1:1*4) = 0.0_dp
4237  kac(1:1*1) = 0.0_dp
4238  p_index = 0
4239  DO md = 1, 4
4240  DO mc = 1, 1
4241  DO mb = 1, 1
4242  ks_bd = 0.0_dp
4243  ks_bc = 0.0_dp
4244  p_bd = pbd((md - 1)*1 + mb)
4245  p_bc = pbc((mc - 1)*1 + mb)
4246  DO ma = 1, 1
4247  p_index = p_index + 1
4248  tmp = scale*prim(p_index)
4249  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
4250  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
4251  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
4252  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
4253  END DO
4254  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
4255  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
4256  END DO
4257  END DO
4258  END DO
4259  END SUBROUTINE block_1_1_1_4
4260 ! **************************************************************************************************
4261 !> \brief ...
4262 !> \param kbd ...
4263 !> \param kbc ...
4264 !> \param kad ...
4265 !> \param kac ...
4266 !> \param pbd ...
4267 !> \param pbc ...
4268 !> \param pad ...
4269 !> \param pac ...
4270 !> \param prim ...
4271 !> \param scale ...
4272 ! **************************************************************************************************
4273  SUBROUTINE block_1_1_1_5(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
4274  REAL(kind=dp) :: kbd(1*5), kbc(1*1), kad(1*5), kac(1*1), &
4275  pbd(1*5), pbc(1*1), pad(1*5), &
4276  pac(1*1), prim(1*1*1*5), scale
4277 
4278  INTEGER :: ma, mb, mc, md, p_index
4279  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
4280 
4281  kbd(1:1*5) = 0.0_dp
4282  kbc(1:1*1) = 0.0_dp
4283  kad(1:1*5) = 0.0_dp
4284  kac(1:1*1) = 0.0_dp
4285  p_index = 0
4286  DO md = 1, 5
4287  DO mc = 1, 1
4288  DO mb = 1, 1
4289  ks_bd = 0.0_dp
4290  ks_bc = 0.0_dp
4291  p_bd = pbd((md - 1)*1 + mb)
4292  p_bc = pbc((mc - 1)*1 + mb)
4293  DO ma = 1, 1
4294  p_index = p_index + 1
4295  tmp = scale*prim(p_index)
4296  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
4297  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
4298  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
4299  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
4300  END DO
4301  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
4302  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
4303  END DO
4304  END DO
4305  END DO
4306  END SUBROUTINE block_1_1_1_5
4307 ! **************************************************************************************************
4308 !> \brief ...
4309 !> \param kbd ...
4310 !> \param kbc ...
4311 !> \param kad ...
4312 !> \param kac ...
4313 !> \param pbd ...
4314 !> \param pbc ...
4315 !> \param pad ...
4316 !> \param pac ...
4317 !> \param prim ...
4318 !> \param scale ...
4319 ! **************************************************************************************************
4320  SUBROUTINE block_1_1_1_6(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
4321  REAL(kind=dp) :: kbd(1*6), kbc(1*1), kad(1*6), kac(1*1), &
4322  pbd(1*6), pbc(1*1), pad(1*6), &
4323  pac(1*1), prim(1*1*1*6), scale
4324 
4325  INTEGER :: ma, mb, mc, md, p_index
4326  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
4327 
4328  kbd(1:1*6) = 0.0_dp
4329  kbc(1:1*1) = 0.0_dp
4330  kad(1:1*6) = 0.0_dp
4331  kac(1:1*1) = 0.0_dp
4332  p_index = 0
4333  DO md = 1, 6
4334  DO mc = 1, 1
4335  DO mb = 1, 1
4336  ks_bd = 0.0_dp
4337  ks_bc = 0.0_dp
4338  p_bd = pbd((md - 1)*1 + mb)
4339  p_bc = pbc((mc - 1)*1 + mb)
4340  DO ma = 1, 1
4341  p_index = p_index + 1
4342  tmp = scale*prim(p_index)
4343  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
4344  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
4345  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
4346  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
4347  END DO
4348  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
4349  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
4350  END DO
4351  END DO
4352  END DO
4353  END SUBROUTINE block_1_1_1_6
4354 ! **************************************************************************************************
4355 !> \brief ...
4356 !> \param kbd ...
4357 !> \param kbc ...
4358 !> \param kad ...
4359 !> \param kac ...
4360 !> \param pbd ...
4361 !> \param pbc ...
4362 !> \param pad ...
4363 !> \param pac ...
4364 !> \param prim ...
4365 !> \param scale ...
4366 ! **************************************************************************************************
4367  SUBROUTINE block_1_1_1_7(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
4368  REAL(kind=dp) :: kbd(1*7), kbc(1*1), kad(1*7), kac(1*1), &
4369  pbd(1*7), pbc(1*1), pad(1*7), &
4370  pac(1*1), prim(1*1*1*7), scale
4371 
4372  INTEGER :: ma, mb, mc, md, p_index
4373  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
4374 
4375  kbd(1:1*7) = 0.0_dp
4376  kbc(1:1*1) = 0.0_dp
4377  kad(1:1*7) = 0.0_dp
4378  kac(1:1*1) = 0.0_dp
4379  p_index = 0
4380  DO md = 1, 7
4381  DO mc = 1, 1
4382  DO mb = 1, 1
4383  ks_bd = 0.0_dp
4384  ks_bc = 0.0_dp
4385  p_bd = pbd((md - 1)*1 + mb)
4386  p_bc = pbc((mc - 1)*1 + mb)
4387  DO ma = 1, 1
4388  p_index = p_index + 1
4389  tmp = scale*prim(p_index)
4390  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
4391  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
4392  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
4393  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
4394  END DO
4395  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
4396  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
4397  END DO
4398  END DO
4399  END DO
4400  END SUBROUTINE block_1_1_1_7
4401 ! **************************************************************************************************
4402 !> \brief ...
4403 !> \param kbd ...
4404 !> \param kbc ...
4405 !> \param kad ...
4406 !> \param kac ...
4407 !> \param pbd ...
4408 !> \param pbc ...
4409 !> \param pad ...
4410 !> \param pac ...
4411 !> \param prim ...
4412 !> \param scale ...
4413 ! **************************************************************************************************
4414  SUBROUTINE block_1_1_1_9(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
4415  REAL(kind=dp) :: kbd(1*9), kbc(1*1), kad(1*9), kac(1*1), &
4416  pbd(1*9), pbc(1*1), pad(1*9), &
4417  pac(1*1), prim(1*1*1*9), scale
4418 
4419  INTEGER :: ma, mb, mc, md, p_index
4420  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
4421 
4422  kbd(1:1*9) = 0.0_dp
4423  kbc(1:1*1) = 0.0_dp
4424  kad(1:1*9) = 0.0_dp
4425  kac(1:1*1) = 0.0_dp
4426  p_index = 0
4427  DO md = 1, 9
4428  DO mc = 1, 1
4429  DO mb = 1, 1
4430  ks_bd = 0.0_dp
4431  ks_bc = 0.0_dp
4432  p_bd = pbd((md - 1)*1 + mb)
4433  p_bc = pbc((mc - 1)*1 + mb)
4434  DO ma = 1, 1
4435  p_index = p_index + 1
4436  tmp = scale*prim(p_index)
4437  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
4438  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
4439  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
4440  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
4441  END DO
4442  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
4443  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
4444  END DO
4445  END DO
4446  END DO
4447  END SUBROUTINE block_1_1_1_9
4448 ! **************************************************************************************************
4449 !> \brief ...
4450 !> \param kbd ...
4451 !> \param kbc ...
4452 !> \param kad ...
4453 !> \param kac ...
4454 !> \param pbd ...
4455 !> \param pbc ...
4456 !> \param pad ...
4457 !> \param pac ...
4458 !> \param prim ...
4459 !> \param scale ...
4460 ! **************************************************************************************************
4461  SUBROUTINE block_1_1_1_10(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
4462  REAL(kind=dp) :: kbd(1*10), kbc(1*1), kad(1*10), &
4463  kac(1*1), pbd(1*10), pbc(1*1), &
4464  pad(1*10), pac(1*1), prim(1*1*1*10), &
4465  scale
4466 
4467  INTEGER :: ma, mb, mc, md, p_index
4468  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
4469 
4470  kbd(1:1*10) = 0.0_dp
4471  kbc(1:1*1) = 0.0_dp
4472  kad(1:1*10) = 0.0_dp
4473  kac(1:1*1) = 0.0_dp
4474  p_index = 0
4475  DO md = 1, 10
4476  DO mc = 1, 1
4477  DO mb = 1, 1
4478  ks_bd = 0.0_dp
4479  ks_bc = 0.0_dp
4480  p_bd = pbd((md - 1)*1 + mb)
4481  p_bc = pbc((mc - 1)*1 + mb)
4482  DO ma = 1, 1
4483  p_index = p_index + 1
4484  tmp = scale*prim(p_index)
4485  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
4486  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
4487  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
4488  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
4489  END DO
4490  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
4491  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
4492  END DO
4493  END DO
4494  END DO
4495  END SUBROUTINE block_1_1_1_10
4496 ! **************************************************************************************************
4497 !> \brief ...
4498 !> \param kbd ...
4499 !> \param kbc ...
4500 !> \param kad ...
4501 !> \param kac ...
4502 !> \param pbd ...
4503 !> \param pbc ...
4504 !> \param pad ...
4505 !> \param pac ...
4506 !> \param prim ...
4507 !> \param scale ...
4508 ! **************************************************************************************************
4509  SUBROUTINE block_1_1_1_11(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
4510  REAL(kind=dp) :: kbd(1*11), kbc(1*1), kad(1*11), &
4511  kac(1*1), pbd(1*11), pbc(1*1), &
4512  pad(1*11), pac(1*1), prim(1*1*1*11), &
4513  scale
4514 
4515  INTEGER :: ma, mb, mc, md, p_index
4516  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
4517 
4518  kbd(1:1*11) = 0.0_dp
4519  kbc(1:1*1) = 0.0_dp
4520  kad(1:1*11) = 0.0_dp
4521  kac(1:1*1) = 0.0_dp
4522  p_index = 0
4523  DO md = 1, 11
4524  DO mc = 1, 1
4525  DO mb = 1, 1
4526  ks_bd = 0.0_dp
4527  ks_bc = 0.0_dp
4528  p_bd = pbd((md - 1)*1 + mb)
4529  p_bc = pbc((mc - 1)*1 + mb)
4530  DO ma = 1, 1
4531  p_index = p_index + 1
4532  tmp = scale*prim(p_index)
4533  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
4534  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
4535  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
4536  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
4537  END DO
4538  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
4539  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
4540  END DO
4541  END DO
4542  END DO
4543  END SUBROUTINE block_1_1_1_11
4544 ! **************************************************************************************************
4545 !> \brief ...
4546 !> \param kbd ...
4547 !> \param kbc ...
4548 !> \param kad ...
4549 !> \param kac ...
4550 !> \param pbd ...
4551 !> \param pbc ...
4552 !> \param pad ...
4553 !> \param pac ...
4554 !> \param prim ...
4555 !> \param scale ...
4556 ! **************************************************************************************************
4557  SUBROUTINE block_1_1_1_15(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
4558  REAL(kind=dp) :: kbd(1*15), kbc(1*1), kad(1*15), &
4559  kac(1*1), pbd(1*15), pbc(1*1), &
4560  pad(1*15), pac(1*1), prim(1*1*1*15), &
4561  scale
4562 
4563  INTEGER :: ma, mb, mc, md, p_index
4564  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
4565 
4566  kbd(1:1*15) = 0.0_dp
4567  kbc(1:1*1) = 0.0_dp
4568  kad(1:1*15) = 0.0_dp
4569  kac(1:1*1) = 0.0_dp
4570  p_index = 0
4571  DO md = 1, 15
4572  DO mc = 1, 1
4573  DO mb = 1, 1
4574  ks_bd = 0.0_dp
4575  ks_bc = 0.0_dp
4576  p_bd = pbd((md - 1)*1 + mb)
4577  p_bc = pbc((mc - 1)*1 + mb)
4578  DO ma = 1, 1
4579  p_index = p_index + 1
4580  tmp = scale*prim(p_index)
4581  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
4582  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
4583  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
4584  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
4585  END DO
4586  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
4587  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
4588  END DO
4589  END DO
4590  END DO
4591  END SUBROUTINE block_1_1_1_15
4592 ! **************************************************************************************************
4593 !> \brief ...
4594 !> \param kbd ...
4595 !> \param kbc ...
4596 !> \param kad ...
4597 !> \param kac ...
4598 !> \param pbd ...
4599 !> \param pbc ...
4600 !> \param pad ...
4601 !> \param pac ...
4602 !> \param prim ...
4603 !> \param scale ...
4604 ! **************************************************************************************************
4605  SUBROUTINE block_1_1_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
4606  REAL(kind=dp) :: kbd(1*1), kbc(1*2), kad(1*1), kac(1*2), &
4607  pbd(1*1), pbc(1*2), pad(1*1), &
4608  pac(1*2), prim(1*1*2*1), scale
4609 
4610  INTEGER :: ma, mb, mc, md, p_index
4611  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
4612 
4613  kbd(1:1*1) = 0.0_dp
4614  kbc(1:1*2) = 0.0_dp
4615  kad(1:1*1) = 0.0_dp
4616  kac(1:1*2) = 0.0_dp
4617  p_index = 0
4618  DO md = 1, 1
4619  DO mc = 1, 2
4620  DO mb = 1, 1
4621  ks_bd = 0.0_dp
4622  ks_bc = 0.0_dp
4623  p_bd = pbd((md - 1)*1 + mb)
4624  p_bc = pbc((mc - 1)*1 + mb)
4625  DO ma = 1, 1
4626  p_index = p_index + 1
4627  tmp = scale*prim(p_index)
4628  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
4629  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
4630  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
4631  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
4632  END DO
4633  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
4634  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
4635  END DO
4636  END DO
4637  END DO
4638  END SUBROUTINE block_1_1_2_1
4639 ! **************************************************************************************************
4640 !> \brief ...
4641 !> \param kbd ...
4642 !> \param kbc ...
4643 !> \param kad ...
4644 !> \param kac ...
4645 !> \param pbd ...
4646 !> \param pbc ...
4647 !> \param pad ...
4648 !> \param pac ...
4649 !> \param prim ...
4650 !> \param scale ...
4651 ! **************************************************************************************************
4652  SUBROUTINE block_1_1_2_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
4653  REAL(kind=dp) :: kbd(1*2), kbc(1*2), kad(1*2), kac(1*2), &
4654  pbd(1*2), pbc(1*2), pad(1*2), &
4655  pac(1*2), prim(1*1*2*2), scale
4656 
4657  INTEGER :: ma, mb, mc, md, p_index
4658  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
4659 
4660  kbd(1:1*2) = 0.0_dp
4661  kbc(1:1*2) = 0.0_dp
4662  kad(1:1*2) = 0.0_dp
4663  kac(1:1*2) = 0.0_dp
4664  p_index = 0
4665  DO md = 1, 2
4666  DO mc = 1, 2
4667  DO mb = 1, 1
4668  ks_bd = 0.0_dp
4669  ks_bc = 0.0_dp
4670  p_bd = pbd((md - 1)*1 + mb)
4671  p_bc = pbc((mc - 1)*1 + mb)
4672  DO ma = 1, 1
4673  p_index = p_index + 1
4674  tmp = scale*prim(p_index)
4675  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
4676  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
4677  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
4678  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
4679  END DO
4680  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
4681  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
4682  END DO
4683  END DO
4684  END DO
4685  END SUBROUTINE block_1_1_2_2
4686 ! **************************************************************************************************
4687 !> \brief ...
4688 !> \param kbd ...
4689 !> \param kbc ...
4690 !> \param kad ...
4691 !> \param kac ...
4692 !> \param pbd ...
4693 !> \param pbc ...
4694 !> \param pad ...
4695 !> \param pac ...
4696 !> \param prim ...
4697 !> \param scale ...
4698 ! **************************************************************************************************
4699  SUBROUTINE block_1_1_2_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
4700  REAL(kind=dp) :: kbd(1*3), kbc(1*2), kad(1*3), kac(1*2), &
4701  pbd(1*3), pbc(1*2), pad(1*3), &
4702  pac(1*2), prim(1*1*2*3), scale
4703 
4704  INTEGER :: ma, mb, mc, md, p_index
4705  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
4706 
4707  kbd(1:1*3) = 0.0_dp
4708  kbc(1:1*2) = 0.0_dp
4709  kad(1:1*3) = 0.0_dp
4710  kac(1:1*2) = 0.0_dp
4711  p_index = 0
4712  DO md = 1, 3
4713  DO mc = 1, 2
4714  DO mb = 1, 1
4715  ks_bd = 0.0_dp
4716  ks_bc = 0.0_dp
4717  p_bd = pbd((md - 1)*1 + mb)
4718  p_bc = pbc((mc - 1)*1 + mb)
4719  DO ma = 1, 1
4720  p_index = p_index + 1
4721  tmp = scale*prim(p_index)
4722  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
4723  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
4724  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
4725  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
4726  END DO
4727  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
4728  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
4729  END DO
4730  END DO
4731  END DO
4732  END SUBROUTINE block_1_1_2_3
4733 ! **************************************************************************************************
4734 !> \brief ...
4735 !> \param kbd ...
4736 !> \param kbc ...
4737 !> \param kad ...
4738 !> \param kac ...
4739 !> \param pbd ...
4740 !> \param pbc ...
4741 !> \param pad ...
4742 !> \param pac ...
4743 !> \param prim ...
4744 !> \param scale ...
4745 ! **************************************************************************************************
4746  SUBROUTINE block_1_1_2_4(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
4747  REAL(kind=dp) :: kbd(1*4), kbc(1*2), kad(1*4), kac(1*2), &
4748  pbd(1*4), pbc(1*2), pad(1*4), &
4749  pac(1*2), prim(1*1*2*4), scale
4750 
4751  INTEGER :: ma, mb, mc, md, p_index
4752  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
4753 
4754  kbd(1:1*4) = 0.0_dp
4755  kbc(1:1*2) = 0.0_dp
4756  kad(1:1*4) = 0.0_dp
4757  kac(1:1*2) = 0.0_dp
4758  p_index = 0
4759  DO md = 1, 4
4760  DO mc = 1, 2
4761  DO mb = 1, 1
4762  ks_bd = 0.0_dp
4763  ks_bc = 0.0_dp
4764  p_bd = pbd((md - 1)*1 + mb)
4765  p_bc = pbc((mc - 1)*1 + mb)
4766  DO ma = 1, 1
4767  p_index = p_index + 1
4768  tmp = scale*prim(p_index)
4769  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
4770  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
4771  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
4772  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
4773  END DO
4774  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
4775  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
4776  END DO
4777  END DO
4778  END DO
4779  END SUBROUTINE block_1_1_2_4
4780 ! **************************************************************************************************
4781 !> \brief ...
4782 !> \param kbd ...
4783 !> \param kbc ...
4784 !> \param kad ...
4785 !> \param kac ...
4786 !> \param pbd ...
4787 !> \param pbc ...
4788 !> \param pad ...
4789 !> \param pac ...
4790 !> \param prim ...
4791 !> \param scale ...
4792 ! **************************************************************************************************
4793  SUBROUTINE block_1_1_2_5(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
4794  REAL(kind=dp) :: kbd(1*5), kbc(1*2), kad(1*5), kac(1*2), &
4795  pbd(1*5), pbc(1*2), pad(1*5), &
4796  pac(1*2), prim(1*1*2*5), scale
4797 
4798  INTEGER :: ma, mb, mc, md, p_index
4799  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
4800 
4801  kbd(1:1*5) = 0.0_dp
4802  kbc(1:1*2) = 0.0_dp
4803  kad(1:1*5) = 0.0_dp
4804  kac(1:1*2) = 0.0_dp
4805  p_index = 0
4806  DO md = 1, 5
4807  DO mc = 1, 2
4808  DO mb = 1, 1
4809  ks_bd = 0.0_dp
4810  ks_bc = 0.0_dp
4811  p_bd = pbd((md - 1)*1 + mb)
4812  p_bc = pbc((mc - 1)*1 + mb)
4813  DO ma = 1, 1
4814  p_index = p_index + 1
4815  tmp = scale*prim(p_index)
4816  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
4817  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
4818  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
4819  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
4820  END DO
4821  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
4822  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
4823  END DO
4824  END DO
4825  END DO
4826  END SUBROUTINE block_1_1_2_5
4827 ! **************************************************************************************************
4828 !> \brief ...
4829 !> \param kbd ...
4830 !> \param kbc ...
4831 !> \param kad ...
4832 !> \param kac ...
4833 !> \param pbd ...
4834 !> \param pbc ...
4835 !> \param pad ...
4836 !> \param pac ...
4837 !> \param prim ...
4838 !> \param scale ...
4839 ! **************************************************************************************************
4840  SUBROUTINE block_1_1_2_6(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
4841  REAL(kind=dp) :: kbd(1*6), kbc(1*2), kad(1*6), kac(1*2), &
4842  pbd(1*6), pbc(1*2), pad(1*6), &
4843  pac(1*2), prim(1*1*2*6), scale
4844 
4845  INTEGER :: ma, mb, mc, md, p_index
4846  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
4847 
4848  kbd(1:1*6) = 0.0_dp
4849  kbc(1:1*2) = 0.0_dp
4850  kad(1:1*6) = 0.0_dp
4851  kac(1:1*2) = 0.0_dp
4852  p_index = 0
4853  DO md = 1, 6
4854  DO mc = 1, 2
4855  DO mb = 1, 1
4856  ks_bd = 0.0_dp
4857  ks_bc = 0.0_dp
4858  p_bd = pbd((md - 1)*1 + mb)
4859  p_bc = pbc((mc - 1)*1 + mb)
4860  DO ma = 1, 1
4861  p_index = p_index + 1
4862  tmp = scale*prim(p_index)
4863  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
4864  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
4865  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
4866  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
4867  END DO
4868  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
4869  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
4870  END DO
4871  END DO
4872  END DO
4873  END SUBROUTINE block_1_1_2_6
4874 ! **************************************************************************************************
4875 !> \brief ...
4876 !> \param kbd ...
4877 !> \param kbc ...
4878 !> \param kad ...
4879 !> \param kac ...
4880 !> \param pbd ...
4881 !> \param pbc ...
4882 !> \param pad ...
4883 !> \param pac ...
4884 !> \param prim ...
4885 !> \param scale ...
4886 ! **************************************************************************************************
4887  SUBROUTINE block_1_1_2_7(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
4888  REAL(kind=dp) :: kbd(1*7), kbc(1*2), kad(1*7), kac(1*2), &
4889  pbd(1*7), pbc(1*2), pad(1*7), &
4890  pac(1*2), prim(1*1*2*7), scale
4891 
4892  INTEGER :: ma, mb, mc, md, p_index
4893  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
4894 
4895  kbd(1:1*7) = 0.0_dp
4896  kbc(1:1*2) = 0.0_dp
4897  kad(1:1*7) = 0.0_dp
4898  kac(1:1*2) = 0.0_dp
4899  p_index = 0
4900  DO md = 1, 7
4901  DO mc = 1, 2
4902  DO mb = 1, 1
4903  ks_bd = 0.0_dp
4904  ks_bc = 0.0_dp
4905  p_bd = pbd((md - 1)*1 + mb)
4906  p_bc = pbc((mc - 1)*1 + mb)
4907  DO ma = 1, 1
4908  p_index = p_index + 1
4909  tmp = scale*prim(p_index)
4910  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
4911  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
4912  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
4913  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
4914  END DO
4915  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
4916  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
4917  END DO
4918  END DO
4919  END DO
4920  END SUBROUTINE block_1_1_2_7
4921 ! **************************************************************************************************
4922 !> \brief ...
4923 !> \param kbd ...
4924 !> \param kbc ...
4925 !> \param kad ...
4926 !> \param kac ...
4927 !> \param pbd ...
4928 !> \param pbc ...
4929 !> \param pad ...
4930 !> \param pac ...
4931 !> \param prim ...
4932 !> \param scale ...
4933 ! **************************************************************************************************
4934  SUBROUTINE block_1_1_2_9(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
4935  REAL(kind=dp) :: kbd(1*9), kbc(1*2), kad(1*9), kac(1*2), &
4936  pbd(1*9), pbc(1*2), pad(1*9), &
4937  pac(1*2), prim(1*1*2*9), scale
4938 
4939  INTEGER :: ma, mb, mc, md, p_index
4940  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
4941 
4942  kbd(1:1*9) = 0.0_dp
4943  kbc(1:1*2) = 0.0_dp
4944  kad(1:1*9) = 0.0_dp
4945  kac(1:1*2) = 0.0_dp
4946  p_index = 0
4947  DO md = 1, 9
4948  DO mc = 1, 2
4949  DO mb = 1, 1
4950  ks_bd = 0.0_dp
4951  ks_bc = 0.0_dp
4952  p_bd = pbd((md - 1)*1 + mb)
4953  p_bc = pbc((mc - 1)*1 + mb)
4954  DO ma = 1, 1
4955  p_index = p_index + 1
4956  tmp = scale*prim(p_index)
4957  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
4958  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
4959  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
4960  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
4961  END DO
4962  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
4963  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
4964  END DO
4965  END DO
4966  END DO
4967  END SUBROUTINE block_1_1_2_9
4968 ! **************************************************************************************************
4969 !> \brief ...
4970 !> \param md_max ...
4971 !> \param kbd ...
4972 !> \param kbc ...
4973 !> \param kad ...
4974 !> \param kac ...
4975 !> \param pbd ...
4976 !> \param pbc ...
4977 !> \param pad ...
4978 !> \param pac ...
4979 !> \param prim ...
4980 !> \param scale ...
4981 ! **************************************************************************************************
4982  SUBROUTINE block_1_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
4983  INTEGER :: md_max
4984  REAL(kind=dp) :: kbd(1*md_max), kbc(1*2), kad(1*md_max), kac(1*2), pbd(1*md_max), pbc(1*2), &
4985  pad(1*md_max), pac(1*2), prim(1*1*2*md_max), scale
4986 
4987  INTEGER :: ma, mb, mc, md, p_index
4988  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
4989 
4990  kbd(1:1*md_max) = 0.0_dp
4991  kbc(1:1*2) = 0.0_dp
4992  kad(1:1*md_max) = 0.0_dp
4993  kac(1:1*2) = 0.0_dp
4994  p_index = 0
4995  DO md = 1, md_max
4996  DO mc = 1, 2
4997  DO mb = 1, 1
4998  ks_bd = 0.0_dp
4999  ks_bc = 0.0_dp
5000  p_bd = pbd((md - 1)*1 + mb)
5001  p_bc = pbc((mc - 1)*1 + mb)
5002  DO ma = 1, 1
5003  p_index = p_index + 1
5004  tmp = scale*prim(p_index)
5005  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
5006  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
5007  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
5008  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
5009  END DO
5010  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
5011  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
5012  END DO
5013  END DO
5014  END DO
5015  END SUBROUTINE block_1_1_2
5016 ! **************************************************************************************************
5017 !> \brief ...
5018 !> \param kbd ...
5019 !> \param kbc ...
5020 !> \param kad ...
5021 !> \param kac ...
5022 !> \param pbd ...
5023 !> \param pbc ...
5024 !> \param pad ...
5025 !> \param pac ...
5026 !> \param prim ...
5027 !> \param scale ...
5028 ! **************************************************************************************************
5029  SUBROUTINE block_1_1_3_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
5030  REAL(kind=dp) :: kbd(1*1), kbc(1*3), kad(1*1), kac(1*3), &
5031  pbd(1*1), pbc(1*3), pad(1*1), &
5032  pac(1*3), prim(1*1*3*1), scale
5033 
5034  INTEGER :: ma, mb, mc, md, p_index
5035  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
5036 
5037  kbd(1:1*1) = 0.0_dp
5038  kbc(1:1*3) = 0.0_dp
5039  kad(1:1*1) = 0.0_dp
5040  kac(1:1*3) = 0.0_dp
5041  p_index = 0
5042  DO md = 1, 1
5043  DO mc = 1, 3
5044  DO mb = 1, 1
5045  ks_bd = 0.0_dp
5046  ks_bc = 0.0_dp
5047  p_bd = pbd((md - 1)*1 + mb)
5048  p_bc = pbc((mc - 1)*1 + mb)
5049  DO ma = 1, 1
5050  p_index = p_index + 1
5051  tmp = scale*prim(p_index)
5052  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
5053  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
5054  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
5055  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
5056  END DO
5057  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
5058  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
5059  END DO
5060  END DO
5061  END DO
5062  END SUBROUTINE block_1_1_3_1
5063 ! **************************************************************************************************
5064 !> \brief ...
5065 !> \param kbd ...
5066 !> \param kbc ...
5067 !> \param kad ...
5068 !> \param kac ...
5069 !> \param pbd ...
5070 !> \param pbc ...
5071 !> \param pad ...
5072 !> \param pac ...
5073 !> \param prim ...
5074 !> \param scale ...
5075 ! **************************************************************************************************
5076  SUBROUTINE block_1_1_3_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
5077  REAL(kind=dp) :: kbd(1*2), kbc(1*3), kad(1*2), kac(1*3), &
5078  pbd(1*2), pbc(1*3), pad(1*2), &
5079  pac(1*3), prim(1*1*3*2), scale
5080 
5081  INTEGER :: ma, mb, mc, md, p_index
5082  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
5083 
5084  kbd(1:1*2) = 0.0_dp
5085  kbc(1:1*3) = 0.0_dp
5086  kad(1:1*2) = 0.0_dp
5087  kac(1:1*3) = 0.0_dp
5088  p_index = 0
5089  DO md = 1, 2
5090  DO mc = 1, 3
5091  DO mb = 1, 1
5092  ks_bd = 0.0_dp
5093  ks_bc = 0.0_dp
5094  p_bd = pbd((md - 1)*1 + mb)
5095  p_bc = pbc((mc - 1)*1 + mb)
5096  DO ma = 1, 1
5097  p_index = p_index + 1
5098  tmp = scale*prim(p_index)
5099  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
5100  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
5101  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
5102  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
5103  END DO
5104  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
5105  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
5106  END DO
5107  END DO
5108  END DO
5109  END SUBROUTINE block_1_1_3_2
5110 ! **************************************************************************************************
5111 !> \brief ...
5112 !> \param kbd ...
5113 !> \param kbc ...
5114 !> \param kad ...
5115 !> \param kac ...
5116 !> \param pbd ...
5117 !> \param pbc ...
5118 !> \param pad ...
5119 !> \param pac ...
5120 !> \param prim ...
5121 !> \param scale ...
5122 ! **************************************************************************************************
5123  SUBROUTINE block_1_1_3_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
5124  REAL(kind=dp) :: kbd(1*3), kbc(1*3), kad(1*3), kac(1*3), &
5125  pbd(1*3), pbc(1*3), pad(1*3), &
5126  pac(1*3), prim(1*1*3*3), scale
5127 
5128  INTEGER :: ma, mb, mc, md, p_index
5129  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
5130 
5131  kbd(1:1*3) = 0.0_dp
5132  kbc(1:1*3) = 0.0_dp
5133  kad(1:1*3) = 0.0_dp
5134  kac(1:1*3) = 0.0_dp
5135  p_index = 0
5136  DO md = 1, 3
5137  DO mc = 1, 3
5138  DO mb = 1, 1
5139  ks_bd = 0.0_dp
5140  ks_bc = 0.0_dp
5141  p_bd = pbd((md - 1)*1 + mb)
5142  p_bc = pbc((mc - 1)*1 + mb)
5143  DO ma = 1, 1
5144  p_index = p_index + 1
5145  tmp = scale*prim(p_index)
5146  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
5147  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
5148  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
5149  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
5150  END DO
5151  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
5152  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
5153  END DO
5154  END DO
5155  END DO
5156  END SUBROUTINE block_1_1_3_3
5157 ! **************************************************************************************************
5158 !> \brief ...
5159 !> \param kbd ...
5160 !> \param kbc ...
5161 !> \param kad ...
5162 !> \param kac ...
5163 !> \param pbd ...
5164 !> \param pbc ...
5165 !> \param pad ...
5166 !> \param pac ...
5167 !> \param prim ...
5168 !> \param scale ...
5169 ! **************************************************************************************************
5170  SUBROUTINE block_1_1_3_4(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
5171  REAL(kind=dp) :: kbd(1*4), kbc(1*3), kad(1*4), kac(1*3), &
5172  pbd(1*4), pbc(1*3), pad(1*4), &
5173  pac(1*3), prim(1*1*3*4), scale
5174 
5175  INTEGER :: ma, mb, mc, md, p_index
5176  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
5177 
5178  kbd(1:1*4) = 0.0_dp
5179  kbc(1:1*3) = 0.0_dp
5180  kad(1:1*4) = 0.0_dp
5181  kac(1:1*3) = 0.0_dp
5182  p_index = 0
5183  DO md = 1, 4
5184  DO mc = 1, 3
5185  DO mb = 1, 1
5186  ks_bd = 0.0_dp
5187  ks_bc = 0.0_dp
5188  p_bd = pbd((md - 1)*1 + mb)
5189  p_bc = pbc((mc - 1)*1 + mb)
5190  DO ma = 1, 1
5191  p_index = p_index + 1
5192  tmp = scale*prim(p_index)
5193  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
5194  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
5195  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
5196  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
5197  END DO
5198  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
5199  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
5200  END DO
5201  END DO
5202  END DO
5203  END SUBROUTINE block_1_1_3_4
5204 ! **************************************************************************************************
5205 !> \brief ...
5206 !> \param kbd ...
5207 !> \param kbc ...
5208 !> \param kad ...
5209 !> \param kac ...
5210 !> \param pbd ...
5211 !> \param pbc ...
5212 !> \param pad ...
5213 !> \param pac ...
5214 !> \param prim ...
5215 !> \param scale ...
5216 ! **************************************************************************************************
5217  SUBROUTINE block_1_1_3_5(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
5218  REAL(kind=dp) :: kbd(1*5), kbc(1*3), kad(1*5), kac(1*3), &
5219  pbd(1*5), pbc(1*3), pad(1*5), &
5220  pac(1*3), prim(1*1*3*5), scale
5221 
5222  INTEGER :: ma, mb, mc, md, p_index
5223  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
5224 
5225  kbd(1:1*5) = 0.0_dp
5226  kbc(1:1*3) = 0.0_dp
5227  kad(1:1*5) = 0.0_dp
5228  kac(1:1*3) = 0.0_dp
5229  p_index = 0
5230  DO md = 1, 5
5231  DO mc = 1, 3
5232  DO mb = 1, 1
5233  ks_bd = 0.0_dp
5234  ks_bc = 0.0_dp
5235  p_bd = pbd((md - 1)*1 + mb)
5236  p_bc = pbc((mc - 1)*1 + mb)
5237  DO ma = 1, 1
5238  p_index = p_index + 1
5239  tmp = scale*prim(p_index)
5240  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
5241  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
5242  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
5243  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
5244  END DO
5245  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
5246  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
5247  END DO
5248  END DO
5249  END DO
5250  END SUBROUTINE block_1_1_3_5
5251 ! **************************************************************************************************
5252 !> \brief ...
5253 !> \param kbd ...
5254 !> \param kbc ...
5255 !> \param kad ...
5256 !> \param kac ...
5257 !> \param pbd ...
5258 !> \param pbc ...
5259 !> \param pad ...
5260 !> \param pac ...
5261 !> \param prim ...
5262 !> \param scale ...
5263 ! **************************************************************************************************
5264  SUBROUTINE block_1_1_3_6(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
5265  REAL(kind=dp) :: kbd(1*6), kbc(1*3), kad(1*6), kac(1*3), &
5266  pbd(1*6), pbc(1*3), pad(1*6), &
5267  pac(1*3), prim(1*1*3*6), scale
5268 
5269  INTEGER :: ma, mb, mc, md, p_index
5270  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
5271 
5272  kbd(1:1*6) = 0.0_dp
5273  kbc(1:1*3) = 0.0_dp
5274  kad(1:1*6) = 0.0_dp
5275  kac(1:1*3) = 0.0_dp
5276  p_index = 0
5277  DO md = 1, 6
5278  DO mc = 1, 3
5279  DO mb = 1, 1
5280  ks_bd = 0.0_dp
5281  ks_bc = 0.0_dp
5282  p_bd = pbd((md - 1)*1 + mb)
5283  p_bc = pbc((mc - 1)*1 + mb)
5284  DO ma = 1, 1
5285  p_index = p_index + 1
5286  tmp = scale*prim(p_index)
5287  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
5288  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
5289  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
5290  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
5291  END DO
5292  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
5293  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
5294  END DO
5295  END DO
5296  END DO
5297  END SUBROUTINE block_1_1_3_6
5298 ! **************************************************************************************************
5299 !> \brief ...
5300 !> \param md_max ...
5301 !> \param kbd ...
5302 !> \param kbc ...
5303 !> \param kad ...
5304 !> \param kac ...
5305 !> \param pbd ...
5306 !> \param pbc ...
5307 !> \param pad ...
5308 !> \param pac ...
5309 !> \param prim ...
5310 !> \param scale ...
5311 ! **************************************************************************************************
5312  SUBROUTINE block_1_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
5313  INTEGER :: md_max
5314  REAL(kind=dp) :: kbd(1*md_max), kbc(1*3), kad(1*md_max), kac(1*3), pbd(1*md_max), pbc(1*3), &
5315  pad(1*md_max), pac(1*3), prim(1*1*3*md_max), scale
5316 
5317  INTEGER :: ma, mb, mc, md, p_index
5318  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
5319 
5320  kbd(1:1*md_max) = 0.0_dp
5321  kbc(1:1*3) = 0.0_dp
5322  kad(1:1*md_max) = 0.0_dp
5323  kac(1:1*3) = 0.0_dp
5324  p_index = 0
5325  DO md = 1, md_max
5326  DO mc = 1, 3
5327  DO mb = 1, 1
5328  ks_bd = 0.0_dp
5329  ks_bc = 0.0_dp
5330  p_bd = pbd((md - 1)*1 + mb)
5331  p_bc = pbc((mc - 1)*1 + mb)
5332  DO ma = 1, 1
5333  p_index = p_index + 1
5334  tmp = scale*prim(p_index)
5335  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
5336  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
5337  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
5338  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
5339  END DO
5340  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
5341  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
5342  END DO
5343  END DO
5344  END DO
5345  END SUBROUTINE block_1_1_3
5346 ! **************************************************************************************************
5347 !> \brief ...
5348 !> \param kbd ...
5349 !> \param kbc ...
5350 !> \param kad ...
5351 !> \param kac ...
5352 !> \param pbd ...
5353 !> \param pbc ...
5354 !> \param pad ...
5355 !> \param pac ...
5356 !> \param prim ...
5357 !> \param scale ...
5358 ! **************************************************************************************************
5359  SUBROUTINE block_1_1_4_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
5360  REAL(kind=dp) :: kbd(1*1), kbc(1*4), kad(1*1), kac(1*4), &
5361  pbd(1*1), pbc(1*4), pad(1*1), &
5362  pac(1*4), prim(1*1*4*1), scale
5363 
5364  INTEGER :: ma, mb, mc, md, p_index
5365  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
5366 
5367  kbd(1:1*1) = 0.0_dp
5368  kbc(1:1*4) = 0.0_dp
5369  kad(1:1*1) = 0.0_dp
5370  kac(1:1*4) = 0.0_dp
5371  p_index = 0
5372  DO md = 1, 1
5373  DO mc = 1, 4
5374  DO mb = 1, 1
5375  ks_bd = 0.0_dp
5376  ks_bc = 0.0_dp
5377  p_bd = pbd((md - 1)*1 + mb)
5378  p_bc = pbc((mc - 1)*1 + mb)
5379  DO ma = 1, 1
5380  p_index = p_index + 1
5381  tmp = scale*prim(p_index)
5382  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
5383  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
5384  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
5385  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
5386  END DO
5387  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
5388  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
5389  END DO
5390  END DO
5391  END DO
5392  END SUBROUTINE block_1_1_4_1
5393 ! **************************************************************************************************
5394 !> \brief ...
5395 !> \param kbd ...
5396 !> \param kbc ...
5397 !> \param kad ...
5398 !> \param kac ...
5399 !> \param pbd ...
5400 !> \param pbc ...
5401 !> \param pad ...
5402 !> \param pac ...
5403 !> \param prim ...
5404 !> \param scale ...
5405 ! **************************************************************************************************
5406  SUBROUTINE block_1_1_4_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
5407  REAL(kind=dp) :: kbd(1*2), kbc(1*4), kad(1*2), kac(1*4), &
5408  pbd(1*2), pbc(1*4), pad(1*2), &
5409  pac(1*4), prim(1*1*4*2), scale
5410 
5411  INTEGER :: ma, mb, mc, md, p_index
5412  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
5413 
5414  kbd(1:1*2) = 0.0_dp
5415  kbc(1:1*4) = 0.0_dp
5416  kad(1:1*2) = 0.0_dp
5417  kac(1:1*4) = 0.0_dp
5418  p_index = 0
5419  DO md = 1, 2
5420  DO mc = 1, 4
5421  DO mb = 1, 1
5422  ks_bd = 0.0_dp
5423  ks_bc = 0.0_dp
5424  p_bd = pbd((md - 1)*1 + mb)
5425  p_bc = pbc((mc - 1)*1 + mb)
5426  DO ma = 1, 1
5427  p_index = p_index + 1
5428  tmp = scale*prim(p_index)
5429  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
5430  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
5431  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
5432  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
5433  END DO
5434  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
5435  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
5436  END DO
5437  END DO
5438  END DO
5439  END SUBROUTINE block_1_1_4_2
5440 ! **************************************************************************************************
5441 !> \brief ...
5442 !> \param kbd ...
5443 !> \param kbc ...
5444 !> \param kad ...
5445 !> \param kac ...
5446 !> \param pbd ...
5447 !> \param pbc ...
5448 !> \param pad ...
5449 !> \param pac ...
5450 !> \param prim ...
5451 !> \param scale ...
5452 ! **************************************************************************************************
5453  SUBROUTINE block_1_1_4_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
5454  REAL(kind=dp) :: kbd(1*3), kbc(1*4), kad(1*3), kac(1*4), &
5455  pbd(1*3), pbc(1*4), pad(1*3), &
5456  pac(1*4), prim(1*1*4*3), scale
5457 
5458  INTEGER :: ma, mb, mc, md, p_index
5459  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
5460 
5461  kbd(1:1*3) = 0.0_dp
5462  kbc(1:1*4) = 0.0_dp
5463  kad(1:1*3) = 0.0_dp
5464  kac(1:1*4) = 0.0_dp
5465  p_index = 0
5466  DO md = 1, 3
5467  DO mc = 1, 4
5468  DO mb = 1, 1
5469  ks_bd = 0.0_dp
5470  ks_bc = 0.0_dp
5471  p_bd = pbd((md - 1)*1 + mb)
5472  p_bc = pbc((mc - 1)*1 + mb)
5473  DO ma = 1, 1
5474  p_index = p_index + 1
5475  tmp = scale*prim(p_index)
5476  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
5477  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
5478  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
5479  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
5480  END DO
5481  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
5482  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
5483  END DO
5484  END DO
5485  END DO
5486  END SUBROUTINE block_1_1_4_3
5487 ! **************************************************************************************************
5488 !> \brief ...
5489 !> \param kbd ...
5490 !> \param kbc ...
5491 !> \param kad ...
5492 !> \param kac ...
5493 !> \param pbd ...
5494 !> \param pbc ...
5495 !> \param pad ...
5496 !> \param pac ...
5497 !> \param prim ...
5498 !> \param scale ...
5499 ! **************************************************************************************************
5500  SUBROUTINE block_1_1_4_4(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
5501  REAL(kind=dp) :: kbd(1*4), kbc(1*4), kad(1*4), kac(1*4), &
5502  pbd(1*4), pbc(1*4), pad(1*4), &
5503  pac(1*4), prim(1*1*4*4), scale
5504 
5505  INTEGER :: ma, mb, mc, md, p_index
5506  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
5507 
5508  kbd(1:1*4) = 0.0_dp
5509  kbc(1:1*4) = 0.0_dp
5510  kad(1:1*4) = 0.0_dp
5511  kac(1:1*4) = 0.0_dp
5512  p_index = 0
5513  DO md = 1, 4
5514  DO mc = 1, 4
5515  DO mb = 1, 1
5516  ks_bd = 0.0_dp
5517  ks_bc = 0.0_dp
5518  p_bd = pbd((md - 1)*1 + mb)
5519  p_bc = pbc((mc - 1)*1 + mb)
5520  DO ma = 1, 1
5521  p_index = p_index + 1
5522  tmp = scale*prim(p_index)
5523  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
5524  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
5525  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
5526  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
5527  END DO
5528  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
5529  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
5530  END DO
5531  END DO
5532  END DO
5533  END SUBROUTINE block_1_1_4_4
5534 ! **************************************************************************************************
5535 !> \brief ...
5536 !> \param md_max ...
5537 !> \param kbd ...
5538 !> \param kbc ...
5539 !> \param kad ...
5540 !> \param kac ...
5541 !> \param pbd ...
5542 !> \param pbc ...
5543 !> \param pad ...
5544 !> \param pac ...
5545 !> \param prim ...
5546 !> \param scale ...
5547 ! **************************************************************************************************
5548  SUBROUTINE block_1_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
5549  INTEGER :: md_max
5550  REAL(kind=dp) :: kbd(1*md_max), kbc(1*4), kad(1*md_max), kac(1*4), pbd(1*md_max), pbc(1*4), &
5551  pad(1*md_max), pac(1*4), prim(1*1*4*md_max), scale
5552 
5553  INTEGER :: ma, mb, mc, md, p_index
5554  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
5555 
5556  kbd(1:1*md_max) = 0.0_dp
5557  kbc(1:1*4) = 0.0_dp
5558  kad(1:1*md_max) = 0.0_dp
5559  kac(1:1*4) = 0.0_dp
5560  p_index = 0
5561  DO md = 1, md_max
5562  DO mc = 1, 4
5563  DO mb = 1, 1
5564  ks_bd = 0.0_dp
5565  ks_bc = 0.0_dp
5566  p_bd = pbd((md - 1)*1 + mb)
5567  p_bc = pbc((mc - 1)*1 + mb)
5568  DO ma = 1, 1
5569  p_index = p_index + 1
5570  tmp = scale*prim(p_index)
5571  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
5572  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
5573  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
5574  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
5575  END DO
5576  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
5577  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
5578  END DO
5579  END DO
5580  END DO
5581  END SUBROUTINE block_1_1_4
5582 ! **************************************************************************************************
5583 !> \brief ...
5584 !> \param kbd ...
5585 !> \param kbc ...
5586 !> \param kad ...
5587 !> \param kac ...
5588 !> \param pbd ...
5589 !> \param pbc ...
5590 !> \param pad ...
5591 !> \param pac ...
5592 !> \param prim ...
5593 !> \param scale ...
5594 ! **************************************************************************************************
5595  SUBROUTINE block_1_1_5_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
5596  REAL(kind=dp) :: kbd(1*1), kbc(1*5), kad(1*1), kac(1*5), &
5597  pbd(1*1), pbc(1*5), pad(1*1), &
5598  pac(1*5), prim(1*1*5*1), scale
5599 
5600  INTEGER :: ma, mb, mc, md, p_index
5601  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
5602 
5603  kbd(1:1*1) = 0.0_dp
5604  kbc(1:1*5) = 0.0_dp
5605  kad(1:1*1) = 0.0_dp
5606  kac(1:1*5) = 0.0_dp
5607  p_index = 0
5608  DO md = 1, 1
5609  DO mc = 1, 5
5610  DO mb = 1, 1
5611  ks_bd = 0.0_dp
5612  ks_bc = 0.0_dp
5613  p_bd = pbd((md - 1)*1 + mb)
5614  p_bc = pbc((mc - 1)*1 + mb)
5615  DO ma = 1, 1
5616  p_index = p_index + 1
5617  tmp = scale*prim(p_index)
5618  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
5619  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
5620  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
5621  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
5622  END DO
5623  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
5624  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
5625  END DO
5626  END DO
5627  END DO
5628  END SUBROUTINE block_1_1_5_1
5629 ! **************************************************************************************************
5630 !> \brief ...
5631 !> \param kbd ...
5632 !> \param kbc ...
5633 !> \param kad ...
5634 !> \param kac ...
5635 !> \param pbd ...
5636 !> \param pbc ...
5637 !> \param pad ...
5638 !> \param pac ...
5639 !> \param prim ...
5640 !> \param scale ...
5641 ! **************************************************************************************************
5642  SUBROUTINE block_1_1_5_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
5643  REAL(kind=dp) :: kbd(1*2), kbc(1*5), kad(1*2), kac(1*5), &
5644  pbd(1*2), pbc(1*5), pad(1*2), &
5645  pac(1*5), prim(1*1*5*2), scale
5646 
5647  INTEGER :: ma, mb, mc, md, p_index
5648  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
5649 
5650  kbd(1:1*2) = 0.0_dp
5651  kbc(1:1*5) = 0.0_dp
5652  kad(1:1*2) = 0.0_dp
5653  kac(1:1*5) = 0.0_dp
5654  p_index = 0
5655  DO md = 1, 2
5656  DO mc = 1, 5
5657  DO mb = 1, 1
5658  ks_bd = 0.0_dp
5659  ks_bc = 0.0_dp
5660  p_bd = pbd((md - 1)*1 + mb)
5661  p_bc = pbc((mc - 1)*1 + mb)
5662  DO ma = 1, 1
5663  p_index = p_index + 1
5664  tmp = scale*prim(p_index)
5665  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
5666  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
5667  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
5668  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
5669  END DO
5670  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
5671  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
5672  END DO
5673  END DO
5674  END DO
5675  END SUBROUTINE block_1_1_5_2
5676 ! **************************************************************************************************
5677 !> \brief ...
5678 !> \param kbd ...
5679 !> \param kbc ...
5680 !> \param kad ...
5681 !> \param kac ...
5682 !> \param pbd ...
5683 !> \param pbc ...
5684 !> \param pad ...
5685 !> \param pac ...
5686 !> \param prim ...
5687 !> \param scale ...
5688 ! **************************************************************************************************
5689  SUBROUTINE block_1_1_5_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
5690  REAL(kind=dp) :: kbd(1*3), kbc(1*5), kad(1*3), kac(1*5), &
5691  pbd(1*3), pbc(1*5), pad(1*3), &
5692  pac(1*5), prim(1*1*5*3), scale
5693 
5694  INTEGER :: ma, mb, mc, md, p_index
5695  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
5696 
5697  kbd(1:1*3) = 0.0_dp
5698  kbc(1:1*5) = 0.0_dp
5699  kad(1:1*3) = 0.0_dp
5700  kac(1:1*5) = 0.0_dp
5701  p_index = 0
5702  DO md = 1, 3
5703  DO mc = 1, 5
5704  DO mb = 1, 1
5705  ks_bd = 0.0_dp
5706  ks_bc = 0.0_dp
5707  p_bd = pbd((md - 1)*1 + mb)
5708  p_bc = pbc((mc - 1)*1 + mb)
5709  DO ma = 1, 1
5710  p_index = p_index + 1
5711  tmp = scale*prim(p_index)
5712  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
5713  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
5714  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
5715  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
5716  END DO
5717  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
5718  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
5719  END DO
5720  END DO
5721  END DO
5722  END SUBROUTINE block_1_1_5_3
5723 ! **************************************************************************************************
5724 !> \brief ...
5725 !> \param md_max ...
5726 !> \param kbd ...
5727 !> \param kbc ...
5728 !> \param kad ...
5729 !> \param kac ...
5730 !> \param pbd ...
5731 !> \param pbc ...
5732 !> \param pad ...
5733 !> \param pac ...
5734 !> \param prim ...
5735 !> \param scale ...
5736 ! **************************************************************************************************
5737  SUBROUTINE block_1_1_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
5738  INTEGER :: md_max
5739  REAL(kind=dp) :: kbd(1*md_max), kbc(1*5), kad(1*md_max), kac(1*5), pbd(1*md_max), pbc(1*5), &
5740  pad(1*md_max), pac(1*5), prim(1*1*5*md_max), scale
5741 
5742  INTEGER :: ma, mb, mc, md, p_index
5743  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
5744 
5745  kbd(1:1*md_max) = 0.0_dp
5746  kbc(1:1*5) = 0.0_dp
5747  kad(1:1*md_max) = 0.0_dp
5748  kac(1:1*5) = 0.0_dp
5749  p_index = 0
5750  DO md = 1, md_max
5751  DO mc = 1, 5
5752  DO mb = 1, 1
5753  ks_bd = 0.0_dp
5754  ks_bc = 0.0_dp
5755  p_bd = pbd((md - 1)*1 + mb)
5756  p_bc = pbc((mc - 1)*1 + mb)
5757  DO ma = 1, 1
5758  p_index = p_index + 1
5759  tmp = scale*prim(p_index)
5760  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
5761  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
5762  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
5763  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
5764  END DO
5765  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
5766  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
5767  END DO
5768  END DO
5769  END DO
5770  END SUBROUTINE block_1_1_5
5771 ! **************************************************************************************************
5772 !> \brief ...
5773 !> \param kbd ...
5774 !> \param kbc ...
5775 !> \param kad ...
5776 !> \param kac ...
5777 !> \param pbd ...
5778 !> \param pbc ...
5779 !> \param pad ...
5780 !> \param pac ...
5781 !> \param prim ...
5782 !> \param scale ...
5783 ! **************************************************************************************************
5784  SUBROUTINE block_1_1_6_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
5785  REAL(kind=dp) :: kbd(1*1), kbc(1*6), kad(1*1), kac(1*6), &
5786  pbd(1*1), pbc(1*6), pad(1*1), &
5787  pac(1*6), prim(1*1*6*1), scale
5788 
5789  INTEGER :: ma, mb, mc, md, p_index
5790  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
5791 
5792  kbd(1:1*1) = 0.0_dp
5793  kbc(1:1*6) = 0.0_dp
5794  kad(1:1*1) = 0.0_dp
5795  kac(1:1*6) = 0.0_dp
5796  p_index = 0
5797  DO md = 1, 1
5798  DO mc = 1, 6
5799  DO mb = 1, 1
5800  ks_bd = 0.0_dp
5801  ks_bc = 0.0_dp
5802  p_bd = pbd((md - 1)*1 + mb)
5803  p_bc = pbc((mc - 1)*1 + mb)
5804  DO ma = 1, 1
5805  p_index = p_index + 1
5806  tmp = scale*prim(p_index)
5807  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
5808  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
5809  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
5810  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
5811  END DO
5812  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
5813  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
5814  END DO
5815  END DO
5816  END DO
5817  END SUBROUTINE block_1_1_6_1
5818 ! **************************************************************************************************
5819 !> \brief ...
5820 !> \param kbd ...
5821 !> \param kbc ...
5822 !> \param kad ...
5823 !> \param kac ...
5824 !> \param pbd ...
5825 !> \param pbc ...
5826 !> \param pad ...
5827 !> \param pac ...
5828 !> \param prim ...
5829 !> \param scale ...
5830 ! **************************************************************************************************
5831  SUBROUTINE block_1_1_6_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
5832  REAL(kind=dp) :: kbd(1*2), kbc(1*6), kad(1*2), kac(1*6), &
5833  pbd(1*2), pbc(1*6), pad(1*2), &
5834  pac(1*6), prim(1*1*6*2), scale
5835 
5836  INTEGER :: ma, mb, mc, md, p_index
5837  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
5838 
5839  kbd(1:1*2) = 0.0_dp
5840  kbc(1:1*6) = 0.0_dp
5841  kad(1:1*2) = 0.0_dp
5842  kac(1:1*6) = 0.0_dp
5843  p_index = 0
5844  DO md = 1, 2
5845  DO mc = 1, 6
5846  DO mb = 1, 1
5847  ks_bd = 0.0_dp
5848  ks_bc = 0.0_dp
5849  p_bd = pbd((md - 1)*1 + mb)
5850  p_bc = pbc((mc - 1)*1 + mb)
5851  DO ma = 1, 1
5852  p_index = p_index + 1
5853  tmp = scale*prim(p_index)
5854  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
5855  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
5856  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
5857  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
5858  END DO
5859  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
5860  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
5861  END DO
5862  END DO
5863  END DO
5864  END SUBROUTINE block_1_1_6_2
5865 ! **************************************************************************************************
5866 !> \brief ...
5867 !> \param kbd ...
5868 !> \param kbc ...
5869 !> \param kad ...
5870 !> \param kac ...
5871 !> \param pbd ...
5872 !> \param pbc ...
5873 !> \param pad ...
5874 !> \param pac ...
5875 !> \param prim ...
5876 !> \param scale ...
5877 ! **************************************************************************************************
5878  SUBROUTINE block_1_1_6_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
5879  REAL(kind=dp) :: kbd(1*3), kbc(1*6), kad(1*3), kac(1*6), &
5880  pbd(1*3), pbc(1*6), pad(1*3), &
5881  pac(1*6), prim(1*1*6*3), scale
5882 
5883  INTEGER :: ma, mb, mc, md, p_index
5884  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
5885 
5886  kbd(1:1*3) = 0.0_dp
5887  kbc(1:1*6) = 0.0_dp
5888  kad(1:1*3) = 0.0_dp
5889  kac(1:1*6) = 0.0_dp
5890  p_index = 0
5891  DO md = 1, 3
5892  DO mc = 1, 6
5893  DO mb = 1, 1
5894  ks_bd = 0.0_dp
5895  ks_bc = 0.0_dp
5896  p_bd = pbd((md - 1)*1 + mb)
5897  p_bc = pbc((mc - 1)*1 + mb)
5898  DO ma = 1, 1
5899  p_index = p_index + 1
5900  tmp = scale*prim(p_index)
5901  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
5902  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
5903  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
5904  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
5905  END DO
5906  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
5907  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
5908  END DO
5909  END DO
5910  END DO
5911  END SUBROUTINE block_1_1_6_3
5912 ! **************************************************************************************************
5913 !> \brief ...
5914 !> \param md_max ...
5915 !> \param kbd ...
5916 !> \param kbc ...
5917 !> \param kad ...
5918 !> \param kac ...
5919 !> \param pbd ...
5920 !> \param pbc ...
5921 !> \param pad ...
5922 !> \param pac ...
5923 !> \param prim ...
5924 !> \param scale ...
5925 ! **************************************************************************************************
5926  SUBROUTINE block_1_1_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
5927  INTEGER :: md_max
5928  REAL(kind=dp) :: kbd(1*md_max), kbc(1*6), kad(1*md_max), kac(1*6), pbd(1*md_max), pbc(1*6), &
5929  pad(1*md_max), pac(1*6), prim(1*1*6*md_max), scale
5930 
5931  INTEGER :: ma, mb, mc, md, p_index
5932  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
5933 
5934  kbd(1:1*md_max) = 0.0_dp
5935  kbc(1:1*6) = 0.0_dp
5936  kad(1:1*md_max) = 0.0_dp
5937  kac(1:1*6) = 0.0_dp
5938  p_index = 0
5939  DO md = 1, md_max
5940  DO mc = 1, 6
5941  DO mb = 1, 1
5942  ks_bd = 0.0_dp
5943  ks_bc = 0.0_dp
5944  p_bd = pbd((md - 1)*1 + mb)
5945  p_bc = pbc((mc - 1)*1 + mb)
5946  DO ma = 1, 1
5947  p_index = p_index + 1
5948  tmp = scale*prim(p_index)
5949  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
5950  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
5951  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
5952  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
5953  END DO
5954  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
5955  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
5956  END DO
5957  END DO
5958  END DO
5959  END SUBROUTINE block_1_1_6
5960 ! **************************************************************************************************
5961 !> \brief ...
5962 !> \param kbd ...
5963 !> \param kbc ...
5964 !> \param kad ...
5965 !> \param kac ...
5966 !> \param pbd ...
5967 !> \param pbc ...
5968 !> \param pad ...
5969 !> \param pac ...
5970 !> \param prim ...
5971 !> \param scale ...
5972 ! **************************************************************************************************
5973  SUBROUTINE block_1_1_7_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
5974  REAL(kind=dp) :: kbd(1*1), kbc(1*7), kad(1*1), kac(1*7), &
5975  pbd(1*1), pbc(1*7), pad(1*1), &
5976  pac(1*7), prim(1*1*7*1), scale
5977 
5978  INTEGER :: ma, mb, mc, md, p_index
5979  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
5980 
5981  kbd(1:1*1) = 0.0_dp
5982  kbc(1:1*7) = 0.0_dp
5983  kad(1:1*1) = 0.0_dp
5984  kac(1:1*7) = 0.0_dp
5985  p_index = 0
5986  DO md = 1, 1
5987  DO mc = 1, 7
5988  DO mb = 1, 1
5989  ks_bd = 0.0_dp
5990  ks_bc = 0.0_dp
5991  p_bd = pbd((md - 1)*1 + mb)
5992  p_bc = pbc((mc - 1)*1 + mb)
5993  DO ma = 1, 1
5994  p_index = p_index + 1
5995  tmp = scale*prim(p_index)
5996  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
5997  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
5998  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
5999  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
6000  END DO
6001  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
6002  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
6003  END DO
6004  END DO
6005  END DO
6006  END SUBROUTINE block_1_1_7_1
6007 ! **************************************************************************************************
6008 !> \brief ...
6009 !> \param kbd ...
6010 !> \param kbc ...
6011 !> \param kad ...
6012 !> \param kac ...
6013 !> \param pbd ...
6014 !> \param pbc ...
6015 !> \param pad ...
6016 !> \param pac ...
6017 !> \param prim ...
6018 !> \param scale ...
6019 ! **************************************************************************************************
6020  SUBROUTINE block_1_1_7_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
6021  REAL(kind=dp) :: kbd(1*2), kbc(1*7), kad(1*2), kac(1*7), &
6022  pbd(1*2), pbc(1*7), pad(1*2), &
6023  pac(1*7), prim(1*1*7*2), scale
6024 
6025  INTEGER :: ma, mb, mc, md, p_index
6026  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
6027 
6028  kbd(1:1*2) = 0.0_dp
6029  kbc(1:1*7) = 0.0_dp
6030  kad(1:1*2) = 0.0_dp
6031  kac(1:1*7) = 0.0_dp
6032  p_index = 0
6033  DO md = 1, 2
6034  DO mc = 1, 7
6035  DO mb = 1, 1
6036  ks_bd = 0.0_dp
6037  ks_bc = 0.0_dp
6038  p_bd = pbd((md - 1)*1 + mb)
6039  p_bc = pbc((mc - 1)*1 + mb)
6040  DO ma = 1, 1
6041  p_index = p_index + 1
6042  tmp = scale*prim(p_index)
6043  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
6044  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
6045  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
6046  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
6047  END DO
6048  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
6049  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
6050  END DO
6051  END DO
6052  END DO
6053  END SUBROUTINE block_1_1_7_2
6054 ! **************************************************************************************************
6055 !> \brief ...
6056 !> \param md_max ...
6057 !> \param kbd ...
6058 !> \param kbc ...
6059 !> \param kad ...
6060 !> \param kac ...
6061 !> \param pbd ...
6062 !> \param pbc ...
6063 !> \param pad ...
6064 !> \param pac ...
6065 !> \param prim ...
6066 !> \param scale ...
6067 ! **************************************************************************************************
6068  SUBROUTINE block_1_1_7(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
6069  INTEGER :: md_max
6070  REAL(kind=dp) :: kbd(1*md_max), kbc(1*7), kad(1*md_max), kac(1*7), pbd(1*md_max), pbc(1*7), &
6071  pad(1*md_max), pac(1*7), prim(1*1*7*md_max), scale
6072 
6073  INTEGER :: ma, mb, mc, md, p_index
6074  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
6075 
6076  kbd(1:1*md_max) = 0.0_dp
6077  kbc(1:1*7) = 0.0_dp
6078  kad(1:1*md_max) = 0.0_dp
6079  kac(1:1*7) = 0.0_dp
6080  p_index = 0
6081  DO md = 1, md_max
6082  DO mc = 1, 7
6083  DO mb = 1, 1
6084  ks_bd = 0.0_dp
6085  ks_bc = 0.0_dp
6086  p_bd = pbd((md - 1)*1 + mb)
6087  p_bc = pbc((mc - 1)*1 + mb)
6088  DO ma = 1, 1
6089  p_index = p_index + 1
6090  tmp = scale*prim(p_index)
6091  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
6092  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
6093  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
6094  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
6095  END DO
6096  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
6097  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
6098  END DO
6099  END DO
6100  END DO
6101  END SUBROUTINE block_1_1_7
6102 ! **************************************************************************************************
6103 !> \brief ...
6104 !> \param kbd ...
6105 !> \param kbc ...
6106 !> \param kad ...
6107 !> \param kac ...
6108 !> \param pbd ...
6109 !> \param pbc ...
6110 !> \param pad ...
6111 !> \param pac ...
6112 !> \param prim ...
6113 !> \param scale ...
6114 ! **************************************************************************************************
6115  SUBROUTINE block_1_1_9_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
6116  REAL(kind=dp) :: kbd(1*1), kbc(1*9), kad(1*1), kac(1*9), &
6117  pbd(1*1), pbc(1*9), pad(1*1), &
6118  pac(1*9), prim(1*1*9*1), scale
6119 
6120  INTEGER :: ma, mb, mc, md, p_index
6121  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
6122 
6123  kbd(1:1*1) = 0.0_dp
6124  kbc(1:1*9) = 0.0_dp
6125  kad(1:1*1) = 0.0_dp
6126  kac(1:1*9) = 0.0_dp
6127  p_index = 0
6128  DO md = 1, 1
6129  DO mc = 1, 9
6130  DO mb = 1, 1
6131  ks_bd = 0.0_dp
6132  ks_bc = 0.0_dp
6133  p_bd = pbd((md - 1)*1 + mb)
6134  p_bc = pbc((mc - 1)*1 + mb)
6135  DO ma = 1, 1
6136  p_index = p_index + 1
6137  tmp = scale*prim(p_index)
6138  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
6139  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
6140  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
6141  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
6142  END DO
6143  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
6144  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
6145  END DO
6146  END DO
6147  END DO
6148  END SUBROUTINE block_1_1_9_1
6149 ! **************************************************************************************************
6150 !> \brief ...
6151 !> \param kbd ...
6152 !> \param kbc ...
6153 !> \param kad ...
6154 !> \param kac ...
6155 !> \param pbd ...
6156 !> \param pbc ...
6157 !> \param pad ...
6158 !> \param pac ...
6159 !> \param prim ...
6160 !> \param scale ...
6161 ! **************************************************************************************************
6162  SUBROUTINE block_1_1_9_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
6163  REAL(kind=dp) :: kbd(1*2), kbc(1*9), kad(1*2), kac(1*9), &
6164  pbd(1*2), pbc(1*9), pad(1*2), &
6165  pac(1*9), prim(1*1*9*2), scale
6166 
6167  INTEGER :: ma, mb, mc, md, p_index
6168  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
6169 
6170  kbd(1:1*2) = 0.0_dp
6171  kbc(1:1*9) = 0.0_dp
6172  kad(1:1*2) = 0.0_dp
6173  kac(1:1*9) = 0.0_dp
6174  p_index = 0
6175  DO md = 1, 2
6176  DO mc = 1, 9
6177  DO mb = 1, 1
6178  ks_bd = 0.0_dp
6179  ks_bc = 0.0_dp
6180  p_bd = pbd((md - 1)*1 + mb)
6181  p_bc = pbc((mc - 1)*1 + mb)
6182  DO ma = 1, 1
6183  p_index = p_index + 1
6184  tmp = scale*prim(p_index)
6185  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
6186  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
6187  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
6188  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
6189  END DO
6190  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
6191  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
6192  END DO
6193  END DO
6194  END DO
6195  END SUBROUTINE block_1_1_9_2
6196 ! **************************************************************************************************
6197 !> \brief ...
6198 !> \param md_max ...
6199 !> \param kbd ...
6200 !> \param kbc ...
6201 !> \param kad ...
6202 !> \param kac ...
6203 !> \param pbd ...
6204 !> \param pbc ...
6205 !> \param pad ...
6206 !> \param pac ...
6207 !> \param prim ...
6208 !> \param scale ...
6209 ! **************************************************************************************************
6210  SUBROUTINE block_1_1_9(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
6211  INTEGER :: md_max
6212  REAL(kind=dp) :: kbd(1*md_max), kbc(1*9), kad(1*md_max), kac(1*9), pbd(1*md_max), pbc(1*9), &
6213  pad(1*md_max), pac(1*9), prim(1*1*9*md_max), scale
6214 
6215  INTEGER :: ma, mb, mc, md, p_index
6216  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
6217 
6218  kbd(1:1*md_max) = 0.0_dp
6219  kbc(1:1*9) = 0.0_dp
6220  kad(1:1*md_max) = 0.0_dp
6221  kac(1:1*9) = 0.0_dp
6222  p_index = 0
6223  DO md = 1, md_max
6224  DO mc = 1, 9
6225  DO mb = 1, 1
6226  ks_bd = 0.0_dp
6227  ks_bc = 0.0_dp
6228  p_bd = pbd((md - 1)*1 + mb)
6229  p_bc = pbc((mc - 1)*1 + mb)
6230  DO ma = 1, 1
6231  p_index = p_index + 1
6232  tmp = scale*prim(p_index)
6233  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
6234  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
6235  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
6236  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
6237  END DO
6238  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
6239  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
6240  END DO
6241  END DO
6242  END DO
6243  END SUBROUTINE block_1_1_9
6244 ! **************************************************************************************************
6245 !> \brief ...
6246 !> \param kbd ...
6247 !> \param kbc ...
6248 !> \param kad ...
6249 !> \param kac ...
6250 !> \param pbd ...
6251 !> \param pbc ...
6252 !> \param pad ...
6253 !> \param pac ...
6254 !> \param prim ...
6255 !> \param scale ...
6256 ! **************************************************************************************************
6257  SUBROUTINE block_1_1_10_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
6258  REAL(kind=dp) :: kbd(1*1), kbc(1*10), kad(1*1), &
6259  kac(1*10), pbd(1*1), pbc(1*10), &
6260  pad(1*1), pac(1*10), prim(1*1*10*1), &
6261  scale
6262 
6263  INTEGER :: ma, mb, mc, md, p_index
6264  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
6265 
6266  kbd(1:1*1) = 0.0_dp
6267  kbc(1:1*10) = 0.0_dp
6268  kad(1:1*1) = 0.0_dp
6269  kac(1:1*10) = 0.0_dp
6270  p_index = 0
6271  DO md = 1, 1
6272  DO mc = 1, 10
6273  DO mb = 1, 1
6274  ks_bd = 0.0_dp
6275  ks_bc = 0.0_dp
6276  p_bd = pbd((md - 1)*1 + mb)
6277  p_bc = pbc((mc - 1)*1 + mb)
6278  DO ma = 1, 1
6279  p_index = p_index + 1
6280  tmp = scale*prim(p_index)
6281  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
6282  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
6283  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
6284  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
6285  END DO
6286  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
6287  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
6288  END DO
6289  END DO
6290  END DO
6291  END SUBROUTINE block_1_1_10_1
6292 ! **************************************************************************************************
6293 !> \brief ...
6294 !> \param md_max ...
6295 !> \param kbd ...
6296 !> \param kbc ...
6297 !> \param kad ...
6298 !> \param kac ...
6299 !> \param pbd ...
6300 !> \param pbc ...
6301 !> \param pad ...
6302 !> \param pac ...
6303 !> \param prim ...
6304 !> \param scale ...
6305 ! **************************************************************************************************
6306  SUBROUTINE block_1_1_10(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
6307  INTEGER :: md_max
6308  REAL(kind=dp) :: kbd(1*md_max), kbc(1*10), kad(1*md_max), kac(1*10), pbd(1*md_max), &
6309  pbc(1*10), pad(1*md_max), pac(1*10), prim(1*1*10*md_max), scale
6310 
6311  INTEGER :: ma, mb, mc, md, p_index
6312  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
6313 
6314  kbd(1:1*md_max) = 0.0_dp
6315  kbc(1:1*10) = 0.0_dp
6316  kad(1:1*md_max) = 0.0_dp
6317  kac(1:1*10) = 0.0_dp
6318  p_index = 0
6319  DO md = 1, md_max
6320  DO mc = 1, 10
6321  DO mb = 1, 1
6322  ks_bd = 0.0_dp
6323  ks_bc = 0.0_dp
6324  p_bd = pbd((md - 1)*1 + mb)
6325  p_bc = pbc((mc - 1)*1 + mb)
6326  DO ma = 1, 1
6327  p_index = p_index + 1
6328  tmp = scale*prim(p_index)
6329  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
6330  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
6331  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
6332  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
6333  END DO
6334  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
6335  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
6336  END DO
6337  END DO
6338  END DO
6339  END SUBROUTINE block_1_1_10
6340 ! **************************************************************************************************
6341 !> \brief ...
6342 !> \param kbd ...
6343 !> \param kbc ...
6344 !> \param kad ...
6345 !> \param kac ...
6346 !> \param pbd ...
6347 !> \param pbc ...
6348 !> \param pad ...
6349 !> \param pac ...
6350 !> \param prim ...
6351 !> \param scale ...
6352 ! **************************************************************************************************
6353  SUBROUTINE block_1_1_11_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
6354  REAL(kind=dp) :: kbd(1*1), kbc(1*11), kad(1*1), &
6355  kac(1*11), pbd(1*1), pbc(1*11), &
6356  pad(1*1), pac(1*11), prim(1*1*11*1), &
6357  scale
6358 
6359  INTEGER :: ma, mb, mc, md, p_index
6360  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
6361 
6362  kbd(1:1*1) = 0.0_dp
6363  kbc(1:1*11) = 0.0_dp
6364  kad(1:1*1) = 0.0_dp
6365  kac(1:1*11) = 0.0_dp
6366  p_index = 0
6367  DO md = 1, 1
6368  DO mc = 1, 11
6369  DO mb = 1, 1
6370  ks_bd = 0.0_dp
6371  ks_bc = 0.0_dp
6372  p_bd = pbd((md - 1)*1 + mb)
6373  p_bc = pbc((mc - 1)*1 + mb)
6374  DO ma = 1, 1
6375  p_index = p_index + 1
6376  tmp = scale*prim(p_index)
6377  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
6378  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
6379  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
6380  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
6381  END DO
6382  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
6383  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
6384  END DO
6385  END DO
6386  END DO
6387  END SUBROUTINE block_1_1_11_1
6388 ! **************************************************************************************************
6389 !> \brief ...
6390 !> \param md_max ...
6391 !> \param kbd ...
6392 !> \param kbc ...
6393 !> \param kad ...
6394 !> \param kac ...
6395 !> \param pbd ...
6396 !> \param pbc ...
6397 !> \param pad ...
6398 !> \param pac ...
6399 !> \param prim ...
6400 !> \param scale ...
6401 ! **************************************************************************************************
6402  SUBROUTINE block_1_1_11(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
6403  INTEGER :: md_max
6404  REAL(kind=dp) :: kbd(1*md_max), kbc(1*11), kad(1*md_max), kac(1*11), pbd(1*md_max), &
6405  pbc(1*11), pad(1*md_max), pac(1*11), prim(1*1*11*md_max), scale
6406 
6407  INTEGER :: ma, mb, mc, md, p_index
6408  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
6409 
6410  kbd(1:1*md_max) = 0.0_dp
6411  kbc(1:1*11) = 0.0_dp
6412  kad(1:1*md_max) = 0.0_dp
6413  kac(1:1*11) = 0.0_dp
6414  p_index = 0
6415  DO md = 1, md_max
6416  DO mc = 1, 11
6417  DO mb = 1, 1
6418  ks_bd = 0.0_dp
6419  ks_bc = 0.0_dp
6420  p_bd = pbd((md - 1)*1 + mb)
6421  p_bc = pbc((mc - 1)*1 + mb)
6422  DO ma = 1, 1
6423  p_index = p_index + 1
6424  tmp = scale*prim(p_index)
6425  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
6426  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
6427  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
6428  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
6429  END DO
6430  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
6431  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
6432  END DO
6433  END DO
6434  END DO
6435  END SUBROUTINE block_1_1_11
6436 ! **************************************************************************************************
6437 !> \brief ...
6438 !> \param kbd ...
6439 !> \param kbc ...
6440 !> \param kad ...
6441 !> \param kac ...
6442 !> \param pbd ...
6443 !> \param pbc ...
6444 !> \param pad ...
6445 !> \param pac ...
6446 !> \param prim ...
6447 !> \param scale ...
6448 ! **************************************************************************************************
6449  SUBROUTINE block_1_1_15_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
6450  REAL(kind=dp) :: kbd(1*1), kbc(1*15), kad(1*1), &
6451  kac(1*15), pbd(1*1), pbc(1*15), &
6452  pad(1*1), pac(1*15), prim(1*1*15*1), &
6453  scale
6454 
6455  INTEGER :: ma, mb, mc, md, p_index
6456  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
6457 
6458  kbd(1:1*1) = 0.0_dp
6459  kbc(1:1*15) = 0.0_dp
6460  kad(1:1*1) = 0.0_dp
6461  kac(1:1*15) = 0.0_dp
6462  p_index = 0
6463  DO md = 1, 1
6464  DO mc = 1, 15
6465  DO mb = 1, 1
6466  ks_bd = 0.0_dp
6467  ks_bc = 0.0_dp
6468  p_bd = pbd((md - 1)*1 + mb)
6469  p_bc = pbc((mc - 1)*1 + mb)
6470  DO ma = 1, 1
6471  p_index = p_index + 1
6472  tmp = scale*prim(p_index)
6473  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
6474  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
6475  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
6476  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
6477  END DO
6478  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
6479  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
6480  END DO
6481  END DO
6482  END DO
6483  END SUBROUTINE block_1_1_15_1
6484 ! **************************************************************************************************
6485 !> \brief ...
6486 !> \param md_max ...
6487 !> \param kbd ...
6488 !> \param kbc ...
6489 !> \param kad ...
6490 !> \param kac ...
6491 !> \param pbd ...
6492 !> \param pbc ...
6493 !> \param pad ...
6494 !> \param pac ...
6495 !> \param prim ...
6496 !> \param scale ...
6497 ! **************************************************************************************************
6498  SUBROUTINE block_1_1_15(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
6499  INTEGER :: md_max
6500  REAL(kind=dp) :: kbd(1*md_max), kbc(1*15), kad(1*md_max), kac(1*15), pbd(1*md_max), &
6501  pbc(1*15), pad(1*md_max), pac(1*15), prim(1*1*15*md_max), scale
6502 
6503  INTEGER :: ma, mb, mc, md, p_index
6504  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
6505 
6506  kbd(1:1*md_max) = 0.0_dp
6507  kbc(1:1*15) = 0.0_dp
6508  kad(1:1*md_max) = 0.0_dp
6509  kac(1:1*15) = 0.0_dp
6510  p_index = 0
6511  DO md = 1, md_max
6512  DO mc = 1, 15
6513  DO mb = 1, 1
6514  ks_bd = 0.0_dp
6515  ks_bc = 0.0_dp
6516  p_bd = pbd((md - 1)*1 + mb)
6517  p_bc = pbc((mc - 1)*1 + mb)
6518  DO ma = 1, 1
6519  p_index = p_index + 1
6520  tmp = scale*prim(p_index)
6521  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
6522  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
6523  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
6524  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
6525  END DO
6526  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
6527  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
6528  END DO
6529  END DO
6530  END DO
6531  END SUBROUTINE block_1_1_15
6532 ! **************************************************************************************************
6533 !> \brief ...
6534 !> \param kbd ...
6535 !> \param kbc ...
6536 !> \param kad ...
6537 !> \param kac ...
6538 !> \param pbd ...
6539 !> \param pbc ...
6540 !> \param pad ...
6541 !> \param pac ...
6542 !> \param prim ...
6543 !> \param scale ...
6544 ! **************************************************************************************************
6545  SUBROUTINE block_1_2_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
6546  REAL(kind=dp) :: kbd(2*1), kbc(2*1), kad(1*1), kac(1*1), &
6547  pbd(2*1), pbc(2*1), pad(1*1), &
6548  pac(1*1), prim(1*2*1*1), scale
6549 
6550  INTEGER :: ma, mb, mc, md, p_index
6551  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
6552 
6553  kbd(1:2*1) = 0.0_dp
6554  kbc(1:2*1) = 0.0_dp
6555  kad(1:1*1) = 0.0_dp
6556  kac(1:1*1) = 0.0_dp
6557  p_index = 0
6558  DO md = 1, 1
6559  DO mc = 1, 1
6560  DO mb = 1, 2
6561  ks_bd = 0.0_dp
6562  ks_bc = 0.0_dp
6563  p_bd = pbd((md - 1)*2 + mb)
6564  p_bc = pbc((mc - 1)*2 + mb)
6565  DO ma = 1, 1
6566  p_index = p_index + 1
6567  tmp = scale*prim(p_index)
6568  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
6569  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
6570  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
6571  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
6572  END DO
6573  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
6574  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
6575  END DO
6576  END DO
6577  END DO
6578  END SUBROUTINE block_1_2_1_1
6579 ! **************************************************************************************************
6580 !> \brief ...
6581 !> \param kbd ...
6582 !> \param kbc ...
6583 !> \param kad ...
6584 !> \param kac ...
6585 !> \param pbd ...
6586 !> \param pbc ...
6587 !> \param pad ...
6588 !> \param pac ...
6589 !> \param prim ...
6590 !> \param scale ...
6591 ! **************************************************************************************************
6592  SUBROUTINE block_1_2_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
6593  REAL(kind=dp) :: kbd(2*2), kbc(2*1), kad(1*2), kac(1*1), &
6594  pbd(2*2), pbc(2*1), pad(1*2), &
6595  pac(1*1), prim(1*2*1*2), scale
6596 
6597  INTEGER :: ma, mb, mc, md, p_index
6598  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
6599 
6600  kbd(1:2*2) = 0.0_dp
6601  kbc(1:2*1) = 0.0_dp
6602  kad(1:1*2) = 0.0_dp
6603  kac(1:1*1) = 0.0_dp
6604  p_index = 0
6605  DO md = 1, 2
6606  DO mc = 1, 1
6607  DO mb = 1, 2
6608  ks_bd = 0.0_dp
6609  ks_bc = 0.0_dp
6610  p_bd = pbd((md - 1)*2 + mb)
6611  p_bc = pbc((mc - 1)*2 + mb)
6612  DO ma = 1, 1
6613  p_index = p_index + 1
6614  tmp = scale*prim(p_index)
6615  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
6616  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
6617  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
6618  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
6619  END DO
6620  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
6621  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
6622  END DO
6623  END DO
6624  END DO
6625  END SUBROUTINE block_1_2_1_2
6626 ! **************************************************************************************************
6627 !> \brief ...
6628 !> \param kbd ...
6629 !> \param kbc ...
6630 !> \param kad ...
6631 !> \param kac ...
6632 !> \param pbd ...
6633 !> \param pbc ...
6634 !> \param pad ...
6635 !> \param pac ...
6636 !> \param prim ...
6637 !> \param scale ...
6638 ! **************************************************************************************************
6639  SUBROUTINE block_1_2_1_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
6640  REAL(kind=dp) :: kbd(2*3), kbc(2*1), kad(1*3), kac(1*1), &
6641  pbd(2*3), pbc(2*1), pad(1*3), &
6642  pac(1*1), prim(1*2*1*3), scale
6643 
6644  INTEGER :: ma, mb, mc, md, p_index
6645  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
6646 
6647  kbd(1:2*3) = 0.0_dp
6648  kbc(1:2*1) = 0.0_dp
6649  kad(1:1*3) = 0.0_dp
6650  kac(1:1*1) = 0.0_dp
6651  p_index = 0
6652  DO md = 1, 3
6653  DO mc = 1, 1
6654  DO mb = 1, 2
6655  ks_bd = 0.0_dp
6656  ks_bc = 0.0_dp
6657  p_bd = pbd((md - 1)*2 + mb)
6658  p_bc = pbc((mc - 1)*2 + mb)
6659  DO ma = 1, 1
6660  p_index = p_index + 1
6661  tmp = scale*prim(p_index)
6662  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
6663  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
6664  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
6665  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
6666  END DO
6667  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
6668  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
6669  END DO
6670  END DO
6671  END DO
6672  END SUBROUTINE block_1_2_1_3
6673 ! **************************************************************************************************
6674 !> \brief ...
6675 !> \param kbd ...
6676 !> \param kbc ...
6677 !> \param kad ...
6678 !> \param kac ...
6679 !> \param pbd ...
6680 !> \param pbc ...
6681 !> \param pad ...
6682 !> \param pac ...
6683 !> \param prim ...
6684 !> \param scale ...
6685 ! **************************************************************************************************
6686  SUBROUTINE block_1_2_1_4(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
6687  REAL(kind=dp) :: kbd(2*4), kbc(2*1), kad(1*4), kac(1*1), &
6688  pbd(2*4), pbc(2*1), pad(1*4), &
6689  pac(1*1), prim(1*2*1*4), scale
6690 
6691  INTEGER :: ma, mb, mc, md, p_index
6692  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
6693 
6694  kbd(1:2*4) = 0.0_dp
6695  kbc(1:2*1) = 0.0_dp
6696  kad(1:1*4) = 0.0_dp
6697  kac(1:1*1) = 0.0_dp
6698  p_index = 0
6699  DO md = 1, 4
6700  DO mc = 1, 1
6701  DO mb = 1, 2
6702  ks_bd = 0.0_dp
6703  ks_bc = 0.0_dp
6704  p_bd = pbd((md - 1)*2 + mb)
6705  p_bc = pbc((mc - 1)*2 + mb)
6706  DO ma = 1, 1
6707  p_index = p_index + 1
6708  tmp = scale*prim(p_index)
6709  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
6710  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
6711  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
6712  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
6713  END DO
6714  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
6715  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
6716  END DO
6717  END DO
6718  END DO
6719  END SUBROUTINE block_1_2_1_4
6720 ! **************************************************************************************************
6721 !> \brief ...
6722 !> \param kbd ...
6723 !> \param kbc ...
6724 !> \param kad ...
6725 !> \param kac ...
6726 !> \param pbd ...
6727 !> \param pbc ...
6728 !> \param pad ...
6729 !> \param pac ...
6730 !> \param prim ...
6731 !> \param scale ...
6732 ! **************************************************************************************************
6733  SUBROUTINE block_1_2_1_5(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
6734  REAL(kind=dp) :: kbd(2*5), kbc(2*1), kad(1*5), kac(1*1), &
6735  pbd(2*5), pbc(2*1), pad(1*5), &
6736  pac(1*1), prim(1*2*1*5), scale
6737 
6738  INTEGER :: ma, mb, mc, md, p_index
6739  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
6740 
6741  kbd(1:2*5) = 0.0_dp
6742  kbc(1:2*1) = 0.0_dp
6743  kad(1:1*5) = 0.0_dp
6744  kac(1:1*1) = 0.0_dp
6745  p_index = 0
6746  DO md = 1, 5
6747  DO mc = 1, 1
6748  DO mb = 1, 2
6749  ks_bd = 0.0_dp
6750  ks_bc = 0.0_dp
6751  p_bd = pbd((md - 1)*2 + mb)
6752  p_bc = pbc((mc - 1)*2 + mb)
6753  DO ma = 1, 1
6754  p_index = p_index + 1
6755  tmp = scale*prim(p_index)
6756  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
6757  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
6758  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
6759  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
6760  END DO
6761  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
6762  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
6763  END DO
6764  END DO
6765  END DO
6766  END SUBROUTINE block_1_2_1_5
6767 ! **************************************************************************************************
6768 !> \brief ...
6769 !> \param kbd ...
6770 !> \param kbc ...
6771 !> \param kad ...
6772 !> \param kac ...
6773 !> \param pbd ...
6774 !> \param pbc ...
6775 !> \param pad ...
6776 !> \param pac ...
6777 !> \param prim ...
6778 !> \param scale ...
6779 ! **************************************************************************************************
6780  SUBROUTINE block_1_2_1_6(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
6781  REAL(kind=dp) :: kbd(2*6), kbc(2*1), kad(1*6), kac(1*1), &
6782  pbd(2*6), pbc(2*1), pad(1*6), &
6783  pac(1*1), prim(1*2*1*6), scale
6784 
6785  INTEGER :: ma, mb, mc, md, p_index
6786  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
6787 
6788  kbd(1:2*6) = 0.0_dp
6789  kbc(1:2*1) = 0.0_dp
6790  kad(1:1*6) = 0.0_dp
6791  kac(1:1*1) = 0.0_dp
6792  p_index = 0
6793  DO md = 1, 6
6794  DO mc = 1, 1
6795  DO mb = 1, 2
6796  ks_bd = 0.0_dp
6797  ks_bc = 0.0_dp
6798  p_bd = pbd((md - 1)*2 + mb)
6799  p_bc = pbc((mc - 1)*2 + mb)
6800  DO ma = 1, 1
6801  p_index = p_index + 1
6802  tmp = scale*prim(p_index)
6803  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
6804  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
6805  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
6806  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
6807  END DO
6808  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
6809  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
6810  END DO
6811  END DO
6812  END DO
6813  END SUBROUTINE block_1_2_1_6
6814 ! **************************************************************************************************
6815 !> \brief ...
6816 !> \param kbd ...
6817 !> \param kbc ...
6818 !> \param kad ...
6819 !> \param kac ...
6820 !> \param pbd ...
6821 !> \param pbc ...
6822 !> \param pad ...
6823 !> \param pac ...
6824 !> \param prim ...
6825 !> \param scale ...
6826 ! **************************************************************************************************
6827  SUBROUTINE block_1_2_1_7(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
6828  REAL(kind=dp) :: kbd(2*7), kbc(2*1), kad(1*7), kac(1*1), &
6829  pbd(2*7), pbc(2*1), pad(1*7), &
6830  pac(1*1), prim(1*2*1*7), scale
6831 
6832  INTEGER :: ma, mb, mc, md, p_index
6833  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
6834 
6835  kbd(1:2*7) = 0.0_dp
6836  kbc(1:2*1) = 0.0_dp
6837  kad(1:1*7) = 0.0_dp
6838  kac(1:1*1) = 0.0_dp
6839  p_index = 0
6840  DO md = 1, 7
6841  DO mc = 1, 1
6842  DO mb = 1, 2
6843  ks_bd = 0.0_dp
6844  ks_bc = 0.0_dp
6845  p_bd = pbd((md - 1)*2 + mb)
6846  p_bc = pbc((mc - 1)*2 + mb)
6847  DO ma = 1, 1
6848  p_index = p_index + 1
6849  tmp = scale*prim(p_index)
6850  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
6851  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
6852  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
6853  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
6854  END DO
6855  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
6856  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
6857  END DO
6858  END DO
6859  END DO
6860  END SUBROUTINE block_1_2_1_7
6861 ! **************************************************************************************************
6862 !> \brief ...
6863 !> \param kbd ...
6864 !> \param kbc ...
6865 !> \param kad ...
6866 !> \param kac ...
6867 !> \param pbd ...
6868 !> \param pbc ...
6869 !> \param pad ...
6870 !> \param pac ...
6871 !> \param prim ...
6872 !> \param scale ...
6873 ! **************************************************************************************************
6874  SUBROUTINE block_1_2_1_9(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
6875  REAL(kind=dp) :: kbd(2*9), kbc(2*1), kad(1*9), kac(1*1), &
6876  pbd(2*9), pbc(2*1), pad(1*9), &
6877  pac(1*1), prim(1*2*1*9), scale
6878 
6879  INTEGER :: ma, mb, mc, md, p_index
6880  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
6881 
6882  kbd(1:2*9) = 0.0_dp
6883  kbc(1:2*1) = 0.0_dp
6884  kad(1:1*9) = 0.0_dp
6885  kac(1:1*1) = 0.0_dp
6886  p_index = 0
6887  DO md = 1, 9
6888  DO mc = 1, 1
6889  DO mb = 1, 2
6890  ks_bd = 0.0_dp
6891  ks_bc = 0.0_dp
6892  p_bd = pbd((md - 1)*2 + mb)
6893  p_bc = pbc((mc - 1)*2 + mb)
6894  DO ma = 1, 1
6895  p_index = p_index + 1
6896  tmp = scale*prim(p_index)
6897  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
6898  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
6899  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
6900  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
6901  END DO
6902  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
6903  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
6904  END DO
6905  END DO
6906  END DO
6907  END SUBROUTINE block_1_2_1_9
6908 ! **************************************************************************************************
6909 !> \brief ...
6910 !> \param md_max ...
6911 !> \param kbd ...
6912 !> \param kbc ...
6913 !> \param kad ...
6914 !> \param kac ...
6915 !> \param pbd ...
6916 !> \param pbc ...
6917 !> \param pad ...
6918 !> \param pac ...
6919 !> \param prim ...
6920 !> \param scale ...
6921 ! **************************************************************************************************
6922  SUBROUTINE block_1_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
6923  INTEGER :: md_max
6924  REAL(kind=dp) :: kbd(2*md_max), kbc(2*1), kad(1*md_max), kac(1*1), pbd(2*md_max), pbc(2*1), &
6925  pad(1*md_max), pac(1*1), prim(1*2*1*md_max), scale
6926 
6927  INTEGER :: ma, mb, mc, md, p_index
6928  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
6929 
6930  kbd(1:2*md_max) = 0.0_dp
6931  kbc(1:2*1) = 0.0_dp
6932  kad(1:1*md_max) = 0.0_dp
6933  kac(1:1*1) = 0.0_dp
6934  p_index = 0
6935  DO md = 1, md_max
6936  DO mc = 1, 1
6937  DO mb = 1, 2
6938  ks_bd = 0.0_dp
6939  ks_bc = 0.0_dp
6940  p_bd = pbd((md - 1)*2 + mb)
6941  p_bc = pbc((mc - 1)*2 + mb)
6942  DO ma = 1, 1
6943  p_index = p_index + 1
6944  tmp = scale*prim(p_index)
6945  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
6946  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
6947  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
6948  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
6949  END DO
6950  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
6951  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
6952  END DO
6953  END DO
6954  END DO
6955  END SUBROUTINE block_1_2_1
6956 ! **************************************************************************************************
6957 !> \brief ...
6958 !> \param kbd ...
6959 !> \param kbc ...
6960 !> \param kad ...
6961 !> \param kac ...
6962 !> \param pbd ...
6963 !> \param pbc ...
6964 !> \param pad ...
6965 !> \param pac ...
6966 !> \param prim ...
6967 !> \param scale ...
6968 ! **************************************************************************************************
6969  SUBROUTINE block_1_2_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
6970  REAL(kind=dp) :: kbd(2*1), kbc(2*2), kad(1*1), kac(1*2), &
6971  pbd(2*1), pbc(2*2), pad(1*1), &
6972  pac(1*2), prim(1*2*2*1), scale
6973 
6974  INTEGER :: ma, mb, mc, md, p_index
6975  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
6976 
6977  kbd(1:2*1) = 0.0_dp
6978  kbc(1:2*2) = 0.0_dp
6979  kad(1:1*1) = 0.0_dp
6980  kac(1:1*2) = 0.0_dp
6981  p_index = 0
6982  DO md = 1, 1
6983  DO mc = 1, 2
6984  DO mb = 1, 2
6985  ks_bd = 0.0_dp
6986  ks_bc = 0.0_dp
6987  p_bd = pbd((md - 1)*2 + mb)
6988  p_bc = pbc((mc - 1)*2 + mb)
6989  DO ma = 1, 1
6990  p_index = p_index + 1
6991  tmp = scale*prim(p_index)
6992  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
6993  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
6994  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
6995  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
6996  END DO
6997  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
6998  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
6999  END DO
7000  END DO
7001  END DO
7002  END SUBROUTINE block_1_2_2_1
7003 ! **************************************************************************************************
7004 !> \brief ...
7005 !> \param kbd ...
7006 !> \param kbc ...
7007 !> \param kad ...
7008 !> \param kac ...
7009 !> \param pbd ...
7010 !> \param pbc ...
7011 !> \param pad ...
7012 !> \param pac ...
7013 !> \param prim ...
7014 !> \param scale ...
7015 ! **************************************************************************************************
7016  SUBROUTINE block_1_2_2_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
7017  REAL(kind=dp) :: kbd(2*2), kbc(2*2), kad(1*2), kac(1*2), &
7018  pbd(2*2), pbc(2*2), pad(1*2), &
7019  pac(1*2), prim(1*2*2*2), scale
7020 
7021  INTEGER :: ma, mb, mc, md, p_index
7022  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
7023 
7024  kbd(1:2*2) = 0.0_dp
7025  kbc(1:2*2) = 0.0_dp
7026  kad(1:1*2) = 0.0_dp
7027  kac(1:1*2) = 0.0_dp
7028  p_index = 0
7029  DO md = 1, 2
7030  DO mc = 1, 2
7031  DO mb = 1, 2
7032  ks_bd = 0.0_dp
7033  ks_bc = 0.0_dp
7034  p_bd = pbd((md - 1)*2 + mb)
7035  p_bc = pbc((mc - 1)*2 + mb)
7036  DO ma = 1, 1
7037  p_index = p_index + 1
7038  tmp = scale*prim(p_index)
7039  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
7040  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
7041  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
7042  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
7043  END DO
7044  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
7045  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
7046  END DO
7047  END DO
7048  END DO
7049  END SUBROUTINE block_1_2_2_2
7050 ! **************************************************************************************************
7051 !> \brief ...
7052 !> \param kbd ...
7053 !> \param kbc ...
7054 !> \param kad ...
7055 !> \param kac ...
7056 !> \param pbd ...
7057 !> \param pbc ...
7058 !> \param pad ...
7059 !> \param pac ...
7060 !> \param prim ...
7061 !> \param scale ...
7062 ! **************************************************************************************************
7063  SUBROUTINE block_1_2_2_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
7064  REAL(kind=dp) :: kbd(2*3), kbc(2*2), kad(1*3), kac(1*2), &
7065  pbd(2*3), pbc(2*2), pad(1*3), &
7066  pac(1*2), prim(1*2*2*3), scale
7067 
7068  INTEGER :: ma, mb, mc, md, p_index
7069  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
7070 
7071  kbd(1:2*3) = 0.0_dp
7072  kbc(1:2*2) = 0.0_dp
7073  kad(1:1*3) = 0.0_dp
7074  kac(1:1*2) = 0.0_dp
7075  p_index = 0
7076  DO md = 1, 3
7077  DO mc = 1, 2
7078  DO mb = 1, 2
7079  ks_bd = 0.0_dp
7080  ks_bc = 0.0_dp
7081  p_bd = pbd((md - 1)*2 + mb)
7082  p_bc = pbc((mc - 1)*2 + mb)
7083  DO ma = 1, 1
7084  p_index = p_index + 1
7085  tmp = scale*prim(p_index)
7086  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
7087  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
7088  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
7089  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
7090  END DO
7091  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
7092  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
7093  END DO
7094  END DO
7095  END DO
7096  END SUBROUTINE block_1_2_2_3
7097 ! **************************************************************************************************
7098 !> \brief ...
7099 !> \param kbd ...
7100 !> \param kbc ...
7101 !> \param kad ...
7102 !> \param kac ...
7103 !> \param pbd ...
7104 !> \param pbc ...
7105 !> \param pad ...
7106 !> \param pac ...
7107 !> \param prim ...
7108 !> \param scale ...
7109 ! **************************************************************************************************
7110  SUBROUTINE block_1_2_2_4(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
7111  REAL(kind=dp) :: kbd(2*4), kbc(2*2), kad(1*4), kac(1*2), &
7112  pbd(2*4), pbc(2*2), pad(1*4), &
7113  pac(1*2), prim(1*2*2*4), scale
7114 
7115  INTEGER :: ma, mb, mc, md, p_index
7116  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
7117 
7118  kbd(1:2*4) = 0.0_dp
7119  kbc(1:2*2) = 0.0_dp
7120  kad(1:1*4) = 0.0_dp
7121  kac(1:1*2) = 0.0_dp
7122  p_index = 0
7123  DO md = 1, 4
7124  DO mc = 1, 2
7125  DO mb = 1, 2
7126  ks_bd = 0.0_dp
7127  ks_bc = 0.0_dp
7128  p_bd = pbd((md - 1)*2 + mb)
7129  p_bc = pbc((mc - 1)*2 + mb)
7130  DO ma = 1, 1
7131  p_index = p_index + 1
7132  tmp = scale*prim(p_index)
7133  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
7134  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
7135  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
7136  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
7137  END DO
7138  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
7139  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
7140  END DO
7141  END DO
7142  END DO
7143  END SUBROUTINE block_1_2_2_4
7144 ! **************************************************************************************************
7145 !> \brief ...
7146 !> \param md_max ...
7147 !> \param kbd ...
7148 !> \param kbc ...
7149 !> \param kad ...
7150 !> \param kac ...
7151 !> \param pbd ...
7152 !> \param pbc ...
7153 !> \param pad ...
7154 !> \param pac ...
7155 !> \param prim ...
7156 !> \param scale ...
7157 ! **************************************************************************************************
7158  SUBROUTINE block_1_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
7159  INTEGER :: md_max
7160  REAL(kind=dp) :: kbd(2*md_max), kbc(2*2), kad(1*md_max), kac(1*2), pbd(2*md_max), pbc(2*2), &
7161  pad(1*md_max), pac(1*2), prim(1*2*2*md_max), scale
7162 
7163  INTEGER :: ma, mb, mc, md, p_index
7164  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
7165 
7166  kbd(1:2*md_max) = 0.0_dp
7167  kbc(1:2*2) = 0.0_dp
7168  kad(1:1*md_max) = 0.0_dp
7169  kac(1:1*2) = 0.0_dp
7170  p_index = 0
7171  DO md = 1, md_max
7172  DO mc = 1, 2
7173  DO mb = 1, 2
7174  ks_bd = 0.0_dp
7175  ks_bc = 0.0_dp
7176  p_bd = pbd((md - 1)*2 + mb)
7177  p_bc = pbc((mc - 1)*2 + mb)
7178  DO ma = 1, 1
7179  p_index = p_index + 1
7180  tmp = scale*prim(p_index)
7181  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
7182  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
7183  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
7184  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
7185  END DO
7186  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
7187  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
7188  END DO
7189  END DO
7190  END DO
7191  END SUBROUTINE block_1_2_2
7192 ! **************************************************************************************************
7193 !> \brief ...
7194 !> \param kbd ...
7195 !> \param kbc ...
7196 !> \param kad ...
7197 !> \param kac ...
7198 !> \param pbd ...
7199 !> \param pbc ...
7200 !> \param pad ...
7201 !> \param pac ...
7202 !> \param prim ...
7203 !> \param scale ...
7204 ! **************************************************************************************************
7205  SUBROUTINE block_1_2_3_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
7206  REAL(kind=dp) :: kbd(2*1), kbc(2*3), kad(1*1), kac(1*3), &
7207  pbd(2*1), pbc(2*3), pad(1*1), &
7208  pac(1*3), prim(1*2*3*1), scale
7209 
7210  INTEGER :: ma, mb, mc, md, p_index
7211  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
7212 
7213  kbd(1:2*1) = 0.0_dp
7214  kbc(1:2*3) = 0.0_dp
7215  kad(1:1*1) = 0.0_dp
7216  kac(1:1*3) = 0.0_dp
7217  p_index = 0
7218  DO md = 1, 1
7219  DO mc = 1, 3
7220  DO mb = 1, 2
7221  ks_bd = 0.0_dp
7222  ks_bc = 0.0_dp
7223  p_bd = pbd((md - 1)*2 + mb)
7224  p_bc = pbc((mc - 1)*2 + mb)
7225  DO ma = 1, 1
7226  p_index = p_index + 1
7227  tmp = scale*prim(p_index)
7228  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
7229  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
7230  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
7231  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
7232  END DO
7233  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
7234  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
7235  END DO
7236  END DO
7237  END DO
7238  END SUBROUTINE block_1_2_3_1
7239 ! **************************************************************************************************
7240 !> \brief ...
7241 !> \param kbd ...
7242 !> \param kbc ...
7243 !> \param kad ...
7244 !> \param kac ...
7245 !> \param pbd ...
7246 !> \param pbc ...
7247 !> \param pad ...
7248 !> \param pac ...
7249 !> \param prim ...
7250 !> \param scale ...
7251 ! **************************************************************************************************
7252  SUBROUTINE block_1_2_3_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
7253  REAL(kind=dp) :: kbd(2*2), kbc(2*3), kad(1*2), kac(1*3), &
7254  pbd(2*2), pbc(2*3), pad(1*2), &
7255  pac(1*3), prim(1*2*3*2), scale
7256 
7257  INTEGER :: ma, mb, mc, md, p_index
7258  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
7259 
7260  kbd(1:2*2) = 0.0_dp
7261  kbc(1:2*3) = 0.0_dp
7262  kad(1:1*2) = 0.0_dp
7263  kac(1:1*3) = 0.0_dp
7264  p_index = 0
7265  DO md = 1, 2
7266  DO mc = 1, 3
7267  DO mb = 1, 2
7268  ks_bd = 0.0_dp
7269  ks_bc = 0.0_dp
7270  p_bd = pbd((md - 1)*2 + mb)
7271  p_bc = pbc((mc - 1)*2 + mb)
7272  DO ma = 1, 1
7273  p_index = p_index + 1
7274  tmp = scale*prim(p_index)
7275  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
7276  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
7277  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
7278  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
7279  END DO
7280  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
7281  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
7282  END DO
7283  END DO
7284  END DO
7285  END SUBROUTINE block_1_2_3_2
7286 ! **************************************************************************************************
7287 !> \brief ...
7288 !> \param kbd ...
7289 !> \param kbc ...
7290 !> \param kad ...
7291 !> \param kac ...
7292 !> \param pbd ...
7293 !> \param pbc ...
7294 !> \param pad ...
7295 !> \param pac ...
7296 !> \param prim ...
7297 !> \param scale ...
7298 ! **************************************************************************************************
7299  SUBROUTINE block_1_2_3_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
7300  REAL(kind=dp) :: kbd(2*3), kbc(2*3), kad(1*3), kac(1*3), &
7301  pbd(2*3), pbc(2*3), pad(1*3), &
7302  pac(1*3), prim(1*2*3*3), scale
7303 
7304  INTEGER :: ma, mb, mc, md, p_index
7305  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
7306 
7307  kbd(1:2*3) = 0.0_dp
7308  kbc(1:2*3) = 0.0_dp
7309  kad(1:1*3) = 0.0_dp
7310  kac(1:1*3) = 0.0_dp
7311  p_index = 0
7312  DO md = 1, 3
7313  DO mc = 1, 3
7314  DO mb = 1, 2
7315  ks_bd = 0.0_dp
7316  ks_bc = 0.0_dp
7317  p_bd = pbd((md - 1)*2 + mb)
7318  p_bc = pbc((mc - 1)*2 + mb)
7319  DO ma = 1, 1
7320  p_index = p_index + 1
7321  tmp = scale*prim(p_index)
7322  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
7323  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
7324  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
7325  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
7326  END DO
7327  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
7328  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
7329  END DO
7330  END DO
7331  END DO
7332  END SUBROUTINE block_1_2_3_3
7333 ! **************************************************************************************************
7334 !> \brief ...
7335 !> \param md_max ...
7336 !> \param kbd ...
7337 !> \param kbc ...
7338 !> \param kad ...
7339 !> \param kac ...
7340 !> \param pbd ...
7341 !> \param pbc ...
7342 !> \param pad ...
7343 !> \param pac ...
7344 !> \param prim ...
7345 !> \param scale ...
7346 ! **************************************************************************************************
7347  SUBROUTINE block_1_2_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
7348  INTEGER :: md_max
7349  REAL(kind=dp) :: kbd(2*md_max), kbc(2*3), kad(1*md_max), kac(1*3), pbd(2*md_max), pbc(2*3), &
7350  pad(1*md_max), pac(1*3), prim(1*2*3*md_max), scale
7351 
7352  INTEGER :: ma, mb, mc, md, p_index
7353  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
7354 
7355  kbd(1:2*md_max) = 0.0_dp
7356  kbc(1:2*3) = 0.0_dp
7357  kad(1:1*md_max) = 0.0_dp
7358  kac(1:1*3) = 0.0_dp
7359  p_index = 0
7360  DO md = 1, md_max
7361  DO mc = 1, 3
7362  DO mb = 1, 2
7363  ks_bd = 0.0_dp
7364  ks_bc = 0.0_dp
7365  p_bd = pbd((md - 1)*2 + mb)
7366  p_bc = pbc((mc - 1)*2 + mb)
7367  DO ma = 1, 1
7368  p_index = p_index + 1
7369  tmp = scale*prim(p_index)
7370  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
7371  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
7372  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
7373  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
7374  END DO
7375  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
7376  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
7377  END DO
7378  END DO
7379  END DO
7380  END SUBROUTINE block_1_2_3
7381 ! **************************************************************************************************
7382 !> \brief ...
7383 !> \param kbd ...
7384 !> \param kbc ...
7385 !> \param kad ...
7386 !> \param kac ...
7387 !> \param pbd ...
7388 !> \param pbc ...
7389 !> \param pad ...
7390 !> \param pac ...
7391 !> \param prim ...
7392 !> \param scale ...
7393 ! **************************************************************************************************
7394  SUBROUTINE block_1_2_4_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
7395  REAL(kind=dp) :: kbd(2*1), kbc(2*4), kad(1*1), kac(1*4), &
7396  pbd(2*1), pbc(2*4), pad(1*1), &
7397  pac(1*4), prim(1*2*4*1), scale
7398 
7399  INTEGER :: ma, mb, mc, md, p_index
7400  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
7401 
7402  kbd(1:2*1) = 0.0_dp
7403  kbc(1:2*4) = 0.0_dp
7404  kad(1:1*1) = 0.0_dp
7405  kac(1:1*4) = 0.0_dp
7406  p_index = 0
7407  DO md = 1, 1
7408  DO mc = 1, 4
7409  DO mb = 1, 2
7410  ks_bd = 0.0_dp
7411  ks_bc = 0.0_dp
7412  p_bd = pbd((md - 1)*2 + mb)
7413  p_bc = pbc((mc - 1)*2 + mb)
7414  DO ma = 1, 1
7415  p_index = p_index + 1
7416  tmp = scale*prim(p_index)
7417  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
7418  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
7419  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
7420  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
7421  END DO
7422  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
7423  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
7424  END DO
7425  END DO
7426  END DO
7427  END SUBROUTINE block_1_2_4_1
7428 ! **************************************************************************************************
7429 !> \brief ...
7430 !> \param kbd ...
7431 !> \param kbc ...
7432 !> \param kad ...
7433 !> \param kac ...
7434 !> \param pbd ...
7435 !> \param pbc ...
7436 !> \param pad ...
7437 !> \param pac ...
7438 !> \param prim ...
7439 !> \param scale ...
7440 ! **************************************************************************************************
7441  SUBROUTINE block_1_2_4_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
7442  REAL(kind=dp) :: kbd(2*2), kbc(2*4), kad(1*2), kac(1*4), &
7443  pbd(2*2), pbc(2*4), pad(1*2), &
7444  pac(1*4), prim(1*2*4*2), scale
7445 
7446  INTEGER :: ma, mb, mc, md, p_index
7447  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
7448 
7449  kbd(1:2*2) = 0.0_dp
7450  kbc(1:2*4) = 0.0_dp
7451  kad(1:1*2) = 0.0_dp
7452  kac(1:1*4) = 0.0_dp
7453  p_index = 0
7454  DO md = 1, 2
7455  DO mc = 1, 4
7456  DO mb = 1, 2
7457  ks_bd = 0.0_dp
7458  ks_bc = 0.0_dp
7459  p_bd = pbd((md - 1)*2 + mb)
7460  p_bc = pbc((mc - 1)*2 + mb)
7461  DO ma = 1, 1
7462  p_index = p_index + 1
7463  tmp = scale*prim(p_index)
7464  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
7465  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
7466  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
7467  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
7468  END DO
7469  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
7470  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
7471  END DO
7472  END DO
7473  END DO
7474  END SUBROUTINE block_1_2_4_2
7475 ! **************************************************************************************************
7476 !> \brief ...
7477 !> \param md_max ...
7478 !> \param kbd ...
7479 !> \param kbc ...
7480 !> \param kad ...
7481 !> \param kac ...
7482 !> \param pbd ...
7483 !> \param pbc ...
7484 !> \param pad ...
7485 !> \param pac ...
7486 !> \param prim ...
7487 !> \param scale ...
7488 ! **************************************************************************************************
7489  SUBROUTINE block_1_2_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
7490  INTEGER :: md_max
7491  REAL(kind=dp) :: kbd(2*md_max), kbc(2*4), kad(1*md_max), kac(1*4), pbd(2*md_max), pbc(2*4), &
7492  pad(1*md_max), pac(1*4), prim(1*2*4*md_max), scale
7493 
7494  INTEGER :: ma, mb, mc, md, p_index
7495  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
7496 
7497  kbd(1:2*md_max) = 0.0_dp
7498  kbc(1:2*4) = 0.0_dp
7499  kad(1:1*md_max) = 0.0_dp
7500  kac(1:1*4) = 0.0_dp
7501  p_index = 0
7502  DO md = 1, md_max
7503  DO mc = 1, 4
7504  DO mb = 1, 2
7505  ks_bd = 0.0_dp
7506  ks_bc = 0.0_dp
7507  p_bd = pbd((md - 1)*2 + mb)
7508  p_bc = pbc((mc - 1)*2 + mb)
7509  DO ma = 1, 1
7510  p_index = p_index + 1
7511  tmp = scale*prim(p_index)
7512  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
7513  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
7514  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
7515  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
7516  END DO
7517  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
7518  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
7519  END DO
7520  END DO
7521  END DO
7522  END SUBROUTINE block_1_2_4
7523 ! **************************************************************************************************
7524 !> \brief ...
7525 !> \param kbd ...
7526 !> \param kbc ...
7527 !> \param kad ...
7528 !> \param kac ...
7529 !> \param pbd ...
7530 !> \param pbc ...
7531 !> \param pad ...
7532 !> \param pac ...
7533 !> \param prim ...
7534 !> \param scale ...
7535 ! **************************************************************************************************
7536  SUBROUTINE block_1_2_5_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
7537  REAL(kind=dp) :: kbd(2*1), kbc(2*5), kad(1*1), kac(1*5), &
7538  pbd(2*1), pbc(2*5), pad(1*1), &
7539  pac(1*5), prim(1*2*5*1), scale
7540 
7541  INTEGER :: ma, mb, mc, md, p_index
7542  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
7543 
7544  kbd(1:2*1) = 0.0_dp
7545  kbc(1:2*5) = 0.0_dp
7546  kad(1:1*1) = 0.0_dp
7547  kac(1:1*5) = 0.0_dp
7548  p_index = 0
7549  DO md = 1, 1
7550  DO mc = 1, 5
7551  DO mb = 1, 2
7552  ks_bd = 0.0_dp
7553  ks_bc = 0.0_dp
7554  p_bd = pbd((md - 1)*2 + mb)
7555  p_bc = pbc((mc - 1)*2 + mb)
7556  DO ma = 1, 1
7557  p_index = p_index + 1
7558  tmp = scale*prim(p_index)
7559  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
7560  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
7561  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
7562  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
7563  END DO
7564  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
7565  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
7566  END DO
7567  END DO
7568  END DO
7569  END SUBROUTINE block_1_2_5_1
7570 ! **************************************************************************************************
7571 !> \brief ...
7572 !> \param md_max ...
7573 !> \param kbd ...
7574 !> \param kbc ...
7575 !> \param kad ...
7576 !> \param kac ...
7577 !> \param pbd ...
7578 !> \param pbc ...
7579 !> \param pad ...
7580 !> \param pac ...
7581 !> \param prim ...
7582 !> \param scale ...
7583 ! **************************************************************************************************
7584  SUBROUTINE block_1_2_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
7585  INTEGER :: md_max
7586  REAL(kind=dp) :: kbd(2*md_max), kbc(2*5), kad(1*md_max), kac(1*5), pbd(2*md_max), pbc(2*5), &
7587  pad(1*md_max), pac(1*5), prim(1*2*5*md_max), scale
7588 
7589  INTEGER :: ma, mb, mc, md, p_index
7590  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
7591 
7592  kbd(1:2*md_max) = 0.0_dp
7593  kbc(1:2*5) = 0.0_dp
7594  kad(1:1*md_max) = 0.0_dp
7595  kac(1:1*5) = 0.0_dp
7596  p_index = 0
7597  DO md = 1, md_max
7598  DO mc = 1, 5
7599  DO mb = 1, 2
7600  ks_bd = 0.0_dp
7601  ks_bc = 0.0_dp
7602  p_bd = pbd((md - 1)*2 + mb)
7603  p_bc = pbc((mc - 1)*2 + mb)
7604  DO ma = 1, 1
7605  p_index = p_index + 1
7606  tmp = scale*prim(p_index)
7607  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
7608  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
7609  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
7610  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
7611  END DO
7612  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
7613  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
7614  END DO
7615  END DO
7616  END DO
7617  END SUBROUTINE block_1_2_5
7618 ! **************************************************************************************************
7619 !> \brief ...
7620 !> \param kbd ...
7621 !> \param kbc ...
7622 !> \param kad ...
7623 !> \param kac ...
7624 !> \param pbd ...
7625 !> \param pbc ...
7626 !> \param pad ...
7627 !> \param pac ...
7628 !> \param prim ...
7629 !> \param scale ...
7630 ! **************************************************************************************************
7631  SUBROUTINE block_1_2_6_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
7632  REAL(kind=dp) :: kbd(2*1), kbc(2*6), kad(1*1), kac(1*6), &
7633  pbd(2*1), pbc(2*6), pad(1*1), &
7634  pac(1*6), prim(1*2*6*1), scale
7635 
7636  INTEGER :: ma, mb, mc, md, p_index
7637  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
7638 
7639  kbd(1:2*1) = 0.0_dp
7640  kbc(1:2*6) = 0.0_dp
7641  kad(1:1*1) = 0.0_dp
7642  kac(1:1*6) = 0.0_dp
7643  p_index = 0
7644  DO md = 1, 1
7645  DO mc = 1, 6
7646  DO mb = 1, 2
7647  ks_bd = 0.0_dp
7648  ks_bc = 0.0_dp
7649  p_bd = pbd((md - 1)*2 + mb)
7650  p_bc = pbc((mc - 1)*2 + mb)
7651  DO ma = 1, 1
7652  p_index = p_index + 1
7653  tmp = scale*prim(p_index)
7654  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
7655  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
7656  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
7657  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
7658  END DO
7659  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
7660  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
7661  END DO
7662  END DO
7663  END DO
7664  END SUBROUTINE block_1_2_6_1
7665 ! **************************************************************************************************
7666 !> \brief ...
7667 !> \param md_max ...
7668 !> \param kbd ...
7669 !> \param kbc ...
7670 !> \param kad ...
7671 !> \param kac ...
7672 !> \param pbd ...
7673 !> \param pbc ...
7674 !> \param pad ...
7675 !> \param pac ...
7676 !> \param prim ...
7677 !> \param scale ...
7678 ! **************************************************************************************************
7679  SUBROUTINE block_1_2_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
7680  INTEGER :: md_max
7681  REAL(kind=dp) :: kbd(2*md_max), kbc(2*6), kad(1*md_max), kac(1*6), pbd(2*md_max), pbc(2*6), &
7682  pad(1*md_max), pac(1*6), prim(1*2*6*md_max), scale
7683 
7684  INTEGER :: ma, mb, mc, md, p_index
7685  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
7686 
7687  kbd(1:2*md_max) = 0.0_dp
7688  kbc(1:2*6) = 0.0_dp
7689  kad(1:1*md_max) = 0.0_dp
7690  kac(1:1*6) = 0.0_dp
7691  p_index = 0
7692  DO md = 1, md_max
7693  DO mc = 1, 6
7694  DO mb = 1, 2
7695  ks_bd = 0.0_dp
7696  ks_bc = 0.0_dp
7697  p_bd = pbd((md - 1)*2 + mb)
7698  p_bc = pbc((mc - 1)*2 + mb)
7699  DO ma = 1, 1
7700  p_index = p_index + 1
7701  tmp = scale*prim(p_index)
7702  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
7703  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
7704  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
7705  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
7706  END DO
7707  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
7708  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
7709  END DO
7710  END DO
7711  END DO
7712  END SUBROUTINE block_1_2_6
7713 ! **************************************************************************************************
7714 !> \brief ...
7715 !> \param kbd ...
7716 !> \param kbc ...
7717 !> \param kad ...
7718 !> \param kac ...
7719 !> \param pbd ...
7720 !> \param pbc ...
7721 !> \param pad ...
7722 !> \param pac ...
7723 !> \param prim ...
7724 !> \param scale ...
7725 ! **************************************************************************************************
7726  SUBROUTINE block_1_2_7_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
7727  REAL(kind=dp) :: kbd(2*1), kbc(2*7), kad(1*1), kac(1*7), &
7728  pbd(2*1), pbc(2*7), pad(1*1), &
7729  pac(1*7), prim(1*2*7*1), scale
7730 
7731  INTEGER :: ma, mb, mc, md, p_index
7732  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
7733 
7734  kbd(1:2*1) = 0.0_dp
7735  kbc(1:2*7) = 0.0_dp
7736  kad(1:1*1) = 0.0_dp
7737  kac(1:1*7) = 0.0_dp
7738  p_index = 0
7739  DO md = 1, 1
7740  DO mc = 1, 7
7741  DO mb = 1, 2
7742  ks_bd = 0.0_dp
7743  ks_bc = 0.0_dp
7744  p_bd = pbd((md - 1)*2 + mb)
7745  p_bc = pbc((mc - 1)*2 + mb)
7746  DO ma = 1, 1
7747  p_index = p_index + 1
7748  tmp = scale*prim(p_index)
7749  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
7750  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
7751  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
7752  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
7753  END DO
7754  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
7755  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
7756  END DO
7757  END DO
7758  END DO
7759  END SUBROUTINE block_1_2_7_1
7760 ! **************************************************************************************************
7761 !> \brief ...
7762 !> \param md_max ...
7763 !> \param kbd ...
7764 !> \param kbc ...
7765 !> \param kad ...
7766 !> \param kac ...
7767 !> \param pbd ...
7768 !> \param pbc ...
7769 !> \param pad ...
7770 !> \param pac ...
7771 !> \param prim ...
7772 !> \param scale ...
7773 ! **************************************************************************************************
7774  SUBROUTINE block_1_2_7(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
7775  INTEGER :: md_max
7776  REAL(kind=dp) :: kbd(2*md_max), kbc(2*7), kad(1*md_max), kac(1*7), pbd(2*md_max), pbc(2*7), &
7777  pad(1*md_max), pac(1*7), prim(1*2*7*md_max), scale
7778 
7779  INTEGER :: ma, mb, mc, md, p_index
7780  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
7781 
7782  kbd(1:2*md_max) = 0.0_dp
7783  kbc(1:2*7) = 0.0_dp
7784  kad(1:1*md_max) = 0.0_dp
7785  kac(1:1*7) = 0.0_dp
7786  p_index = 0
7787  DO md = 1, md_max
7788  DO mc = 1, 7
7789  DO mb = 1, 2
7790  ks_bd = 0.0_dp
7791  ks_bc = 0.0_dp
7792  p_bd = pbd((md - 1)*2 + mb)
7793  p_bc = pbc((mc - 1)*2 + mb)
7794  DO ma = 1, 1
7795  p_index = p_index + 1
7796  tmp = scale*prim(p_index)
7797  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
7798  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
7799  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
7800  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
7801  END DO
7802  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
7803  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
7804  END DO
7805  END DO
7806  END DO
7807  END SUBROUTINE block_1_2_7
7808 ! **************************************************************************************************
7809 !> \brief ...
7810 !> \param kbd ...
7811 !> \param kbc ...
7812 !> \param kad ...
7813 !> \param kac ...
7814 !> \param pbd ...
7815 !> \param pbc ...
7816 !> \param pad ...
7817 !> \param pac ...
7818 !> \param prim ...
7819 !> \param scale ...
7820 ! **************************************************************************************************
7821  SUBROUTINE block_1_2_9_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
7822  REAL(kind=dp) :: kbd(2*1), kbc(2*9), kad(1*1), kac(1*9), &
7823  pbd(2*1), pbc(2*9), pad(1*1), &
7824  pac(1*9), prim(1*2*9*1), scale
7825 
7826  INTEGER :: ma, mb, mc, md, p_index
7827  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
7828 
7829  kbd(1:2*1) = 0.0_dp
7830  kbc(1:2*9) = 0.0_dp
7831  kad(1:1*1) = 0.0_dp
7832  kac(1:1*9) = 0.0_dp
7833  p_index = 0
7834  DO md = 1, 1
7835  DO mc = 1, 9
7836  DO mb = 1, 2
7837  ks_bd = 0.0_dp
7838  ks_bc = 0.0_dp
7839  p_bd = pbd((md - 1)*2 + mb)
7840  p_bc = pbc((mc - 1)*2 + mb)
7841  DO ma = 1, 1
7842  p_index = p_index + 1
7843  tmp = scale*prim(p_index)
7844  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
7845  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
7846  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
7847  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
7848  END DO
7849  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
7850  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
7851  END DO
7852  END DO
7853  END DO
7854  END SUBROUTINE block_1_2_9_1
7855 ! **************************************************************************************************
7856 !> \brief ...
7857 !> \param md_max ...
7858 !> \param kbd ...
7859 !> \param kbc ...
7860 !> \param kad ...
7861 !> \param kac ...
7862 !> \param pbd ...
7863 !> \param pbc ...
7864 !> \param pad ...
7865 !> \param pac ...
7866 !> \param prim ...
7867 !> \param scale ...
7868 ! **************************************************************************************************
7869  SUBROUTINE block_1_2_9(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
7870  INTEGER :: md_max
7871  REAL(kind=dp) :: kbd(2*md_max), kbc(2*9), kad(1*md_max), kac(1*9), pbd(2*md_max), pbc(2*9), &
7872  pad(1*md_max), pac(1*9), prim(1*2*9*md_max), scale
7873 
7874  INTEGER :: ma, mb, mc, md, p_index
7875  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
7876 
7877  kbd(1:2*md_max) = 0.0_dp
7878  kbc(1:2*9) = 0.0_dp
7879  kad(1:1*md_max) = 0.0_dp
7880  kac(1:1*9) = 0.0_dp
7881  p_index = 0
7882  DO md = 1, md_max
7883  DO mc = 1, 9
7884  DO mb = 1, 2
7885  ks_bd = 0.0_dp
7886  ks_bc = 0.0_dp
7887  p_bd = pbd((md - 1)*2 + mb)
7888  p_bc = pbc((mc - 1)*2 + mb)
7889  DO ma = 1, 1
7890  p_index = p_index + 1
7891  tmp = scale*prim(p_index)
7892  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
7893  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
7894  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
7895  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
7896  END DO
7897  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
7898  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
7899  END DO
7900  END DO
7901  END DO
7902  END SUBROUTINE block_1_2_9
7903 ! **************************************************************************************************
7904 !> \brief ...
7905 !> \param mc_max ...
7906 !> \param md_max ...
7907 !> \param kbd ...
7908 !> \param kbc ...
7909 !> \param kad ...
7910 !> \param kac ...
7911 !> \param pbd ...
7912 !> \param pbc ...
7913 !> \param pad ...
7914 !> \param pac ...
7915 !> \param prim ...
7916 !> \param scale ...
7917 ! **************************************************************************************************
7918  SUBROUTINE block_1_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
7919  INTEGER :: mc_max, md_max
7920  REAL(kind=dp) :: kbd(2*md_max), kbc(2*mc_max), kad(1*md_max), kac(1*mc_max), pbd(2*md_max), &
7921  pbc(2*mc_max), pad(1*md_max), pac(1*mc_max), prim(1*2*mc_max*md_max), scale
7922 
7923  INTEGER :: ma, mb, mc, md, p_index
7924  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
7925 
7926  kbd(1:2*md_max) = 0.0_dp
7927  kbc(1:2*mc_max) = 0.0_dp
7928  kad(1:1*md_max) = 0.0_dp
7929  kac(1:1*mc_max) = 0.0_dp
7930  p_index = 0
7931  DO md = 1, md_max
7932  DO mc = 1, mc_max
7933  DO mb = 1, 2
7934  ks_bd = 0.0_dp
7935  ks_bc = 0.0_dp
7936  p_bd = pbd((md - 1)*2 + mb)
7937  p_bc = pbc((mc - 1)*2 + mb)
7938  DO ma = 1, 1
7939  p_index = p_index + 1
7940  tmp = scale*prim(p_index)
7941  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
7942  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
7943  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
7944  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
7945  END DO
7946  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
7947  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
7948  END DO
7949  END DO
7950  END DO
7951  END SUBROUTINE block_1_2
7952 ! **************************************************************************************************
7953 !> \brief ...
7954 !> \param kbd ...
7955 !> \param kbc ...
7956 !> \param kad ...
7957 !> \param kac ...
7958 !> \param pbd ...
7959 !> \param pbc ...
7960 !> \param pad ...
7961 !> \param pac ...
7962 !> \param prim ...
7963 !> \param scale ...
7964 ! **************************************************************************************************
7965  SUBROUTINE block_1_3_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
7966  REAL(kind=dp) :: kbd(3*1), kbc(3*1), kad(1*1), kac(1*1), &
7967  pbd(3*1), pbc(3*1), pad(1*1), &
7968  pac(1*1), prim(1*3*1*1), scale
7969 
7970  INTEGER :: ma, mb, mc, md, p_index
7971  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
7972 
7973  kbd(1:3*1) = 0.0_dp
7974  kbc(1:3*1) = 0.0_dp
7975  kad(1:1*1) = 0.0_dp
7976  kac(1:1*1) = 0.0_dp
7977  p_index = 0
7978  DO md = 1, 1
7979  DO mc = 1, 1
7980  DO mb = 1, 3
7981  ks_bd = 0.0_dp
7982  ks_bc = 0.0_dp
7983  p_bd = pbd((md - 1)*3 + mb)
7984  p_bc = pbc((mc - 1)*3 + mb)
7985  DO ma = 1, 1
7986  p_index = p_index + 1
7987  tmp = scale*prim(p_index)
7988  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
7989  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
7990  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
7991  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
7992  END DO
7993  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
7994  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
7995  END DO
7996  END DO
7997  END DO
7998  END SUBROUTINE block_1_3_1_1
7999 ! **************************************************************************************************
8000 !> \brief ...
8001 !> \param kbd ...
8002 !> \param kbc ...
8003 !> \param kad ...
8004 !> \param kac ...
8005 !> \param pbd ...
8006 !> \param pbc ...
8007 !> \param pad ...
8008 !> \param pac ...
8009 !> \param prim ...
8010 !> \param scale ...
8011 ! **************************************************************************************************
8012  SUBROUTINE block_1_3_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
8013  REAL(kind=dp) :: kbd(3*2), kbc(3*1), kad(1*2), kac(1*1), &
8014  pbd(3*2), pbc(3*1), pad(1*2), &
8015  pac(1*1), prim(1*3*1*2), scale
8016 
8017  INTEGER :: ma, mb, mc, md, p_index
8018  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
8019 
8020  kbd(1:3*2) = 0.0_dp
8021  kbc(1:3*1) = 0.0_dp
8022  kad(1:1*2) = 0.0_dp
8023  kac(1:1*1) = 0.0_dp
8024  p_index = 0
8025  DO md = 1, 2
8026  DO mc = 1, 1
8027  DO mb = 1, 3
8028  ks_bd = 0.0_dp
8029  ks_bc = 0.0_dp
8030  p_bd = pbd((md - 1)*3 + mb)
8031  p_bc = pbc((mc - 1)*3 + mb)
8032  DO ma = 1, 1
8033  p_index = p_index + 1
8034  tmp = scale*prim(p_index)
8035  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
8036  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
8037  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
8038  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
8039  END DO
8040  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
8041  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
8042  END DO
8043  END DO
8044  END DO
8045  END SUBROUTINE block_1_3_1_2
8046 ! **************************************************************************************************
8047 !> \brief ...
8048 !> \param kbd ...
8049 !> \param kbc ...
8050 !> \param kad ...
8051 !> \param kac ...
8052 !> \param pbd ...
8053 !> \param pbc ...
8054 !> \param pad ...
8055 !> \param pac ...
8056 !> \param prim ...
8057 !> \param scale ...
8058 ! **************************************************************************************************
8059  SUBROUTINE block_1_3_1_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
8060  REAL(kind=dp) :: kbd(3*3), kbc(3*1), kad(1*3), kac(1*1), &
8061  pbd(3*3), pbc(3*1), pad(1*3), &
8062  pac(1*1), prim(1*3*1*3), scale
8063 
8064  INTEGER :: ma, mb, mc, md, p_index
8065  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
8066 
8067  kbd(1:3*3) = 0.0_dp
8068  kbc(1:3*1) = 0.0_dp
8069  kad(1:1*3) = 0.0_dp
8070  kac(1:1*1) = 0.0_dp
8071  p_index = 0
8072  DO md = 1, 3
8073  DO mc = 1, 1
8074  DO mb = 1, 3
8075  ks_bd = 0.0_dp
8076  ks_bc = 0.0_dp
8077  p_bd = pbd((md - 1)*3 + mb)
8078  p_bc = pbc((mc - 1)*3 + mb)
8079  DO ma = 1, 1
8080  p_index = p_index + 1
8081  tmp = scale*prim(p_index)
8082  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
8083  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
8084  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
8085  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
8086  END DO
8087  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
8088  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
8089  END DO
8090  END DO
8091  END DO
8092  END SUBROUTINE block_1_3_1_3
8093 ! **************************************************************************************************
8094 !> \brief ...
8095 !> \param kbd ...
8096 !> \param kbc ...
8097 !> \param kad ...
8098 !> \param kac ...
8099 !> \param pbd ...
8100 !> \param pbc ...
8101 !> \param pad ...
8102 !> \param pac ...
8103 !> \param prim ...
8104 !> \param scale ...
8105 ! **************************************************************************************************
8106  SUBROUTINE block_1_3_1_4(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
8107  REAL(kind=dp) :: kbd(3*4), kbc(3*1), kad(1*4), kac(1*1), &
8108  pbd(3*4), pbc(3*1), pad(1*4), &
8109  pac(1*1), prim(1*3*1*4), scale
8110 
8111  INTEGER :: ma, mb, mc, md, p_index
8112  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
8113 
8114  kbd(1:3*4) = 0.0_dp
8115  kbc(1:3*1) = 0.0_dp
8116  kad(1:1*4) = 0.0_dp
8117  kac(1:1*1) = 0.0_dp
8118  p_index = 0
8119  DO md = 1, 4
8120  DO mc = 1, 1
8121  DO mb = 1, 3
8122  ks_bd = 0.0_dp
8123  ks_bc = 0.0_dp
8124  p_bd = pbd((md - 1)*3 + mb)
8125  p_bc = pbc((mc - 1)*3 + mb)
8126  DO ma = 1, 1
8127  p_index = p_index + 1
8128  tmp = scale*prim(p_index)
8129  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
8130  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
8131  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
8132  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
8133  END DO
8134  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
8135  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
8136  END DO
8137  END DO
8138  END DO
8139  END SUBROUTINE block_1_3_1_4
8140 ! **************************************************************************************************
8141 !> \brief ...
8142 !> \param kbd ...
8143 !> \param kbc ...
8144 !> \param kad ...
8145 !> \param kac ...
8146 !> \param pbd ...
8147 !> \param pbc ...
8148 !> \param pad ...
8149 !> \param pac ...
8150 !> \param prim ...
8151 !> \param scale ...
8152 ! **************************************************************************************************
8153  SUBROUTINE block_1_3_1_5(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
8154  REAL(kind=dp) :: kbd(3*5), kbc(3*1), kad(1*5), kac(1*1), &
8155  pbd(3*5), pbc(3*1), pad(1*5), &
8156  pac(1*1), prim(1*3*1*5), scale
8157 
8158  INTEGER :: ma, mb, mc, md, p_index
8159  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
8160 
8161  kbd(1:3*5) = 0.0_dp
8162  kbc(1:3*1) = 0.0_dp
8163  kad(1:1*5) = 0.0_dp
8164  kac(1:1*1) = 0.0_dp
8165  p_index = 0
8166  DO md = 1, 5
8167  DO mc = 1, 1
8168  DO mb = 1, 3
8169  ks_bd = 0.0_dp
8170  ks_bc = 0.0_dp
8171  p_bd = pbd((md - 1)*3 + mb)
8172  p_bc = pbc((mc - 1)*3 + mb)
8173  DO ma = 1, 1
8174  p_index = p_index + 1
8175  tmp = scale*prim(p_index)
8176  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
8177  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
8178  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
8179  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
8180  END DO
8181  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
8182  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
8183  END DO
8184  END DO
8185  END DO
8186  END SUBROUTINE block_1_3_1_5
8187 ! **************************************************************************************************
8188 !> \brief ...
8189 !> \param kbd ...
8190 !> \param kbc ...
8191 !> \param kad ...
8192 !> \param kac ...
8193 !> \param pbd ...
8194 !> \param pbc ...
8195 !> \param pad ...
8196 !> \param pac ...
8197 !> \param prim ...
8198 !> \param scale ...
8199 ! **************************************************************************************************
8200  SUBROUTINE block_1_3_1_6(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
8201  REAL(kind=dp) :: kbd(3*6), kbc(3*1), kad(1*6), kac(1*1), &
8202  pbd(3*6), pbc(3*1), pad(1*6), &
8203  pac(1*1), prim(1*3*1*6), scale
8204 
8205  INTEGER :: ma, mb, mc, md, p_index
8206  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
8207 
8208  kbd(1:3*6) = 0.0_dp
8209  kbc(1:3*1) = 0.0_dp
8210  kad(1:1*6) = 0.0_dp
8211  kac(1:1*1) = 0.0_dp
8212  p_index = 0
8213  DO md = 1, 6
8214  DO mc = 1, 1
8215  DO mb = 1, 3
8216  ks_bd = 0.0_dp
8217  ks_bc = 0.0_dp
8218  p_bd = pbd((md - 1)*3 + mb)
8219  p_bc = pbc((mc - 1)*3 + mb)
8220  DO ma = 1, 1
8221  p_index = p_index + 1
8222  tmp = scale*prim(p_index)
8223  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
8224  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
8225  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
8226  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
8227  END DO
8228  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
8229  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
8230  END DO
8231  END DO
8232  END DO
8233  END SUBROUTINE block_1_3_1_6
8234 ! **************************************************************************************************
8235 !> \brief ...
8236 !> \param md_max ...
8237 !> \param kbd ...
8238 !> \param kbc ...
8239 !> \param kad ...
8240 !> \param kac ...
8241 !> \param pbd ...
8242 !> \param pbc ...
8243 !> \param pad ...
8244 !> \param pac ...
8245 !> \param prim ...
8246 !> \param scale ...
8247 ! **************************************************************************************************
8248  SUBROUTINE block_1_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
8249  INTEGER :: md_max
8250  REAL(kind=dp) :: kbd(3*md_max), kbc(3*1), kad(1*md_max), kac(1*1), pbd(3*md_max), pbc(3*1), &
8251  pad(1*md_max), pac(1*1), prim(1*3*1*md_max), scale
8252 
8253  INTEGER :: ma, mb, mc, md, p_index
8254  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
8255 
8256  kbd(1:3*md_max) = 0.0_dp
8257  kbc(1:3*1) = 0.0_dp
8258  kad(1:1*md_max) = 0.0_dp
8259  kac(1:1*1) = 0.0_dp
8260  p_index = 0
8261  DO md = 1, md_max
8262  DO mc = 1, 1
8263  DO mb = 1, 3
8264  ks_bd = 0.0_dp
8265  ks_bc = 0.0_dp
8266  p_bd = pbd((md - 1)*3 + mb)
8267  p_bc = pbc((mc - 1)*3 + mb)
8268  DO ma = 1, 1
8269  p_index = p_index + 1
8270  tmp = scale*prim(p_index)
8271  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
8272  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
8273  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
8274  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
8275  END DO
8276  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
8277  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
8278  END DO
8279  END DO
8280  END DO
8281  END SUBROUTINE block_1_3_1
8282 ! **************************************************************************************************
8283 !> \brief ...
8284 !> \param kbd ...
8285 !> \param kbc ...
8286 !> \param kad ...
8287 !> \param kac ...
8288 !> \param pbd ...
8289 !> \param pbc ...
8290 !> \param pad ...
8291 !> \param pac ...
8292 !> \param prim ...
8293 !> \param scale ...
8294 ! **************************************************************************************************
8295  SUBROUTINE block_1_3_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
8296  REAL(kind=dp) :: kbd(3*1), kbc(3*2), kad(1*1), kac(1*2), &
8297  pbd(3*1), pbc(3*2), pad(1*1), &
8298  pac(1*2), prim(1*3*2*1), scale
8299 
8300  INTEGER :: ma, mb, mc, md, p_index
8301  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
8302 
8303  kbd(1:3*1) = 0.0_dp
8304  kbc(1:3*2) = 0.0_dp
8305  kad(1:1*1) = 0.0_dp
8306  kac(1:1*2) = 0.0_dp
8307  p_index = 0
8308  DO md = 1, 1
8309  DO mc = 1, 2
8310  DO mb = 1, 3
8311  ks_bd = 0.0_dp
8312  ks_bc = 0.0_dp
8313  p_bd = pbd((md - 1)*3 + mb)
8314  p_bc = pbc((mc - 1)*3 + mb)
8315  DO ma = 1, 1
8316  p_index = p_index + 1
8317  tmp = scale*prim(p_index)
8318  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
8319  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
8320  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
8321  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
8322  END DO
8323  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
8324  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
8325  END DO
8326  END DO
8327  END DO
8328  END SUBROUTINE block_1_3_2_1
8329 ! **************************************************************************************************
8330 !> \brief ...
8331 !> \param kbd ...
8332 !> \param kbc ...
8333 !> \param kad ...
8334 !> \param kac ...
8335 !> \param pbd ...
8336 !> \param pbc ...
8337 !> \param pad ...
8338 !> \param pac ...
8339 !> \param prim ...
8340 !> \param scale ...
8341 ! **************************************************************************************************
8342  SUBROUTINE block_1_3_2_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
8343  REAL(kind=dp) :: kbd(3*2), kbc(3*2), kad(1*2), kac(1*2), &
8344  pbd(3*2), pbc(3*2), pad(1*2), &
8345  pac(1*2), prim(1*3*2*2), scale
8346 
8347  INTEGER :: ma, mb, mc, md, p_index
8348  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
8349 
8350  kbd(1:3*2) = 0.0_dp
8351  kbc(1:3*2) = 0.0_dp
8352  kad(1:1*2) = 0.0_dp
8353  kac(1:1*2) = 0.0_dp
8354  p_index = 0
8355  DO md = 1, 2
8356  DO mc = 1, 2
8357  DO mb = 1, 3
8358  ks_bd = 0.0_dp
8359  ks_bc = 0.0_dp
8360  p_bd = pbd((md - 1)*3 + mb)
8361  p_bc = pbc((mc - 1)*3 + mb)
8362  DO ma = 1, 1
8363  p_index = p_index + 1
8364  tmp = scale*prim(p_index)
8365  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
8366  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
8367  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
8368  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
8369  END DO
8370  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
8371  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
8372  END DO
8373  END DO
8374  END DO
8375  END SUBROUTINE block_1_3_2_2
8376 ! **************************************************************************************************
8377 !> \brief ...
8378 !> \param kbd ...
8379 !> \param kbc ...
8380 !> \param kad ...
8381 !> \param kac ...
8382 !> \param pbd ...
8383 !> \param pbc ...
8384 !> \param pad ...
8385 !> \param pac ...
8386 !> \param prim ...
8387 !> \param scale ...
8388 ! **************************************************************************************************
8389  SUBROUTINE block_1_3_2_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
8390  REAL(kind=dp) :: kbd(3*3), kbc(3*2), kad(1*3), kac(1*2), &
8391  pbd(3*3), pbc(3*2), pad(1*3), &
8392  pac(1*2), prim(1*3*2*3), scale
8393 
8394  INTEGER :: ma, mb, mc, md, p_index
8395  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
8396 
8397  kbd(1:3*3) = 0.0_dp
8398  kbc(1:3*2) = 0.0_dp
8399  kad(1:1*3) = 0.0_dp
8400  kac(1:1*2) = 0.0_dp
8401  p_index = 0
8402  DO md = 1, 3
8403  DO mc = 1, 2
8404  DO mb = 1, 3
8405  ks_bd = 0.0_dp
8406  ks_bc = 0.0_dp
8407  p_bd = pbd((md - 1)*3 + mb)
8408  p_bc = pbc((mc - 1)*3 + mb)
8409  DO ma = 1, 1
8410  p_index = p_index + 1
8411  tmp = scale*prim(p_index)
8412  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
8413  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
8414  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
8415  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
8416  END DO
8417  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
8418  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
8419  END DO
8420  END DO
8421  END DO
8422  END SUBROUTINE block_1_3_2_3
8423 ! **************************************************************************************************
8424 !> \brief ...
8425 !> \param md_max ...
8426 !> \param kbd ...
8427 !> \param kbc ...
8428 !> \param kad ...
8429 !> \param kac ...
8430 !> \param pbd ...
8431 !> \param pbc ...
8432 !> \param pad ...
8433 !> \param pac ...
8434 !> \param prim ...
8435 !> \param scale ...
8436 ! **************************************************************************************************
8437  SUBROUTINE block_1_3_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
8438  INTEGER :: md_max
8439  REAL(kind=dp) :: kbd(3*md_max), kbc(3*2), kad(1*md_max), kac(1*2), pbd(3*md_max), pbc(3*2), &
8440  pad(1*md_max), pac(1*2), prim(1*3*2*md_max), scale
8441 
8442  INTEGER :: ma, mb, mc, md, p_index
8443  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
8444 
8445  kbd(1:3*md_max) = 0.0_dp
8446  kbc(1:3*2) = 0.0_dp
8447  kad(1:1*md_max) = 0.0_dp
8448  kac(1:1*2) = 0.0_dp
8449  p_index = 0
8450  DO md = 1, md_max
8451  DO mc = 1, 2
8452  DO mb = 1, 3
8453  ks_bd = 0.0_dp
8454  ks_bc = 0.0_dp
8455  p_bd = pbd((md - 1)*3 + mb)
8456  p_bc = pbc((mc - 1)*3 + mb)
8457  DO ma = 1, 1
8458  p_index = p_index + 1
8459  tmp = scale*prim(p_index)
8460  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
8461  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
8462  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
8463  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
8464  END DO
8465  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
8466  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
8467  END DO
8468  END DO
8469  END DO
8470  END SUBROUTINE block_1_3_2
8471 ! **************************************************************************************************
8472 !> \brief ...
8473 !> \param kbd ...
8474 !> \param kbc ...
8475 !> \param kad ...
8476 !> \param kac ...
8477 !> \param pbd ...
8478 !> \param pbc ...
8479 !> \param pad ...
8480 !> \param pac ...
8481 !> \param prim ...
8482 !> \param scale ...
8483 ! **************************************************************************************************
8484  SUBROUTINE block_1_3_3_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
8485  REAL(kind=dp) :: kbd(3*1), kbc(3*3), kad(1*1), kac(1*3), &
8486  pbd(3*1), pbc(3*3), pad(1*1), &
8487  pac(1*3), prim(1*3*3*1), scale
8488 
8489  INTEGER :: ma, mb, mc, md, p_index
8490  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
8491 
8492  kbd(1:3*1) = 0.0_dp
8493  kbc(1:3*3) = 0.0_dp
8494  kad(1:1*1) = 0.0_dp
8495  kac(1:1*3) = 0.0_dp
8496  p_index = 0
8497  DO md = 1, 1
8498  DO mc = 1, 3
8499  DO mb = 1, 3
8500  ks_bd = 0.0_dp
8501  ks_bc = 0.0_dp
8502  p_bd = pbd((md - 1)*3 + mb)
8503  p_bc = pbc((mc - 1)*3 + mb)
8504  DO ma = 1, 1
8505  p_index = p_index + 1
8506  tmp = scale*prim(p_index)
8507  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
8508  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
8509  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
8510  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
8511  END DO
8512  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
8513  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
8514  END DO
8515  END DO
8516  END DO
8517  END SUBROUTINE block_1_3_3_1
8518 ! **************************************************************************************************
8519 !> \brief ...
8520 !> \param kbd ...
8521 !> \param kbc ...
8522 !> \param kad ...
8523 !> \param kac ...
8524 !> \param pbd ...
8525 !> \param pbc ...
8526 !> \param pad ...
8527 !> \param pac ...
8528 !> \param prim ...
8529 !> \param scale ...
8530 ! **************************************************************************************************
8531  SUBROUTINE block_1_3_3_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
8532  REAL(kind=dp) :: kbd(3*2), kbc(3*3), kad(1*2), kac(1*3), &
8533  pbd(3*2), pbc(3*3), pad(1*2), &
8534  pac(1*3), prim(1*3*3*2), scale
8535 
8536  INTEGER :: ma, mb, mc, md, p_index
8537  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
8538 
8539  kbd(1:3*2) = 0.0_dp
8540  kbc(1:3*3) = 0.0_dp
8541  kad(1:1*2) = 0.0_dp
8542  kac(1:1*3) = 0.0_dp
8543  p_index = 0
8544  DO md = 1, 2
8545  DO mc = 1, 3
8546  DO mb = 1, 3
8547  ks_bd = 0.0_dp
8548  ks_bc = 0.0_dp
8549  p_bd = pbd((md - 1)*3 + mb)
8550  p_bc = pbc((mc - 1)*3 + mb)
8551  DO ma = 1, 1
8552  p_index = p_index + 1
8553  tmp = scale*prim(p_index)
8554  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
8555  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
8556  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
8557  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
8558  END DO
8559  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
8560  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
8561  END DO
8562  END DO
8563  END DO
8564  END SUBROUTINE block_1_3_3_2
8565 ! **************************************************************************************************
8566 !> \brief ...
8567 !> \param md_max ...
8568 !> \param kbd ...
8569 !> \param kbc ...
8570 !> \param kad ...
8571 !> \param kac ...
8572 !> \param pbd ...
8573 !> \param pbc ...
8574 !> \param pad ...
8575 !> \param pac ...
8576 !> \param prim ...
8577 !> \param scale ...
8578 ! **************************************************************************************************
8579  SUBROUTINE block_1_3_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
8580  INTEGER :: md_max
8581  REAL(kind=dp) :: kbd(3*md_max), kbc(3*3), kad(1*md_max), kac(1*3), pbd(3*md_max), pbc(3*3), &
8582  pad(1*md_max), pac(1*3), prim(1*3*3*md_max), scale
8583 
8584  INTEGER :: ma, mb, mc, md, p_index
8585  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
8586 
8587  kbd(1:3*md_max) = 0.0_dp
8588  kbc(1:3*3) = 0.0_dp
8589  kad(1:1*md_max) = 0.0_dp
8590  kac(1:1*3) = 0.0_dp
8591  p_index = 0
8592  DO md = 1, md_max
8593  DO mc = 1, 3
8594  DO mb = 1, 3
8595  ks_bd = 0.0_dp
8596  ks_bc = 0.0_dp
8597  p_bd = pbd((md - 1)*3 + mb)
8598  p_bc = pbc((mc - 1)*3 + mb)
8599  DO ma = 1, 1
8600  p_index = p_index + 1
8601  tmp = scale*prim(p_index)
8602  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
8603  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
8604  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
8605  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
8606  END DO
8607  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
8608  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
8609  END DO
8610  END DO
8611  END DO
8612  END SUBROUTINE block_1_3_3
8613 ! **************************************************************************************************
8614 !> \brief ...
8615 !> \param kbd ...
8616 !> \param kbc ...
8617 !> \param kad ...
8618 !> \param kac ...
8619 !> \param pbd ...
8620 !> \param pbc ...
8621 !> \param pad ...
8622 !> \param pac ...
8623 !> \param prim ...
8624 !> \param scale ...
8625 ! **************************************************************************************************
8626  SUBROUTINE block_1_3_4_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
8627  REAL(kind=dp) :: kbd(3*1), kbc(3*4), kad(1*1), kac(1*4), &
8628  pbd(3*1), pbc(3*4), pad(1*1), &
8629  pac(1*4), prim(1*3*4*1), scale
8630 
8631  INTEGER :: ma, mb, mc, md, p_index
8632  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
8633 
8634  kbd(1:3*1) = 0.0_dp
8635  kbc(1:3*4) = 0.0_dp
8636  kad(1:1*1) = 0.0_dp
8637  kac(1:1*4) = 0.0_dp
8638  p_index = 0
8639  DO md = 1, 1
8640  DO mc = 1, 4
8641  DO mb = 1, 3
8642  ks_bd = 0.0_dp
8643  ks_bc = 0.0_dp
8644  p_bd = pbd((md - 1)*3 + mb)
8645  p_bc = pbc((mc - 1)*3 + mb)
8646  DO ma = 1, 1
8647  p_index = p_index + 1
8648  tmp = scale*prim(p_index)
8649  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
8650  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
8651  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
8652  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
8653  END DO
8654  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
8655  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
8656  END DO
8657  END DO
8658  END DO
8659  END SUBROUTINE block_1_3_4_1
8660 ! **************************************************************************************************
8661 !> \brief ...
8662 !> \param md_max ...
8663 !> \param kbd ...
8664 !> \param kbc ...
8665 !> \param kad ...
8666 !> \param kac ...
8667 !> \param pbd ...
8668 !> \param pbc ...
8669 !> \param pad ...
8670 !> \param pac ...
8671 !> \param prim ...
8672 !> \param scale ...
8673 ! **************************************************************************************************
8674  SUBROUTINE block_1_3_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
8675  INTEGER :: md_max
8676  REAL(kind=dp) :: kbd(3*md_max), kbc(3*4), kad(1*md_max), kac(1*4), pbd(3*md_max), pbc(3*4), &
8677  pad(1*md_max), pac(1*4), prim(1*3*4*md_max), scale
8678 
8679  INTEGER :: ma, mb, mc, md, p_index
8680  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
8681 
8682  kbd(1:3*md_max) = 0.0_dp
8683  kbc(1:3*4) = 0.0_dp
8684  kad(1:1*md_max) = 0.0_dp
8685  kac(1:1*4) = 0.0_dp
8686  p_index = 0
8687  DO md = 1, md_max
8688  DO mc = 1, 4
8689  DO mb = 1, 3
8690  ks_bd = 0.0_dp
8691  ks_bc = 0.0_dp
8692  p_bd = pbd((md - 1)*3 + mb)
8693  p_bc = pbc((mc - 1)*3 + mb)
8694  DO ma = 1, 1
8695  p_index = p_index + 1
8696  tmp = scale*prim(p_index)
8697  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
8698  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
8699  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
8700  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
8701  END DO
8702  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
8703  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
8704  END DO
8705  END DO
8706  END DO
8707  END SUBROUTINE block_1_3_4
8708 ! **************************************************************************************************
8709 !> \brief ...
8710 !> \param kbd ...
8711 !> \param kbc ...
8712 !> \param kad ...
8713 !> \param kac ...
8714 !> \param pbd ...
8715 !> \param pbc ...
8716 !> \param pad ...
8717 !> \param pac ...
8718 !> \param prim ...
8719 !> \param scale ...
8720 ! **************************************************************************************************
8721  SUBROUTINE block_1_3_5_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
8722  REAL(kind=dp) :: kbd(3*1), kbc(3*5), kad(1*1), kac(1*5), &
8723  pbd(3*1), pbc(3*5), pad(1*1), &
8724  pac(1*5), prim(1*3*5*1), scale
8725 
8726  INTEGER :: ma, mb, mc, md, p_index
8727  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
8728 
8729  kbd(1:3*1) = 0.0_dp
8730  kbc(1:3*5) = 0.0_dp
8731  kad(1:1*1) = 0.0_dp
8732  kac(1:1*5) = 0.0_dp
8733  p_index = 0
8734  DO md = 1, 1
8735  DO mc = 1, 5
8736  DO mb = 1, 3
8737  ks_bd = 0.0_dp
8738  ks_bc = 0.0_dp
8739  p_bd = pbd((md - 1)*3 + mb)
8740  p_bc = pbc((mc - 1)*3 + mb)
8741  DO ma = 1, 1
8742  p_index = p_index + 1
8743  tmp = scale*prim(p_index)
8744  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
8745  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
8746  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
8747  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
8748  END DO
8749  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
8750  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
8751  END DO
8752  END DO
8753  END DO
8754  END SUBROUTINE block_1_3_5_1
8755 ! **************************************************************************************************
8756 !> \brief ...
8757 !> \param md_max ...
8758 !> \param kbd ...
8759 !> \param kbc ...
8760 !> \param kad ...
8761 !> \param kac ...
8762 !> \param pbd ...
8763 !> \param pbc ...
8764 !> \param pad ...
8765 !> \param pac ...
8766 !> \param prim ...
8767 !> \param scale ...
8768 ! **************************************************************************************************
8769  SUBROUTINE block_1_3_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
8770  INTEGER :: md_max
8771  REAL(kind=dp) :: kbd(3*md_max), kbc(3*5), kad(1*md_max), kac(1*5), pbd(3*md_max), pbc(3*5), &
8772  pad(1*md_max), pac(1*5), prim(1*3*5*md_max), scale
8773 
8774  INTEGER :: ma, mb, mc, md, p_index
8775  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
8776 
8777  kbd(1:3*md_max) = 0.0_dp
8778  kbc(1:3*5) = 0.0_dp
8779  kad(1:1*md_max) = 0.0_dp
8780  kac(1:1*5) = 0.0_dp
8781  p_index = 0
8782  DO md = 1, md_max
8783  DO mc = 1, 5
8784  DO mb = 1, 3
8785  ks_bd = 0.0_dp
8786  ks_bc = 0.0_dp
8787  p_bd = pbd((md - 1)*3 + mb)
8788  p_bc = pbc((mc - 1)*3 + mb)
8789  DO ma = 1, 1
8790  p_index = p_index + 1
8791  tmp = scale*prim(p_index)
8792  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
8793  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
8794  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
8795  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
8796  END DO
8797  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
8798  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
8799  END DO
8800  END DO
8801  END DO
8802  END SUBROUTINE block_1_3_5
8803 ! **************************************************************************************************
8804 !> \brief ...
8805 !> \param kbd ...
8806 !> \param kbc ...
8807 !> \param kad ...
8808 !> \param kac ...
8809 !> \param pbd ...
8810 !> \param pbc ...
8811 !> \param pad ...
8812 !> \param pac ...
8813 !> \param prim ...
8814 !> \param scale ...
8815 ! **************************************************************************************************
8816  SUBROUTINE block_1_3_6_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
8817  REAL(kind=dp) :: kbd(3*1), kbc(3*6), kad(1*1), kac(1*6), &
8818  pbd(3*1), pbc(3*6), pad(1*1), &
8819  pac(1*6), prim(1*3*6*1), scale
8820 
8821  INTEGER :: ma, mb, mc, md, p_index
8822  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
8823 
8824  kbd(1:3*1) = 0.0_dp
8825  kbc(1:3*6) = 0.0_dp
8826  kad(1:1*1) = 0.0_dp
8827  kac(1:1*6) = 0.0_dp
8828  p_index = 0
8829  DO md = 1, 1
8830  DO mc = 1, 6
8831  DO mb = 1, 3
8832  ks_bd = 0.0_dp
8833  ks_bc = 0.0_dp
8834  p_bd = pbd((md - 1)*3 + mb)
8835  p_bc = pbc((mc - 1)*3 + mb)
8836  DO ma = 1, 1
8837  p_index = p_index + 1
8838  tmp = scale*prim(p_index)
8839  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
8840  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
8841  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
8842  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
8843  END DO
8844  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
8845  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
8846  END DO
8847  END DO
8848  END DO
8849  END SUBROUTINE block_1_3_6_1
8850 ! **************************************************************************************************
8851 !> \brief ...
8852 !> \param md_max ...
8853 !> \param kbd ...
8854 !> \param kbc ...
8855 !> \param kad ...
8856 !> \param kac ...
8857 !> \param pbd ...
8858 !> \param pbc ...
8859 !> \param pad ...
8860 !> \param pac ...
8861 !> \param prim ...
8862 !> \param scale ...
8863 ! **************************************************************************************************
8864  SUBROUTINE block_1_3_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
8865  INTEGER :: md_max
8866  REAL(kind=dp) :: kbd(3*md_max), kbc(3*6), kad(1*md_max), kac(1*6), pbd(3*md_max), pbc(3*6), &
8867  pad(1*md_max), pac(1*6), prim(1*3*6*md_max), scale
8868 
8869  INTEGER :: ma, mb, mc, md, p_index
8870  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
8871 
8872  kbd(1:3*md_max) = 0.0_dp
8873  kbc(1:3*6) = 0.0_dp
8874  kad(1:1*md_max) = 0.0_dp
8875  kac(1:1*6) = 0.0_dp
8876  p_index = 0
8877  DO md = 1, md_max
8878  DO mc = 1, 6
8879  DO mb = 1, 3
8880  ks_bd = 0.0_dp
8881  ks_bc = 0.0_dp
8882  p_bd = pbd((md - 1)*3 + mb)
8883  p_bc = pbc((mc - 1)*3 + mb)
8884  DO ma = 1, 1
8885  p_index = p_index + 1
8886  tmp = scale*prim(p_index)
8887  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
8888  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
8889  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
8890  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
8891  END DO
8892  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
8893  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
8894  END DO
8895  END DO
8896  END DO
8897  END SUBROUTINE block_1_3_6
8898 ! **************************************************************************************************
8899 !> \brief ...
8900 !> \param mc_max ...
8901 !> \param md_max ...
8902 !> \param kbd ...
8903 !> \param kbc ...
8904 !> \param kad ...
8905 !> \param kac ...
8906 !> \param pbd ...
8907 !> \param pbc ...
8908 !> \param pad ...
8909 !> \param pac ...
8910 !> \param prim ...
8911 !> \param scale ...
8912 ! **************************************************************************************************
8913  SUBROUTINE block_1_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
8914  INTEGER :: mc_max, md_max
8915  REAL(kind=dp) :: kbd(3*md_max), kbc(3*mc_max), kad(1*md_max), kac(1*mc_max), pbd(3*md_max), &
8916  pbc(3*mc_max), pad(1*md_max), pac(1*mc_max), prim(1*3*mc_max*md_max), scale
8917 
8918  INTEGER :: ma, mb, mc, md, p_index
8919  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
8920 
8921  kbd(1:3*md_max) = 0.0_dp
8922  kbc(1:3*mc_max) = 0.0_dp
8923  kad(1:1*md_max) = 0.0_dp
8924  kac(1:1*mc_max) = 0.0_dp
8925  p_index = 0
8926  DO md = 1, md_max
8927  DO mc = 1, mc_max
8928  DO mb = 1, 3
8929  ks_bd = 0.0_dp
8930  ks_bc = 0.0_dp
8931  p_bd = pbd((md - 1)*3 + mb)
8932  p_bc = pbc((mc - 1)*3 + mb)
8933  DO ma = 1, 1
8934  p_index = p_index + 1
8935  tmp = scale*prim(p_index)
8936  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
8937  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
8938  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
8939  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
8940  END DO
8941  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
8942  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
8943  END DO
8944  END DO
8945  END DO
8946  END SUBROUTINE block_1_3
8947 ! **************************************************************************************************
8948 !> \brief ...
8949 !> \param kbd ...
8950 !> \param kbc ...
8951 !> \param kad ...
8952 !> \param kac ...
8953 !> \param pbd ...
8954 !> \param pbc ...
8955 !> \param pad ...
8956 !> \param pac ...
8957 !> \param prim ...
8958 !> \param scale ...
8959 ! **************************************************************************************************
8960  SUBROUTINE block_1_4_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
8961  REAL(kind=dp) :: kbd(4*1), kbc(4*1), kad(1*1), kac(1*1), &
8962  pbd(4*1), pbc(4*1), pad(1*1), &
8963  pac(1*1), prim(1*4*1*1), scale
8964 
8965  INTEGER :: ma, mb, mc, md, p_index
8966  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
8967 
8968  kbd(1:4*1) = 0.0_dp
8969  kbc(1:4*1) = 0.0_dp
8970  kad(1:1*1) = 0.0_dp
8971  kac(1:1*1) = 0.0_dp
8972  p_index = 0
8973  DO md = 1, 1
8974  DO mc = 1, 1
8975  DO mb = 1, 4
8976  ks_bd = 0.0_dp
8977  ks_bc = 0.0_dp
8978  p_bd = pbd((md - 1)*4 + mb)
8979  p_bc = pbc((mc - 1)*4 + mb)
8980  DO ma = 1, 1
8981  p_index = p_index + 1
8982  tmp = scale*prim(p_index)
8983  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
8984  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
8985  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
8986  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
8987  END DO
8988  kbd((md - 1)*4 + mb) = kbd((md - 1)*4 + mb) - ks_bd
8989  kbc((mc - 1)*4 + mb) = kbc((mc - 1)*4 + mb) - ks_bc
8990  END DO
8991  END DO
8992  END DO
8993  END SUBROUTINE block_1_4_1_1
8994 ! **************************************************************************************************
8995 !> \brief ...
8996 !> \param kbd ...
8997 !> \param kbc ...
8998 !> \param kad ...
8999 !> \param kac ...
9000 !> \param pbd ...
9001 !> \param pbc ...
9002 !> \param pad ...
9003 !> \param pac ...
9004 !> \param prim ...
9005 !> \param scale ...
9006 ! **************************************************************************************************
9007  SUBROUTINE block_1_4_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
9008  REAL(kind=dp) :: kbd(4*2), kbc(4*1), kad(1*2), kac(1*1), &
9009  pbd(4*2), pbc(4*1), pad(1*2), &
9010  pac(1*1), prim(1*4*1*2), scale
9011 
9012  INTEGER :: ma, mb, mc, md, p_index
9013  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
9014 
9015  kbd(1:4*2) = 0.0_dp
9016  kbc(1:4*1) = 0.0_dp
9017  kad(1:1*2) = 0.0_dp
9018  kac(1:1*1) = 0.0_dp
9019  p_index = 0
9020  DO md = 1, 2
9021  DO mc = 1, 1
9022  DO mb = 1, 4
9023  ks_bd = 0.0_dp
9024  ks_bc = 0.0_dp
9025  p_bd = pbd((md - 1)*4 + mb)
9026  p_bc = pbc((mc - 1)*4 + mb)
9027  DO ma = 1, 1
9028  p_index = p_index + 1
9029  tmp = scale*prim(p_index)
9030  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
9031  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
9032  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
9033  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
9034  END DO
9035  kbd((md - 1)*4 + mb) = kbd((md - 1)*4 + mb) - ks_bd
9036  kbc((mc - 1)*4 + mb) = kbc((mc - 1)*4 + mb) - ks_bc
9037  END DO
9038  END DO
9039  END DO
9040  END SUBROUTINE block_1_4_1_2
9041 ! **************************************************************************************************
9042 !> \brief ...
9043 !> \param kbd ...
9044 !> \param kbc ...
9045 !> \param kad ...
9046 !> \param kac ...
9047 !> \param pbd ...
9048 !> \param pbc ...
9049 !> \param pad ...
9050 !> \param pac ...
9051 !> \param prim ...
9052 !> \param scale ...
9053 ! **************************************************************************************************
9054  SUBROUTINE block_1_4_1_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
9055  REAL(kind=dp) :: kbd(4*3), kbc(4*1), kad(1*3), kac(1*1), &
9056  pbd(4*3), pbc(4*1), pad(1*3), &
9057  pac(1*1), prim(1*4*1*3), scale
9058 
9059  INTEGER :: ma, mb, mc, md, p_index
9060  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
9061 
9062  kbd(1:4*3) = 0.0_dp
9063  kbc(1:4*1) = 0.0_dp
9064  kad(1:1*3) = 0.0_dp
9065  kac(1:1*1) = 0.0_dp
9066  p_index = 0
9067  DO md = 1, 3
9068  DO mc = 1, 1
9069  DO mb = 1, 4
9070  ks_bd = 0.0_dp
9071  ks_bc = 0.0_dp
9072  p_bd = pbd((md - 1)*4 + mb)
9073  p_bc = pbc((mc - 1)*4 + mb)
9074  DO ma = 1, 1
9075  p_index = p_index + 1
9076  tmp = scale*prim(p_index)
9077  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
9078  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
9079  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
9080  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
9081  END DO
9082  kbd((md - 1)*4 + mb) = kbd((md - 1)*4 + mb) - ks_bd
9083  kbc((mc - 1)*4 + mb) = kbc((mc - 1)*4 + mb) - ks_bc
9084  END DO
9085  END DO
9086  END DO
9087  END SUBROUTINE block_1_4_1_3
9088 ! **************************************************************************************************
9089 !> \brief ...
9090 !> \param kbd ...
9091 !> \param kbc ...
9092 !> \param kad ...
9093 !> \param kac ...
9094 !> \param pbd ...
9095 !> \param pbc ...
9096 !> \param pad ...
9097 !> \param pac ...
9098 !> \param prim ...
9099 !> \param scale ...
9100 ! **************************************************************************************************
9101  SUBROUTINE block_1_4_1_4(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
9102  REAL(kind=dp) :: kbd(4*4), kbc(4*1), kad(1*4), kac(1*1), &
9103  pbd(4*4), pbc(4*1), pad(1*4), &
9104  pac(1*1), prim(1*4*1*4), scale
9105 
9106  INTEGER :: ma, mb, mc, md, p_index
9107  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
9108 
9109  kbd(1:4*4) = 0.0_dp
9110  kbc(1:4*1) = 0.0_dp
9111  kad(1:1*4) = 0.0_dp
9112  kac(1:1*1) = 0.0_dp
9113  p_index = 0
9114  DO md = 1, 4
9115  DO mc = 1, 1
9116  DO mb = 1, 4
9117  ks_bd = 0.0_dp
9118  ks_bc = 0.0_dp
9119  p_bd = pbd((md - 1)*4 + mb)
9120  p_bc = pbc((mc - 1)*4 + mb)
9121  DO ma = 1, 1
9122  p_index = p_index + 1
9123  tmp = scale*prim(p_index)
9124  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
9125  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
9126  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
9127  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
9128  END DO
9129  kbd((md - 1)*4 + mb) = kbd((md - 1)*4 + mb) - ks_bd
9130  kbc((mc - 1)*4 + mb) = kbc((mc - 1)*4 + mb) - ks_bc
9131  END DO
9132  END DO
9133  END DO
9134  END SUBROUTINE block_1_4_1_4
9135 ! **************************************************************************************************
9136 !> \brief ...
9137 !> \param md_max ...
9138 !> \param kbd ...
9139 !> \param kbc ...
9140 !> \param kad ...
9141 !> \param kac ...
9142 !> \param pbd ...
9143 !> \param pbc ...
9144 !> \param pad ...
9145 !> \param pac ...
9146 !> \param prim ...
9147 !> \param scale ...
9148 ! **************************************************************************************************
9149  SUBROUTINE block_1_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
9150  INTEGER :: md_max
9151  REAL(kind=dp) :: kbd(4*md_max), kbc(4*1), kad(1*md_max), kac(1*1), pbd(4*md_max), pbc(4*1), &
9152  pad(1*md_max), pac(1*1), prim(1*4*1*md_max), scale
9153 
9154  INTEGER :: ma, mb, mc, md, p_index
9155  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
9156 
9157  kbd(1:4*md_max) = 0.0_dp
9158  kbc(1:4*1) = 0.0_dp
9159  kad(1:1*md_max) = 0.0_dp
9160  kac(1:1*1) = 0.0_dp
9161  p_index = 0
9162  DO md = 1, md_max
9163  DO mc = 1, 1
9164  DO mb = 1, 4
9165  ks_bd = 0.0_dp
9166  ks_bc = 0.0_dp
9167  p_bd = pbd((md - 1)*4 + mb)
9168  p_bc = pbc((mc - 1)*4 + mb)
9169  DO ma = 1, 1
9170  p_index = p_index + 1
9171  tmp = scale*prim(p_index)
9172  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
9173  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
9174  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
9175  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
9176  END DO
9177  kbd((md - 1)*4 + mb) = kbd((md - 1)*4 + mb) - ks_bd
9178  kbc((mc - 1)*4 + mb) = kbc((mc - 1)*4 + mb) - ks_bc
9179  END DO
9180  END DO
9181  END DO
9182  END SUBROUTINE block_1_4_1
9183 ! **************************************************************************************************
9184 !> \brief ...
9185 !> \param kbd ...
9186 !> \param kbc ...
9187 !> \param kad ...
9188 !> \param kac ...
9189 !> \param pbd ...
9190 !> \param pbc ...
9191 !> \param pad ...
9192 !> \param pac ...
9193 !> \param prim ...
9194 !> \param scale ...
9195 ! **************************************************************************************************
9196  SUBROUTINE block_1_4_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
9197  REAL(kind=dp) :: kbd(4*1), kbc(4*2), kad(1*1), kac(1*2), &
9198  pbd(4*1), pbc(4*2), pad(1*1), &
9199  pac(1*2), prim(1*4*2*1), scale
9200 
9201  INTEGER :: ma, mb, mc, md, p_index
9202  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
9203 
9204  kbd(1:4*1) = 0.0_dp
9205  kbc(1:4*2) = 0.0_dp
9206  kad(1:1*1) = 0.0_dp
9207  kac(1:1*2) = 0.0_dp
9208  p_index = 0
9209  DO md = 1, 1
9210  DO mc = 1, 2
9211  DO mb = 1, 4
9212  ks_bd = 0.0_dp
9213  ks_bc = 0.0_dp
9214  p_bd = pbd((md - 1)*4 + mb)
9215  p_bc = pbc((mc - 1)*4 + mb)
9216  DO ma = 1, 1
9217  p_index = p_index + 1
9218  tmp = scale*prim(p_index)
9219  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
9220  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
9221  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
9222  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
9223  END DO
9224  kbd((md - 1)*4 + mb) = kbd((md - 1)*4 + mb) - ks_bd
9225  kbc((mc - 1)*4 + mb) = kbc((mc - 1)*4 + mb) - ks_bc
9226  END DO
9227  END DO
9228  END DO
9229  END SUBROUTINE block_1_4_2_1
9230 ! **************************************************************************************************
9231 !> \brief ...
9232 !> \param kbd ...
9233 !> \param kbc ...
9234 !> \param kad ...
9235 !> \param kac ...
9236 !> \param pbd ...
9237 !> \param pbc ...
9238 !> \param pad ...
9239 !> \param pac ...
9240 !> \param prim ...
9241 !> \param scale ...
9242 ! **************************************************************************************************
9243  SUBROUTINE block_1_4_2_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
9244  REAL(kind=dp) :: kbd(4*2), kbc(4*2), kad(1*2), kac(1*2), &
9245  pbd(4*2), pbc(4*2), pad(1*2), &
9246  pac(1*2), prim(1*4*2*2), scale
9247 
9248  INTEGER :: ma, mb, mc, md, p_index
9249  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
9250 
9251  kbd(1:4*2) = 0.0_dp
9252  kbc(1:4*2) = 0.0_dp
9253  kad(1:1*2) = 0.0_dp
9254  kac(1:1*2) = 0.0_dp
9255  p_index = 0
9256  DO md = 1, 2
9257  DO mc = 1, 2
9258  DO mb = 1, 4
9259  ks_bd = 0.0_dp
9260  ks_bc = 0.0_dp
9261  p_bd = pbd((md - 1)*4 + mb)
9262  p_bc = pbc((mc - 1)*4 + mb)
9263  DO ma = 1, 1
9264  p_index = p_index + 1
9265  tmp = scale*prim(p_index)
9266  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
9267  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
9268  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
9269  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
9270  END DO
9271  kbd((md - 1)*4 + mb) = kbd((md - 1)*4 + mb) - ks_bd
9272  kbc((mc - 1)*4 + mb) = kbc((mc - 1)*4 + mb) - ks_bc
9273  END DO
9274  END DO
9275  END DO
9276  END SUBROUTINE block_1_4_2_2
9277 ! **************************************************************************************************
9278 !> \brief ...
9279 !> \param md_max ...
9280 !> \param kbd ...
9281 !> \param kbc ...
9282 !> \param kad ...
9283 !> \param kac ...
9284 !> \param pbd ...
9285 !> \param pbc ...
9286 !> \param pad ...
9287 !> \param pac ...
9288 !> \param prim ...
9289 !> \param scale ...
9290 ! **************************************************************************************************
9291  SUBROUTINE block_1_4_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
9292  INTEGER :: md_max
9293  REAL(kind=dp) :: kbd(4*md_max), kbc(4*2), kad(1*md_max), kac(1*2), pbd(4*md_max), pbc(4*2), &
9294  pad(1*md_max), pac(1*2), prim(1*4*2*md_max), scale
9295 
9296  INTEGER :: ma, mb, mc, md, p_index
9297  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
9298 
9299  kbd(1:4*md_max) = 0.0_dp
9300  kbc(1:4*2) = 0.0_dp
9301  kad(1:1*md_max) = 0.0_dp
9302  kac(1:1*2) = 0.0_dp
9303  p_index = 0
9304  DO md = 1, md_max
9305  DO mc = 1, 2
9306  DO mb = 1, 4
9307  ks_bd = 0.0_dp
9308  ks_bc = 0.0_dp
9309  p_bd = pbd((md - 1)*4 + mb)
9310  p_bc = pbc((mc - 1)*4 + mb)
9311  DO ma = 1, 1
9312  p_index = p_index + 1
9313  tmp = scale*prim(p_index)
9314  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
9315  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
9316  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
9317  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
9318  END DO
9319  kbd((md - 1)*4 + mb) = kbd((md - 1)*4 + mb) - ks_bd
9320  kbc((mc - 1)*4 + mb) = kbc((mc - 1)*4 + mb) - ks_bc
9321  END DO
9322  END DO
9323  END DO
9324  END SUBROUTINE block_1_4_2
9325 ! **************************************************************************************************
9326 !> \brief ...
9327 !> \param kbd ...
9328 !> \param kbc ...
9329 !> \param kad ...
9330 !> \param kac ...
9331 !> \param pbd ...
9332 !> \param pbc ...
9333 !> \param pad ...
9334 !> \param pac ...
9335 !> \param prim ...
9336 !> \param scale ...
9337 ! **************************************************************************************************
9338  SUBROUTINE block_1_4_3_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
9339  REAL(kind=dp) :: kbd(4*1), kbc(4*3), kad(1*1), kac(1*3), &
9340  pbd(4*1), pbc(4*3), pad(1*1), &
9341  pac(1*3), prim(1*4*3*1), scale
9342 
9343  INTEGER :: ma, mb, mc, md, p_index
9344  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
9345 
9346  kbd(1:4*1) = 0.0_dp
9347  kbc(1:4*3) = 0.0_dp
9348  kad(1:1*1) = 0.0_dp
9349  kac(1:1*3) = 0.0_dp
9350  p_index = 0
9351  DO md = 1, 1
9352  DO mc = 1, 3
9353  DO mb = 1, 4
9354  ks_bd = 0.0_dp
9355  ks_bc = 0.0_dp
9356  p_bd = pbd((md - 1)*4 + mb)
9357  p_bc = pbc((mc - 1)*4 + mb)
9358  DO ma = 1, 1
9359  p_index = p_index + 1
9360  tmp = scale*prim(p_index)
9361  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
9362  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
9363  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
9364  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
9365  END DO
9366  kbd((md - 1)*4 + mb) = kbd((md - 1)*4 + mb) - ks_bd
9367  kbc((mc - 1)*4 + mb) = kbc((mc - 1)*4 + mb) - ks_bc
9368  END DO
9369  END DO
9370  END DO
9371  END SUBROUTINE block_1_4_3_1
9372 ! **************************************************************************************************
9373 !> \brief ...
9374 !> \param md_max ...
9375 !> \param kbd ...
9376 !> \param kbc ...
9377 !> \param kad ...
9378 !> \param kac ...
9379 !> \param pbd ...
9380 !> \param pbc ...
9381 !> \param pad ...
9382 !> \param pac ...
9383 !> \param prim ...
9384 !> \param scale ...
9385 ! **************************************************************************************************
9386  SUBROUTINE block_1_4_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
9387  INTEGER :: md_max
9388  REAL(kind=dp) :: kbd(4*md_max), kbc(4*3), kad(1*md_max), kac(1*3), pbd(4*md_max), pbc(4*3), &
9389  pad(1*md_max), pac(1*3), prim(1*4*3*md_max), scale
9390 
9391  INTEGER :: ma, mb, mc, md, p_index
9392  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
9393 
9394  kbd(1:4*md_max) = 0.0_dp
9395  kbc(1:4*3) = 0.0_dp
9396  kad(1:1*md_max) = 0.0_dp
9397  kac(1:1*3) = 0.0_dp
9398  p_index = 0
9399  DO md = 1, md_max
9400  DO mc = 1, 3
9401  DO mb = 1, 4
9402  ks_bd = 0.0_dp
9403  ks_bc = 0.0_dp
9404  p_bd = pbd((md - 1)*4 + mb)
9405  p_bc = pbc((mc - 1)*4 + mb)
9406  DO ma = 1, 1
9407  p_index = p_index + 1
9408  tmp = scale*prim(p_index)
9409  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
9410  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
9411  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
9412  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
9413  END DO
9414  kbd((md - 1)*4 + mb) = kbd((md - 1)*4 + mb) - ks_bd
9415  kbc((mc - 1)*4 + mb) = kbc((mc - 1)*4 + mb) - ks_bc
9416  END DO
9417  END DO
9418  END DO
9419  END SUBROUTINE block_1_4_3
9420 ! **************************************************************************************************
9421 !> \brief ...
9422 !> \param kbd ...
9423 !> \param kbc ...
9424 !> \param kad ...
9425 !> \param kac ...
9426 !> \param pbd ...
9427 !> \param pbc ...
9428 !> \param pad ...
9429 !> \param pac ...
9430 !> \param prim ...
9431 !> \param scale ...
9432 ! **************************************************************************************************
9433  SUBROUTINE block_1_4_4_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
9434  REAL(kind=dp) :: kbd(4*1), kbc(4*4), kad(1*1), kac(1*4), &
9435  pbd(4*1), pbc(4*4), pad(1*1), &
9436  pac(1*4), prim(1*4*4*1), scale
9437 
9438  INTEGER :: ma, mb, mc, md, p_index
9439  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
9440 
9441  kbd(1:4*1) = 0.0_dp
9442  kbc(1:4*4) = 0.0_dp
9443  kad(1:1*1) = 0.0_dp
9444  kac(1:1*4) = 0.0_dp
9445  p_index = 0
9446  DO md = 1, 1
9447  DO mc = 1, 4
9448  DO mb = 1, 4
9449  ks_bd = 0.0_dp
9450  ks_bc = 0.0_dp
9451  p_bd = pbd((md - 1)*4 + mb)
9452  p_bc = pbc((mc - 1)*4 + mb)
9453  DO ma = 1, 1
9454  p_index = p_index + 1
9455  tmp = scale*prim(p_index)
9456  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
9457  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
9458  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
9459  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
9460  END DO
9461  kbd((md - 1)*4 + mb) = kbd((md - 1)*4 + mb) - ks_bd
9462  kbc((mc - 1)*4 + mb) = kbc((mc - 1)*4 + mb) - ks_bc
9463  END DO
9464  END DO
9465  END DO
9466  END SUBROUTINE block_1_4_4_1
9467 ! **************************************************************************************************
9468 !> \brief ...
9469 !> \param md_max ...
9470 !> \param kbd ...
9471 !> \param kbc ...
9472 !> \param kad ...
9473 !> \param kac ...
9474 !> \param pbd ...
9475 !> \param pbc ...
9476 !> \param pad ...
9477 !> \param pac ...
9478 !> \param prim ...
9479 !> \param scale ...
9480 ! **************************************************************************************************
9481  SUBROUTINE block_1_4_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
9482  INTEGER :: md_max
9483  REAL(kind=dp) :: kbd(4*md_max), kbc(4*4), kad(1*md_max), kac(1*4), pbd(4*md_max), pbc(4*4), &
9484  pad(1*md_max), pac(1*4), prim(1*4*4*md_max), scale
9485 
9486  INTEGER :: ma, mb, mc, md, p_index
9487  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
9488 
9489  kbd(1:4*md_max) = 0.0_dp
9490  kbc(1:4*4) = 0.0_dp
9491  kad(1:1*md_max) = 0.0_dp
9492  kac(1:1*4) = 0.0_dp
9493  p_index = 0
9494  DO md = 1, md_max
9495  DO mc = 1, 4
9496  DO mb = 1, 4
9497  ks_bd = 0.0_dp
9498  ks_bc = 0.0_dp
9499  p_bd = pbd((md - 1)*4 + mb)
9500  p_bc = pbc((mc - 1)*4 + mb)
9501  DO ma = 1, 1
9502  p_index = p_index + 1
9503  tmp = scale*prim(p_index)
9504  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
9505  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
9506  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
9507  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
9508  END DO
9509  kbd((md - 1)*4 + mb) = kbd((md - 1)*4 + mb) - ks_bd
9510  kbc((mc - 1)*4 + mb) = kbc((mc - 1)*4 + mb) - ks_bc
9511  END DO
9512  END DO
9513  END DO
9514  END SUBROUTINE block_1_4_4
9515 ! **************************************************************************************************
9516 !> \brief ...
9517 !> \param mc_max ...
9518 !> \param md_max ...
9519 !> \param kbd ...
9520 !> \param kbc ...
9521 !> \param kad ...
9522 !> \param kac ...
9523 !> \param pbd ...
9524 !> \param pbc ...
9525 !> \param pad ...
9526 !> \param pac ...
9527 !> \param prim ...
9528 !> \param scale ...
9529 ! **************************************************************************************************
9530  SUBROUTINE block_1_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
9531  INTEGER :: mc_max, md_max
9532  REAL(kind=dp) :: kbd(4*md_max), kbc(4*mc_max), kad(1*md_max), kac(1*mc_max), pbd(4*md_max), &
9533  pbc(4*mc_max), pad(1*md_max), pac(1*mc_max), prim(1*4*mc_max*md_max), scale
9534 
9535  INTEGER :: ma, mb, mc, md, p_index
9536  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
9537 
9538  kbd(1:4*md_max) = 0.0_dp
9539  kbc(1:4*mc_max) = 0.0_dp
9540  kad(1:1*md_max) = 0.0_dp
9541  kac(1:1*mc_max) = 0.0_dp
9542  p_index = 0
9543  DO md = 1, md_max
9544  DO mc = 1, mc_max
9545  DO mb = 1, 4
9546  ks_bd = 0.0_dp
9547  ks_bc = 0.0_dp
9548  p_bd = pbd((md - 1)*4 + mb)
9549  p_bc = pbc((mc - 1)*4 + mb)
9550  DO ma = 1, 1
9551  p_index = p_index + 1
9552  tmp = scale*prim(p_index)
9553  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
9554  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
9555  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
9556  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
9557  END DO
9558  kbd((md - 1)*4 + mb) = kbd((md - 1)*4 + mb) - ks_bd
9559  kbc((mc - 1)*4 + mb) = kbc((mc - 1)*4 + mb) - ks_bc
9560  END DO
9561  END DO
9562  END DO
9563  END SUBROUTINE block_1_4
9564 ! **************************************************************************************************
9565 !> \brief ...
9566 !> \param kbd ...
9567 !> \param kbc ...
9568 !> \param kad ...
9569 !> \param kac ...
9570 !> \param pbd ...
9571 !> \param pbc ...
9572 !> \param pad ...
9573 !> \param pac ...
9574 !> \param prim ...
9575 !> \param scale ...
9576 ! **************************************************************************************************
9577  SUBROUTINE block_1_5_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
9578  REAL(kind=dp) :: kbd(5*1), kbc(5*1), kad(1*1), kac(1*1), &
9579  pbd(5*1), pbc(5*1), pad(1*1), &
9580  pac(1*1), prim(1*5*1*1), scale
9581 
9582  INTEGER :: ma, mb, mc, md, p_index
9583  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
9584 
9585  kbd(1:5*1) = 0.0_dp
9586  kbc(1:5*1) = 0.0_dp
9587  kad(1:1*1) = 0.0_dp
9588  kac(1:1*1) = 0.0_dp
9589  p_index = 0
9590  DO md = 1, 1
9591  DO mc = 1, 1
9592  DO mb = 1, 5
9593  ks_bd = 0.0_dp
9594  ks_bc = 0.0_dp
9595  p_bd = pbd((md - 1)*5 + mb)
9596  p_bc = pbc((mc - 1)*5 + mb)
9597  DO ma = 1, 1
9598  p_index = p_index + 1
9599  tmp = scale*prim(p_index)
9600  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
9601  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
9602  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
9603  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
9604  END DO
9605  kbd((md - 1)*5 + mb) = kbd((md - 1)*5 + mb) - ks_bd
9606  kbc((mc - 1)*5 + mb) = kbc((mc - 1)*5 + mb) - ks_bc
9607  END DO
9608  END DO
9609  END DO
9610  END SUBROUTINE block_1_5_1_1
9611 ! **************************************************************************************************
9612 !> \brief ...
9613 !> \param kbd ...
9614 !> \param kbc ...
9615 !> \param kad ...
9616 !> \param kac ...
9617 !> \param pbd ...
9618 !> \param pbc ...
9619 !> \param pad ...
9620 !> \param pac ...
9621 !> \param prim ...
9622 !> \param scale ...
9623 ! **************************************************************************************************
9624  SUBROUTINE block_1_5_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
9625  REAL(kind=dp) :: kbd(5*2), kbc(5*1), kad(1*2), kac(1*1), &
9626  pbd(5*2), pbc(5*1), pad(1*2), &
9627  pac(1*1), prim(1*5*1*2), scale
9628 
9629  INTEGER :: ma, mb, mc, md, p_index
9630  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
9631 
9632  kbd(1:5*2) = 0.0_dp
9633  kbc(1:5*1) = 0.0_dp
9634  kad(1:1*2) = 0.0_dp
9635  kac(1:1*1) = 0.0_dp
9636  p_index = 0
9637  DO md = 1, 2
9638  DO mc = 1, 1
9639  DO mb = 1, 5
9640  ks_bd = 0.0_dp
9641  ks_bc = 0.0_dp
9642  p_bd = pbd((md - 1)*5 + mb)
9643  p_bc = pbc((mc - 1)*5 + mb)
9644  DO ma = 1, 1
9645  p_index = p_index + 1
9646  tmp = scale*prim(p_index)
9647  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
9648  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
9649  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
9650  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
9651  END DO
9652  kbd((md - 1)*5 + mb) = kbd((md - 1)*5 + mb) - ks_bd
9653  kbc((mc - 1)*5 + mb) = kbc((mc - 1)*5 + mb) - ks_bc
9654  END DO
9655  END DO
9656  END DO
9657  END SUBROUTINE block_1_5_1_2
9658 ! **************************************************************************************************
9659 !> \brief ...
9660 !> \param kbd ...
9661 !> \param kbc ...
9662 !> \param kad ...
9663 !> \param kac ...
9664 !> \param pbd ...
9665 !> \param pbc ...
9666 !> \param pad ...
9667 !> \param pac ...
9668 !> \param prim ...
9669 !> \param scale ...
9670 ! **************************************************************************************************
9671  SUBROUTINE block_1_5_1_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
9672  REAL(kind=dp) :: kbd(5*3), kbc(5*1), kad(1*3), kac(1*1), &
9673  pbd(5*3), pbc(5*1), pad(1*3), &
9674  pac(1*1), prim(1*5*1*3), scale
9675 
9676  INTEGER :: ma, mb, mc, md, p_index
9677  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
9678 
9679  kbd(1:5*3) = 0.0_dp
9680  kbc(1:5*1) = 0.0_dp
9681  kad(1:1*3) = 0.0_dp
9682  kac(1:1*1) = 0.0_dp
9683  p_index = 0
9684  DO md = 1, 3
9685  DO mc = 1, 1
9686  DO mb = 1, 5
9687  ks_bd = 0.0_dp
9688  ks_bc = 0.0_dp
9689  p_bd = pbd((md - 1)*5 + mb)
9690  p_bc = pbc((mc - 1)*5 + mb)
9691  DO ma = 1, 1
9692  p_index = p_index + 1
9693  tmp = scale*prim(p_index)
9694  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
9695  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
9696  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
9697  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
9698  END DO
9699  kbd((md - 1)*5 + mb) = kbd((md - 1)*5 + mb) - ks_bd
9700  kbc((mc - 1)*5 + mb) = kbc((mc - 1)*5 + mb) - ks_bc
9701  END DO
9702  END DO
9703  END DO
9704  END SUBROUTINE block_1_5_1_3
9705 ! **************************************************************************************************
9706 !> \brief ...
9707 !> \param md_max ...
9708 !> \param kbd ...
9709 !> \param kbc ...
9710 !> \param kad ...
9711 !> \param kac ...
9712 !> \param pbd ...
9713 !> \param pbc ...
9714 !> \param pad ...
9715 !> \param pac ...
9716 !> \param prim ...
9717 !> \param scale ...
9718 ! **************************************************************************************************
9719  SUBROUTINE block_1_5_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
9720  INTEGER :: md_max
9721  REAL(kind=dp) :: kbd(5*md_max), kbc(5*1), kad(1*md_max), kac(1*1), pbd(5*md_max), pbc(5*1), &
9722  pad(1*md_max), pac(1*1), prim(1*5*1*md_max), scale
9723 
9724  INTEGER :: ma, mb, mc, md, p_index
9725  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
9726 
9727  kbd(1:5*md_max) = 0.0_dp
9728  kbc(1:5*1) = 0.0_dp
9729  kad(1:1*md_max) = 0.0_dp
9730  kac(1:1*1) = 0.0_dp
9731  p_index = 0
9732  DO md = 1, md_max
9733  DO mc = 1, 1
9734  DO mb = 1, 5
9735  ks_bd = 0.0_dp
9736  ks_bc = 0.0_dp
9737  p_bd = pbd((md - 1)*5 + mb)
9738  p_bc = pbc((mc - 1)*5 + mb)
9739  DO ma = 1, 1
9740  p_index = p_index + 1
9741  tmp = scale*prim(p_index)
9742  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
9743  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
9744  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
9745  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
9746  END DO
9747  kbd((md - 1)*5 + mb) = kbd((md - 1)*5 + mb) - ks_bd
9748  kbc((mc - 1)*5 + mb) = kbc((mc - 1)*5 + mb) - ks_bc
9749  END DO
9750  END DO
9751  END DO
9752  END SUBROUTINE block_1_5_1
9753 ! **************************************************************************************************
9754 !> \brief ...
9755 !> \param kbd ...
9756 !> \param kbc ...
9757 !> \param kad ...
9758 !> \param kac ...
9759 !> \param pbd ...
9760 !> \param pbc ...
9761 !> \param pad ...
9762 !> \param pac ...
9763 !> \param prim ...
9764 !> \param scale ...
9765 ! **************************************************************************************************
9766  SUBROUTINE block_1_5_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
9767  REAL(kind=dp) :: kbd(5*1), kbc(5*2), kad(1*1), kac(1*2), &
9768  pbd(5*1), pbc(5*2), pad(1*1), &
9769  pac(1*2), prim(1*5*2*1), scale
9770 
9771  INTEGER :: ma, mb, mc, md, p_index
9772  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
9773 
9774  kbd(1:5*1) = 0.0_dp
9775  kbc(1:5*2) = 0.0_dp
9776  kad(1:1*1) = 0.0_dp
9777  kac(1:1*2) = 0.0_dp
9778  p_index = 0
9779  DO md = 1, 1
9780  DO mc = 1, 2
9781  DO mb = 1, 5
9782  ks_bd = 0.0_dp
9783  ks_bc = 0.0_dp
9784  p_bd = pbd((md - 1)*5 + mb)
9785  p_bc = pbc((mc - 1)*5 + mb)
9786  DO ma = 1, 1
9787  p_index = p_index + 1
9788  tmp = scale*prim(p_index)
9789  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
9790  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
9791  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
9792  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
9793  END DO
9794  kbd((md - 1)*5 + mb) = kbd((md - 1)*5 + mb) - ks_bd
9795  kbc((mc - 1)*5 + mb) = kbc((mc - 1)*5 + mb) - ks_bc
9796  END DO
9797  END DO
9798  END DO
9799  END SUBROUTINE block_1_5_2_1
9800 ! **************************************************************************************************
9801 !> \brief ...
9802 !> \param md_max ...
9803 !> \param kbd ...
9804 !> \param kbc ...
9805 !> \param kad ...
9806 !> \param kac ...
9807 !> \param pbd ...
9808 !> \param pbc ...
9809 !> \param pad ...
9810 !> \param pac ...
9811 !> \param prim ...
9812 !> \param scale ...
9813 ! **************************************************************************************************
9814  SUBROUTINE block_1_5_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
9815  INTEGER :: md_max
9816  REAL(kind=dp) :: kbd(5*md_max), kbc(5*2), kad(1*md_max), kac(1*2), pbd(5*md_max), pbc(5*2), &
9817  pad(1*md_max), pac(1*2), prim(1*5*2*md_max), scale
9818 
9819  INTEGER :: ma, mb, mc, md, p_index
9820  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
9821 
9822  kbd(1:5*md_max) = 0.0_dp
9823  kbc(1:5*2) = 0.0_dp
9824  kad(1:1*md_max) = 0.0_dp
9825  kac(1:1*2) = 0.0_dp
9826  p_index = 0
9827  DO md = 1, md_max
9828  DO mc = 1, 2
9829  DO mb = 1, 5
9830  ks_bd = 0.0_dp
9831  ks_bc = 0.0_dp
9832  p_bd = pbd((md - 1)*5 + mb)
9833  p_bc = pbc((mc - 1)*5 + mb)
9834  DO ma = 1, 1
9835  p_index = p_index + 1
9836  tmp = scale*prim(p_index)
9837  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
9838  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
9839  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
9840  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
9841  END DO
9842  kbd((md - 1)*5 + mb) = kbd((md - 1)*5 + mb) - ks_bd
9843  kbc((mc - 1)*5 + mb) = kbc((mc - 1)*5 + mb) - ks_bc
9844  END DO
9845  END DO
9846  END DO
9847  END SUBROUTINE block_1_5_2
9848 ! **************************************************************************************************
9849 !> \brief ...
9850 !> \param kbd ...
9851 !> \param kbc ...
9852 !> \param kad ...
9853 !> \param kac ...
9854 !> \param pbd ...
9855 !> \param pbc ...
9856 !> \param pad ...
9857 !> \param pac ...
9858 !> \param prim ...
9859 !> \param scale ...
9860 ! **************************************************************************************************
9861  SUBROUTINE block_1_5_3_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
9862  REAL(kind=dp) :: kbd(5*1), kbc(5*3), kad(1*1), kac(1*3), &
9863  pbd(5*1), pbc(5*3), pad(1*1), &
9864  pac(1*3), prim(1*5*3*1), scale
9865 
9866  INTEGER :: ma, mb, mc, md, p_index
9867  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
9868 
9869  kbd(1:5*1) = 0.0_dp
9870  kbc(1:5*3) = 0.0_dp
9871  kad(1:1*1) = 0.0_dp
9872  kac(1:1*3) = 0.0_dp
9873  p_index = 0
9874  DO md = 1, 1
9875  DO mc = 1, 3
9876  DO mb = 1, 5
9877  ks_bd = 0.0_dp
9878  ks_bc = 0.0_dp
9879  p_bd = pbd((md - 1)*5 + mb)
9880  p_bc = pbc((mc - 1)*5 + mb)
9881  DO ma = 1, 1
9882  p_index = p_index + 1
9883  tmp = scale*prim(p_index)
9884  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
9885  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
9886  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
9887  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
9888  END DO
9889  kbd((md - 1)*5 + mb) = kbd((md - 1)*5 + mb) - ks_bd
9890  kbc((mc - 1)*5 + mb) = kbc((mc - 1)*5 + mb) - ks_bc
9891  END DO
9892  END DO
9893  END DO
9894  END SUBROUTINE block_1_5_3_1
9895 ! **************************************************************************************************
9896 !> \brief ...
9897 !> \param md_max ...
9898 !> \param kbd ...
9899 !> \param kbc ...
9900 !> \param kad ...
9901 !> \param kac ...
9902 !> \param pbd ...
9903 !> \param pbc ...
9904 !> \param pad ...
9905 !> \param pac ...
9906 !> \param prim ...
9907 !> \param scale ...
9908 ! **************************************************************************************************
9909  SUBROUTINE block_1_5_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
9910  INTEGER :: md_max
9911  REAL(kind=dp) :: kbd(5*md_max), kbc(5*3), kad(1*md_max), kac(1*3), pbd(5*md_max), pbc(5*3), &
9912  pad(1*md_max), pac(1*3), prim(1*5*3*md_max), scale
9913 
9914  INTEGER :: ma, mb, mc, md, p_index
9915  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
9916 
9917  kbd(1:5*md_max) = 0.0_dp
9918  kbc(1:5*3) = 0.0_dp
9919  kad(1:1*md_max) = 0.0_dp
9920  kac(1:1*3) = 0.0_dp
9921  p_index = 0
9922  DO md = 1, md_max
9923  DO mc = 1, 3
9924  DO mb = 1, 5
9925  ks_bd = 0.0_dp
9926  ks_bc = 0.0_dp
9927  p_bd = pbd((md - 1)*5 + mb)
9928  p_bc = pbc((mc - 1)*5 + mb)
9929  DO ma = 1, 1
9930  p_index = p_index + 1
9931  tmp = scale*prim(p_index)
9932  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
9933  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
9934  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
9935  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
9936  END DO
9937  kbd((md - 1)*5 + mb) = kbd((md - 1)*5 + mb) - ks_bd
9938  kbc((mc - 1)*5 + mb) = kbc((mc - 1)*5 + mb) - ks_bc
9939  END DO
9940  END DO
9941  END DO
9942  END SUBROUTINE block_1_5_3
9943 ! **************************************************************************************************
9944 !> \brief ...
9945 !> \param mc_max ...
9946 !> \param md_max ...
9947 !> \param kbd ...
9948 !> \param kbc ...
9949 !> \param kad ...
9950 !> \param kac ...
9951 !> \param pbd ...
9952 !> \param pbc ...
9953 !> \param pad ...
9954 !> \param pac ...
9955 !> \param prim ...
9956 !> \param scale ...
9957 ! **************************************************************************************************
9958  SUBROUTINE block_1_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
9959  INTEGER :: mc_max, md_max
9960  REAL(kind=dp) :: kbd(5*md_max), kbc(5*mc_max), kad(1*md_max), kac(1*mc_max), pbd(5*md_max), &
9961  pbc(5*mc_max), pad(1*md_max), pac(1*mc_max), prim(1*5*mc_max*md_max), scale
9962 
9963  INTEGER :: ma, mb, mc, md, p_index
9964  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
9965 
9966  kbd(1:5*md_max) = 0.0_dp
9967  kbc(1:5*mc_max) = 0.0_dp
9968  kad(1:1*md_max) = 0.0_dp
9969  kac(1:1*mc_max) = 0.0_dp
9970  p_index = 0
9971  DO md = 1, md_max
9972  DO mc = 1, mc_max
9973  DO mb = 1, 5
9974  ks_bd = 0.0_dp
9975  ks_bc = 0.0_dp
9976  p_bd = pbd((md - 1)*5 + mb)
9977  p_bc = pbc((mc - 1)*5 + mb)
9978  DO ma = 1, 1
9979  p_index = p_index + 1
9980  tmp = scale*prim(p_index)
9981  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
9982  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
9983  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
9984  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
9985  END DO
9986  kbd((md - 1)*5 + mb) = kbd((md - 1)*5 + mb) - ks_bd
9987  kbc((mc - 1)*5 + mb) = kbc((mc - 1)*5 + mb) - ks_bc
9988  END DO
9989  END DO
9990  END DO
9991  END SUBROUTINE block_1_5
9992 ! **************************************************************************************************
9993 !> \brief ...
9994 !> \param kbd ...
9995 !> \param kbc ...
9996 !> \param kad ...
9997 !> \param kac ...
9998 !> \param pbd ...
9999 !> \param pbc ...
10000 !> \param pad ...
10001 !> \param pac ...
10002 !> \param prim ...
10003 !> \param scale ...
10004 ! **************************************************************************************************
10005  SUBROUTINE block_1_6_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
10006  REAL(kind=dp) :: kbd(6*1), kbc(6*1), kad(1*1), kac(1*1), &
10007  pbd(6*1), pbc(6*1), pad(1*1), &
10008  pac(1*1), prim(1*6*1*1), scale
10009 
10010  INTEGER :: ma, mb, mc, md, p_index
10011  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
10012 
10013  kbd(1:6*1) = 0.0_dp
10014  kbc(1:6*1) = 0.0_dp
10015  kad(1:1*1) = 0.0_dp
10016  kac(1:1*1) = 0.0_dp
10017  p_index = 0
10018  DO md = 1, 1
10019  DO mc = 1, 1
10020  DO mb = 1, 6
10021  ks_bd = 0.0_dp
10022  ks_bc = 0.0_dp
10023  p_bd = pbd((md - 1)*6 + mb)
10024  p_bc = pbc((mc - 1)*6 + mb)
10025  DO ma = 1, 1
10026  p_index = p_index + 1
10027  tmp = scale*prim(p_index)
10028  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
10029  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
10030  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
10031  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
10032  END DO
10033  kbd((md - 1)*6 + mb) = kbd((md - 1)*6 + mb) - ks_bd
10034  kbc((mc - 1)*6 + mb) = kbc((mc - 1)*6 + mb) - ks_bc
10035  END DO
10036  END DO
10037  END DO
10038  END SUBROUTINE block_1_6_1_1
10039 ! **************************************************************************************************
10040 !> \brief ...
10041 !> \param kbd ...
10042 !> \param kbc ...
10043 !> \param kad ...
10044 !> \param kac ...
10045 !> \param pbd ...
10046 !> \param pbc ...
10047 !> \param pad ...
10048 !> \param pac ...
10049 !> \param prim ...
10050 !> \param scale ...
10051 ! **************************************************************************************************
10052  SUBROUTINE block_1_6_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
10053  REAL(kind=dp) :: kbd(6*2), kbc(6*1), kad(1*2), kac(1*1), &
10054  pbd(6*2), pbc(6*1), pad(1*2), &
10055  pac(1*1), prim(1*6*1*2), scale
10056 
10057  INTEGER :: ma, mb, mc, md, p_index
10058  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
10059 
10060  kbd(1:6*2) = 0.0_dp
10061  kbc(1:6*1) = 0.0_dp
10062  kad(1:1*2) = 0.0_dp
10063  kac(1:1*1) = 0.0_dp
10064  p_index = 0
10065  DO md = 1, 2
10066  DO mc = 1, 1
10067  DO mb = 1, 6
10068  ks_bd = 0.0_dp
10069  ks_bc = 0.0_dp
10070  p_bd = pbd((md - 1)*6 + mb)
10071  p_bc = pbc((mc - 1)*6 + mb)
10072  DO ma = 1, 1
10073  p_index = p_index + 1
10074  tmp = scale*prim(p_index)
10075  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
10076  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
10077  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
10078  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
10079  END DO
10080  kbd((md - 1)*6 + mb) = kbd((md - 1)*6 + mb) - ks_bd
10081  kbc((mc - 1)*6 + mb) = kbc((mc - 1)*6 + mb) - ks_bc
10082  END DO
10083  END DO
10084  END DO
10085  END SUBROUTINE block_1_6_1_2
10086 ! **************************************************************************************************
10087 !> \brief ...
10088 !> \param kbd ...
10089 !> \param kbc ...
10090 !> \param kad ...
10091 !> \param kac ...
10092 !> \param pbd ...
10093 !> \param pbc ...
10094 !> \param pad ...
10095 !> \param pac ...
10096 !> \param prim ...
10097 !> \param scale ...
10098 ! **************************************************************************************************
10099  SUBROUTINE block_1_6_1_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
10100  REAL(kind=dp) :: kbd(6*3), kbc(6*1), kad(1*3), kac(1*1), &
10101  pbd(6*3), pbc(6*1), pad(1*3), &
10102  pac(1*1), prim(1*6*1*3), scale
10103 
10104  INTEGER :: ma, mb, mc, md, p_index
10105  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
10106 
10107  kbd(1:6*3) = 0.0_dp
10108  kbc(1:6*1) = 0.0_dp
10109  kad(1:1*3) = 0.0_dp
10110  kac(1:1*1) = 0.0_dp
10111  p_index = 0
10112  DO md = 1, 3
10113  DO mc = 1, 1
10114  DO mb = 1, 6
10115  ks_bd = 0.0_dp
10116  ks_bc = 0.0_dp
10117  p_bd = pbd((md - 1)*6 + mb)
10118  p_bc = pbc((mc - 1)*6 + mb)
10119  DO ma = 1, 1
10120  p_index = p_index + 1
10121  tmp = scale*prim(p_index)
10122  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
10123  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
10124  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
10125  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
10126  END DO
10127  kbd((md - 1)*6 + mb) = kbd((md - 1)*6 + mb) - ks_bd
10128  kbc((mc - 1)*6 + mb) = kbc((mc - 1)*6 + mb) - ks_bc
10129  END DO
10130  END DO
10131  END DO
10132  END SUBROUTINE block_1_6_1_3
10133 ! **************************************************************************************************
10134 !> \brief ...
10135 !> \param md_max ...
10136 !> \param kbd ...
10137 !> \param kbc ...
10138 !> \param kad ...
10139 !> \param kac ...
10140 !> \param pbd ...
10141 !> \param pbc ...
10142 !> \param pad ...
10143 !> \param pac ...
10144 !> \param prim ...
10145 !> \param scale ...
10146 ! **************************************************************************************************
10147  SUBROUTINE block_1_6_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
10148  INTEGER :: md_max
10149  REAL(kind=dp) :: kbd(6*md_max), kbc(6*1), kad(1*md_max), kac(1*1), pbd(6*md_max), pbc(6*1), &
10150  pad(1*md_max), pac(1*1), prim(1*6*1*md_max), scale
10151 
10152  INTEGER :: ma, mb, mc, md, p_index
10153  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
10154 
10155  kbd(1:6*md_max) = 0.0_dp
10156  kbc(1:6*1) = 0.0_dp
10157  kad(1:1*md_max) = 0.0_dp
10158  kac(1:1*1) = 0.0_dp
10159  p_index = 0
10160  DO md = 1, md_max
10161  DO mc = 1, 1
10162  DO mb = 1, 6
10163  ks_bd = 0.0_dp
10164  ks_bc = 0.0_dp
10165  p_bd = pbd((md - 1)*6 + mb)
10166  p_bc = pbc((mc - 1)*6 + mb)
10167  DO ma = 1, 1
10168  p_index = p_index + 1
10169  tmp = scale*prim(p_index)
10170  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
10171  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
10172  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
10173  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
10174  END DO
10175  kbd((md - 1)*6 + mb) = kbd((md - 1)*6 + mb) - ks_bd
10176  kbc((mc - 1)*6 + mb) = kbc((mc - 1)*6 + mb) - ks_bc
10177  END DO
10178  END DO
10179  END DO
10180  END SUBROUTINE block_1_6_1
10181 ! **************************************************************************************************
10182 !> \brief ...
10183 !> \param kbd ...
10184 !> \param kbc ...
10185 !> \param kad ...
10186 !> \param kac ...
10187 !> \param pbd ...
10188 !> \param pbc ...
10189 !> \param pad ...
10190 !> \param pac ...
10191 !> \param prim ...
10192 !> \param scale ...
10193 ! **************************************************************************************************
10194  SUBROUTINE block_1_6_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
10195  REAL(kind=dp) :: kbd(6*1), kbc(6*2), kad(1*1), kac(1*2), &
10196  pbd(6*1), pbc(6*2), pad(1*1), &
10197  pac(1*2), prim(1*6*2*1), scale
10198 
10199  INTEGER :: ma, mb, mc, md, p_index
10200  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
10201 
10202  kbd(1:6*1) = 0.0_dp
10203  kbc(1:6*2) = 0.0_dp
10204  kad(1:1*1) = 0.0_dp
10205  kac(1:1*2) = 0.0_dp
10206  p_index = 0
10207  DO md = 1, 1
10208  DO mc = 1, 2
10209  DO mb = 1, 6
10210  ks_bd = 0.0_dp
10211  ks_bc = 0.0_dp
10212  p_bd = pbd((md - 1)*6 + mb)
10213  p_bc = pbc((mc - 1)*6 + mb)
10214  DO ma = 1, 1
10215  p_index = p_index + 1
10216  tmp = scale*prim(p_index)
10217  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
10218  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
10219  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
10220  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
10221  END DO
10222  kbd((md - 1)*6 + mb) = kbd((md - 1)*6 + mb) - ks_bd
10223  kbc((mc - 1)*6 + mb) = kbc((mc - 1)*6 + mb) - ks_bc
10224  END DO
10225  END DO
10226  END DO
10227  END SUBROUTINE block_1_6_2_1
10228 ! **************************************************************************************************
10229 !> \brief ...
10230 !> \param md_max ...
10231 !> \param kbd ...
10232 !> \param kbc ...
10233 !> \param kad ...
10234 !> \param kac ...
10235 !> \param pbd ...
10236 !> \param pbc ...
10237 !> \param pad ...
10238 !> \param pac ...
10239 !> \param prim ...
10240 !> \param scale ...
10241 ! **************************************************************************************************
10242  SUBROUTINE block_1_6_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
10243  INTEGER :: md_max
10244  REAL(kind=dp) :: kbd(6*md_max), kbc(6*2), kad(1*md_max), kac(1*2), pbd(6*md_max), pbc(6*2), &
10245  pad(1*md_max), pac(1*2), prim(1*6*2*md_max), scale
10246 
10247  INTEGER :: ma, mb, mc, md, p_index
10248  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
10249 
10250  kbd(1:6*md_max) = 0.0_dp
10251  kbc(1:6*2) = 0.0_dp
10252  kad(1:1*md_max) = 0.0_dp
10253  kac(1:1*2) = 0.0_dp
10254  p_index = 0
10255  DO md = 1, md_max
10256  DO mc = 1, 2
10257  DO mb = 1, 6
10258  ks_bd = 0.0_dp
10259  ks_bc = 0.0_dp
10260  p_bd = pbd((md - 1)*6 + mb)
10261  p_bc = pbc((mc - 1)*6 + mb)
10262  DO ma = 1, 1
10263  p_index = p_index + 1
10264  tmp = scale*prim(p_index)
10265  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
10266  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
10267  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
10268  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
10269  END DO
10270  kbd((md - 1)*6 + mb) = kbd((md - 1)*6 + mb) - ks_bd
10271  kbc((mc - 1)*6 + mb) = kbc((mc - 1)*6 + mb) - ks_bc
10272  END DO
10273  END DO
10274  END DO
10275  END SUBROUTINE block_1_6_2
10276 ! **************************************************************************************************
10277 !> \brief ...
10278 !> \param kbd ...
10279 !> \param kbc ...
10280 !> \param kad ...
10281 !> \param kac ...
10282 !> \param pbd ...
10283 !> \param pbc ...
10284 !> \param pad ...
10285 !> \param pac ...
10286 !> \param prim ...
10287 !> \param scale ...
10288 ! **************************************************************************************************
10289  SUBROUTINE block_1_6_3_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
10290  REAL(kind=dp) :: kbd(6*1), kbc(6*3), kad(1*1), kac(1*3), &
10291  pbd(6*1), pbc(6*3), pad(1*1), &
10292  pac(1*3), prim(1*6*3*1), scale
10293 
10294  INTEGER :: ma, mb, mc, md, p_index
10295  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
10296 
10297  kbd(1:6*1) = 0.0_dp
10298  kbc(1:6*3) = 0.0_dp
10299  kad(1:1*1) = 0.0_dp
10300  kac(1:1*3) = 0.0_dp
10301  p_index = 0
10302  DO md = 1, 1
10303  DO mc = 1, 3
10304  DO mb = 1, 6
10305  ks_bd = 0.0_dp
10306  ks_bc = 0.0_dp
10307  p_bd = pbd((md - 1)*6 + mb)
10308  p_bc = pbc((mc - 1)*6 + mb)
10309  DO ma = 1, 1
10310  p_index = p_index + 1
10311  tmp = scale*prim(p_index)
10312  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
10313  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
10314  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
10315  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
10316  END DO
10317  kbd((md - 1)*6 + mb) = kbd((md - 1)*6 + mb) - ks_bd
10318  kbc((mc - 1)*6 + mb) = kbc((mc - 1)*6 + mb) - ks_bc
10319  END DO
10320  END DO
10321  END DO
10322  END SUBROUTINE block_1_6_3_1
10323 ! **************************************************************************************************
10324 !> \brief ...
10325 !> \param md_max ...
10326 !> \param kbd ...
10327 !> \param kbc ...
10328 !> \param kad ...
10329 !> \param kac ...
10330 !> \param pbd ...
10331 !> \param pbc ...
10332 !> \param pad ...
10333 !> \param pac ...
10334 !> \param prim ...
10335 !> \param scale ...
10336 ! **************************************************************************************************
10337  SUBROUTINE block_1_6_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
10338  INTEGER :: md_max
10339  REAL(kind=dp) :: kbd(6*md_max), kbc(6*3), kad(1*md_max), kac(1*3), pbd(6*md_max), pbc(6*3), &
10340  pad(1*md_max), pac(1*3), prim(1*6*3*md_max), scale
10341 
10342  INTEGER :: ma, mb, mc, md, p_index
10343  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
10344 
10345  kbd(1:6*md_max) = 0.0_dp
10346  kbc(1:6*3) = 0.0_dp
10347  kad(1:1*md_max) = 0.0_dp
10348  kac(1:1*3) = 0.0_dp
10349  p_index = 0
10350  DO md = 1, md_max
10351  DO mc = 1, 3
10352  DO mb = 1, 6
10353  ks_bd = 0.0_dp
10354  ks_bc = 0.0_dp
10355  p_bd = pbd((md - 1)*6 + mb)
10356  p_bc = pbc((mc - 1)*6 + mb)
10357  DO ma = 1, 1
10358  p_index = p_index + 1
10359  tmp = scale*prim(p_index)
10360  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
10361  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
10362  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
10363  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
10364  END DO
10365  kbd((md - 1)*6 + mb) = kbd((md - 1)*6 + mb) - ks_bd
10366  kbc((mc - 1)*6 + mb) = kbc((mc - 1)*6 + mb) - ks_bc
10367  END DO
10368  END DO
10369  END DO
10370  END SUBROUTINE block_1_6_3
10371 ! **************************************************************************************************
10372 !> \brief ...
10373 !> \param mc_max ...
10374 !> \param md_max ...
10375 !> \param kbd ...
10376 !> \param kbc ...
10377 !> \param kad ...
10378 !> \param kac ...
10379 !> \param pbd ...
10380 !> \param pbc ...
10381 !> \param pad ...
10382 !> \param pac ...
10383 !> \param prim ...
10384 !> \param scale ...
10385 ! **************************************************************************************************
10386  SUBROUTINE block_1_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
10387  INTEGER :: mc_max, md_max
10388  REAL(kind=dp) :: kbd(6*md_max), kbc(6*mc_max), kad(1*md_max), kac(1*mc_max), pbd(6*md_max), &
10389  pbc(6*mc_max), pad(1*md_max), pac(1*mc_max), prim(1*6*mc_max*md_max), scale
10390 
10391  INTEGER :: ma, mb, mc, md, p_index
10392  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
10393 
10394  kbd(1:6*md_max) = 0.0_dp
10395  kbc(1:6*mc_max) = 0.0_dp
10396  kad(1:1*md_max) = 0.0_dp
10397  kac(1:1*mc_max) = 0.0_dp
10398  p_index = 0
10399  DO md = 1, md_max
10400  DO mc = 1, mc_max
10401  DO mb = 1, 6
10402  ks_bd = 0.0_dp
10403  ks_bc = 0.0_dp
10404  p_bd = pbd((md - 1)*6 + mb)
10405  p_bc = pbc((mc - 1)*6 + mb)
10406  DO ma = 1, 1
10407  p_index = p_index + 1
10408  tmp = scale*prim(p_index)
10409  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
10410  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
10411  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
10412  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
10413  END DO
10414  kbd((md - 1)*6 + mb) = kbd((md - 1)*6 + mb) - ks_bd
10415  kbc((mc - 1)*6 + mb) = kbc((mc - 1)*6 + mb) - ks_bc
10416  END DO
10417  END DO
10418  END DO
10419  END SUBROUTINE block_1_6
10420 ! **************************************************************************************************
10421 !> \brief ...
10422 !> \param kbd ...
10423 !> \param kbc ...
10424 !> \param kad ...
10425 !> \param kac ...
10426 !> \param pbd ...
10427 !> \param pbc ...
10428 !> \param pad ...
10429 !> \param pac ...
10430 !> \param prim ...
10431 !> \param scale ...
10432 ! **************************************************************************************************
10433  SUBROUTINE block_1_7_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
10434  REAL(kind=dp) :: kbd(7*1), kbc(7*1), kad(1*1), kac(1*1), &
10435  pbd(7*1), pbc(7*1), pad(1*1), &
10436  pac(1*1), prim(1*7*1*1), scale
10437 
10438  INTEGER :: ma, mb, mc, md, p_index
10439  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
10440 
10441  kbd(1:7*1) = 0.0_dp
10442  kbc(1:7*1) = 0.0_dp
10443  kad(1:1*1) = 0.0_dp
10444  kac(1:1*1) = 0.0_dp
10445  p_index = 0
10446  DO md = 1, 1
10447  DO mc = 1, 1
10448  DO mb = 1, 7
10449  ks_bd = 0.0_dp
10450  ks_bc = 0.0_dp
10451  p_bd = pbd((md - 1)*7 + mb)
10452  p_bc = pbc((mc - 1)*7 + mb)
10453  DO ma = 1, 1
10454  p_index = p_index + 1
10455  tmp = scale*prim(p_index)
10456  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
10457  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
10458  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
10459  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
10460  END DO
10461  kbd((md - 1)*7 + mb) = kbd((md - 1)*7 + mb) - ks_bd
10462  kbc((mc - 1)*7 + mb) = kbc((mc - 1)*7 + mb) - ks_bc
10463  END DO
10464  END DO
10465  END DO
10466  END SUBROUTINE block_1_7_1_1
10467 ! **************************************************************************************************
10468 !> \brief ...
10469 !> \param kbd ...
10470 !> \param kbc ...
10471 !> \param kad ...
10472 !> \param kac ...
10473 !> \param pbd ...
10474 !> \param pbc ...
10475 !> \param pad ...
10476 !> \param pac ...
10477 !> \param prim ...
10478 !> \param scale ...
10479 ! **************************************************************************************************
10480  SUBROUTINE block_1_7_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
10481  REAL(kind=dp) :: kbd(7*2), kbc(7*1), kad(1*2), kac(1*1), &
10482  pbd(7*2), pbc(7*1), pad(1*2), &
10483  pac(1*1), prim(1*7*1*2), scale
10484 
10485  INTEGER :: ma, mb, mc, md, p_index
10486  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
10487 
10488  kbd(1:7*2) = 0.0_dp
10489  kbc(1:7*1) = 0.0_dp
10490  kad(1:1*2) = 0.0_dp
10491  kac(1:1*1) = 0.0_dp
10492  p_index = 0
10493  DO md = 1, 2
10494  DO mc = 1, 1
10495  DO mb = 1, 7
10496  ks_bd = 0.0_dp
10497  ks_bc = 0.0_dp
10498  p_bd = pbd((md - 1)*7 + mb)
10499  p_bc = pbc((mc - 1)*7 + mb)
10500  DO ma = 1, 1
10501  p_index = p_index + 1
10502  tmp = scale*prim(p_index)
10503  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
10504  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
10505  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
10506  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
10507  END DO
10508  kbd((md - 1)*7 + mb) = kbd((md - 1)*7 + mb) - ks_bd
10509  kbc((mc - 1)*7 + mb) = kbc((mc - 1)*7 + mb) - ks_bc
10510  END DO
10511  END DO
10512  END DO
10513  END SUBROUTINE block_1_7_1_2
10514 ! **************************************************************************************************
10515 !> \brief ...
10516 !> \param md_max ...
10517 !> \param kbd ...
10518 !> \param kbc ...
10519 !> \param kad ...
10520 !> \param kac ...
10521 !> \param pbd ...
10522 !> \param pbc ...
10523 !> \param pad ...
10524 !> \param pac ...
10525 !> \param prim ...
10526 !> \param scale ...
10527 ! **************************************************************************************************
10528  SUBROUTINE block_1_7_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
10529  INTEGER :: md_max
10530  REAL(kind=dp) :: kbd(7*md_max), kbc(7*1), kad(1*md_max), kac(1*1), pbd(7*md_max), pbc(7*1), &
10531  pad(1*md_max), pac(1*1), prim(1*7*1*md_max), scale
10532 
10533  INTEGER :: ma, mb, mc, md, p_index
10534  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
10535 
10536  kbd(1:7*md_max) = 0.0_dp
10537  kbc(1:7*1) = 0.0_dp
10538  kad(1:1*md_max) = 0.0_dp
10539  kac(1:1*1) = 0.0_dp
10540  p_index = 0
10541  DO md = 1, md_max
10542  DO mc = 1, 1
10543  DO mb = 1, 7
10544  ks_bd = 0.0_dp
10545  ks_bc = 0.0_dp
10546  p_bd = pbd((md - 1)*7 + mb)
10547  p_bc = pbc((mc - 1)*7 + mb)
10548  DO ma = 1, 1
10549  p_index = p_index + 1
10550  tmp = scale*prim(p_index)
10551  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
10552  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
10553  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
10554  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
10555  END DO
10556  kbd((md - 1)*7 + mb) = kbd((md - 1)*7 + mb) - ks_bd
10557  kbc((mc - 1)*7 + mb) = kbc((mc - 1)*7 + mb) - ks_bc
10558  END DO
10559  END DO
10560  END DO
10561  END SUBROUTINE block_1_7_1
10562 ! **************************************************************************************************
10563 !> \brief ...
10564 !> \param kbd ...
10565 !> \param kbc ...
10566 !> \param kad ...
10567 !> \param kac ...
10568 !> \param pbd ...
10569 !> \param pbc ...
10570 !> \param pad ...
10571 !> \param pac ...
10572 !> \param prim ...
10573 !> \param scale ...
10574 ! **************************************************************************************************
10575  SUBROUTINE block_1_7_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
10576  REAL(kind=dp) :: kbd(7*1), kbc(7*2), kad(1*1), kac(1*2), &
10577  pbd(7*1), pbc(7*2), pad(1*1), &
10578  pac(1*2), prim(1*7*2*1), scale
10579 
10580  INTEGER :: ma, mb, mc, md, p_index
10581  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
10582 
10583  kbd(1:7*1) = 0.0_dp
10584  kbc(1:7*2) = 0.0_dp
10585  kad(1:1*1) = 0.0_dp
10586  kac(1:1*2) = 0.0_dp
10587  p_index = 0
10588  DO md = 1, 1
10589  DO mc = 1, 2
10590  DO mb = 1, 7
10591  ks_bd = 0.0_dp
10592  ks_bc = 0.0_dp
10593  p_bd = pbd((md - 1)*7 + mb)
10594  p_bc = pbc((mc - 1)*7 + mb)
10595  DO ma = 1, 1
10596  p_index = p_index + 1
10597  tmp = scale*prim(p_index)
10598  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
10599  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
10600  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
10601  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
10602  END DO
10603  kbd((md - 1)*7 + mb) = kbd((md - 1)*7 + mb) - ks_bd
10604  kbc((mc - 1)*7 + mb) = kbc((mc - 1)*7 + mb) - ks_bc
10605  END DO
10606  END DO
10607  END DO
10608  END SUBROUTINE block_1_7_2_1
10609 ! **************************************************************************************************
10610 !> \brief ...
10611 !> \param md_max ...
10612 !> \param kbd ...
10613 !> \param kbc ...
10614 !> \param kad ...
10615 !> \param kac ...
10616 !> \param pbd ...
10617 !> \param pbc ...
10618 !> \param pad ...
10619 !> \param pac ...
10620 !> \param prim ...
10621 !> \param scale ...
10622 ! **************************************************************************************************
10623  SUBROUTINE block_1_7_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
10624  INTEGER :: md_max
10625  REAL(kind=dp) :: kbd(7*md_max), kbc(7*2), kad(1*md_max), kac(1*2), pbd(7*md_max), pbc(7*2), &
10626  pad(1*md_max), pac(1*2), prim(1*7*2*md_max), scale
10627 
10628  INTEGER :: ma, mb, mc, md, p_index
10629  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
10630 
10631  kbd(1:7*md_max) = 0.0_dp
10632  kbc(1:7*2) = 0.0_dp
10633  kad(1:1*md_max) = 0.0_dp
10634  kac(1:1*2) = 0.0_dp
10635  p_index = 0
10636  DO md = 1, md_max
10637  DO mc = 1, 2
10638  DO mb = 1, 7
10639  ks_bd = 0.0_dp
10640  ks_bc = 0.0_dp
10641  p_bd = pbd((md - 1)*7 + mb)
10642  p_bc = pbc((mc - 1)*7 + mb)
10643  DO ma = 1, 1
10644  p_index = p_index + 1
10645  tmp = scale*prim(p_index)
10646  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
10647  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
10648  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
10649  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
10650  END DO
10651  kbd((md - 1)*7 + mb) = kbd((md - 1)*7 + mb) - ks_bd
10652  kbc((mc - 1)*7 + mb) = kbc((mc - 1)*7 + mb) - ks_bc
10653  END DO
10654  END DO
10655  END DO
10656  END SUBROUTINE block_1_7_2
10657 ! **************************************************************************************************
10658 !> \brief ...
10659 !> \param mc_max ...
10660 !> \param md_max ...
10661 !> \param kbd ...
10662 !> \param kbc ...
10663 !> \param kad ...
10664 !> \param kac ...
10665 !> \param pbd ...
10666 !> \param pbc ...
10667 !> \param pad ...
10668 !> \param pac ...
10669 !> \param prim ...
10670 !> \param scale ...
10671 ! **************************************************************************************************
10672  SUBROUTINE block_1_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
10673  INTEGER :: mc_max, md_max
10674  REAL(kind=dp) :: kbd(7*md_max), kbc(7*mc_max), kad(1*md_max), kac(1*mc_max), pbd(7*md_max), &
10675  pbc(7*mc_max), pad(1*md_max), pac(1*mc_max), prim(1*7*mc_max*md_max), scale
10676 
10677  INTEGER :: ma, mb, mc, md, p_index
10678  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
10679 
10680  kbd(1:7*md_max) = 0.0_dp
10681  kbc(1:7*mc_max) = 0.0_dp
10682  kad(1:1*md_max) = 0.0_dp
10683  kac(1:1*mc_max) = 0.0_dp
10684  p_index = 0
10685  DO md = 1, md_max
10686  DO mc = 1, mc_max
10687  DO mb = 1, 7
10688  ks_bd = 0.0_dp
10689  ks_bc = 0.0_dp
10690  p_bd = pbd((md - 1)*7 + mb)
10691  p_bc = pbc((mc - 1)*7 + mb)
10692  DO ma = 1, 1
10693  p_index = p_index + 1
10694  tmp = scale*prim(p_index)
10695  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
10696  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
10697  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
10698  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
10699  END DO
10700  kbd((md - 1)*7 + mb) = kbd((md - 1)*7 + mb) - ks_bd
10701  kbc((mc - 1)*7 + mb) = kbc((mc - 1)*7 + mb) - ks_bc
10702  END DO
10703  END DO
10704  END DO
10705  END SUBROUTINE block_1_7
10706 ! **************************************************************************************************
10707 !> \brief ...
10708 !> \param kbd ...
10709 !> \param kbc ...
10710 !> \param kad ...
10711 !> \param kac ...
10712 !> \param pbd ...
10713 !> \param pbc ...
10714 !> \param pad ...
10715 !> \param pac ...
10716 !> \param prim ...
10717 !> \param scale ...
10718 ! **************************************************************************************************
10719  SUBROUTINE block_1_9_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
10720  REAL(kind=dp) :: kbd(9*1), kbc(9*1), kad(1*1), kac(1*1), &
10721  pbd(9*1), pbc(9*1), pad(1*1), &
10722  pac(1*1), prim(1*9*1*1), scale
10723 
10724  INTEGER :: ma, mb, mc, md, p_index
10725  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
10726 
10727  kbd(1:9*1) = 0.0_dp
10728  kbc(1:9*1) = 0.0_dp
10729  kad(1:1*1) = 0.0_dp
10730  kac(1:1*1) = 0.0_dp
10731  p_index = 0
10732  DO md = 1, 1
10733  DO mc = 1, 1
10734  DO mb = 1, 9
10735  ks_bd = 0.0_dp
10736  ks_bc = 0.0_dp
10737  p_bd = pbd((md - 1)*9 + mb)
10738  p_bc = pbc((mc - 1)*9 + mb)
10739  DO ma = 1, 1
10740  p_index = p_index + 1
10741  tmp = scale*prim(p_index)
10742  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
10743  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
10744  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
10745  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
10746  END DO
10747  kbd((md - 1)*9 + mb) = kbd((md - 1)*9 + mb) - ks_bd
10748  kbc((mc - 1)*9 + mb) = kbc((mc - 1)*9 + mb) - ks_bc
10749  END DO
10750  END DO
10751  END DO
10752  END SUBROUTINE block_1_9_1_1
10753 ! **************************************************************************************************
10754 !> \brief ...
10755 !> \param kbd ...
10756 !> \param kbc ...
10757 !> \param kad ...
10758 !> \param kac ...
10759 !> \param pbd ...
10760 !> \param pbc ...
10761 !> \param pad ...
10762 !> \param pac ...
10763 !> \param prim ...
10764 !> \param scale ...
10765 ! **************************************************************************************************
10766  SUBROUTINE block_1_9_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
10767  REAL(kind=dp) :: kbd(9*2), kbc(9*1), kad(1*2), kac(1*1), &
10768  pbd(9*2), pbc(9*1), pad(1*2), &
10769  pac(1*1), prim(1*9*1*2), scale
10770 
10771  INTEGER :: ma, mb, mc, md, p_index
10772  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
10773 
10774  kbd(1:9*2) = 0.0_dp
10775  kbc(1:9*1) = 0.0_dp
10776  kad(1:1*2) = 0.0_dp
10777  kac(1:1*1) = 0.0_dp
10778  p_index = 0
10779  DO md = 1, 2
10780  DO mc = 1, 1
10781  DO mb = 1, 9
10782  ks_bd = 0.0_dp
10783  ks_bc = 0.0_dp
10784  p_bd = pbd((md - 1)*9 + mb)
10785  p_bc = pbc((mc - 1)*9 + mb)
10786  DO ma = 1, 1
10787  p_index = p_index + 1
10788  tmp = scale*prim(p_index)
10789  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
10790  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
10791  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
10792  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
10793  END DO
10794  kbd((md - 1)*9 + mb) = kbd((md - 1)*9 + mb) - ks_bd
10795  kbc((mc - 1)*9 + mb) = kbc((mc - 1)*9 + mb) - ks_bc
10796  END DO
10797  END DO
10798  END DO
10799  END SUBROUTINE block_1_9_1_2
10800 ! **************************************************************************************************
10801 !> \brief ...
10802 !> \param md_max ...
10803 !> \param kbd ...
10804 !> \param kbc ...
10805 !> \param kad ...
10806 !> \param kac ...
10807 !> \param pbd ...
10808 !> \param pbc ...
10809 !> \param pad ...
10810 !> \param pac ...
10811 !> \param prim ...
10812 !> \param scale ...
10813 ! **************************************************************************************************
10814  SUBROUTINE block_1_9_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
10815  INTEGER :: md_max
10816  REAL(kind=dp) :: kbd(9*md_max), kbc(9*1), kad(1*md_max), kac(1*1), pbd(9*md_max), pbc(9*1), &
10817  pad(1*md_max), pac(1*1), prim(1*9*1*md_max), scale
10818 
10819  INTEGER :: ma, mb, mc, md, p_index
10820  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
10821 
10822  kbd(1:9*md_max) = 0.0_dp
10823  kbc(1:9*1) = 0.0_dp
10824  kad(1:1*md_max) = 0.0_dp
10825  kac(1:1*1) = 0.0_dp
10826  p_index = 0
10827  DO md = 1, md_max
10828  DO mc = 1, 1
10829  DO mb = 1, 9
10830  ks_bd = 0.0_dp
10831  ks_bc = 0.0_dp
10832  p_bd = pbd((md - 1)*9 + mb)
10833  p_bc = pbc((mc - 1)*9 + mb)
10834  DO ma = 1, 1
10835  p_index = p_index + 1
10836  tmp = scale*prim(p_index)
10837  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
10838  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
10839  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
10840  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
10841  END DO
10842  kbd((md - 1)*9 + mb) = kbd((md - 1)*9 + mb) - ks_bd
10843  kbc((mc - 1)*9 + mb) = kbc((mc - 1)*9 + mb) - ks_bc
10844  END DO
10845  END DO
10846  END DO
10847  END SUBROUTINE block_1_9_1
10848 ! **************************************************************************************************
10849 !> \brief ...
10850 !> \param kbd ...
10851 !> \param kbc ...
10852 !> \param kad ...
10853 !> \param kac ...
10854 !> \param pbd ...
10855 !> \param pbc ...
10856 !> \param pad ...
10857 !> \param pac ...
10858 !> \param prim ...
10859 !> \param scale ...
10860 ! **************************************************************************************************
10861  SUBROUTINE block_1_9_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
10862  REAL(kind=dp) :: kbd(9*1), kbc(9*2), kad(1*1), kac(1*2), &
10863  pbd(9*1), pbc(9*2), pad(1*1), &
10864  pac(1*2), prim(1*9*2*1), scale
10865 
10866  INTEGER :: ma, mb, mc, md, p_index
10867  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
10868 
10869  kbd(1:9*1) = 0.0_dp
10870  kbc(1:9*2) = 0.0_dp
10871  kad(1:1*1) = 0.0_dp
10872  kac(1:1*2) = 0.0_dp
10873  p_index = 0
10874  DO md = 1, 1
10875  DO mc = 1, 2
10876  DO mb = 1, 9
10877  ks_bd = 0.0_dp
10878  ks_bc = 0.0_dp
10879  p_bd = pbd((md - 1)*9 + mb)
10880  p_bc = pbc((mc - 1)*9 + mb)
10881  DO ma = 1, 1
10882  p_index = p_index + 1
10883  tmp = scale*prim(p_index)
10884  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
10885  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
10886  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
10887  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
10888  END DO
10889  kbd((md - 1)*9 + mb) = kbd((md - 1)*9 + mb) - ks_bd
10890  kbc((mc - 1)*9 + mb) = kbc((mc - 1)*9 + mb) - ks_bc
10891  END DO
10892  END DO
10893  END DO
10894  END SUBROUTINE block_1_9_2_1
10895 ! **************************************************************************************************
10896 !> \brief ...
10897 !> \param md_max ...
10898 !> \param kbd ...
10899 !> \param kbc ...
10900 !> \param kad ...
10901 !> \param kac ...
10902 !> \param pbd ...
10903 !> \param pbc ...
10904 !> \param pad ...
10905 !> \param pac ...
10906 !> \param prim ...
10907 !> \param scale ...
10908 ! **************************************************************************************************
10909  SUBROUTINE block_1_9_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
10910  INTEGER :: md_max
10911  REAL(kind=dp) :: kbd(9*md_max), kbc(9*2), kad(1*md_max), kac(1*2), pbd(9*md_max), pbc(9*2), &
10912  pad(1*md_max), pac(1*2), prim(1*9*2*md_max), scale
10913 
10914  INTEGER :: ma, mb, mc, md, p_index
10915  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
10916 
10917  kbd(1:9*md_max) = 0.0_dp
10918  kbc(1:9*2) = 0.0_dp
10919  kad(1:1*md_max) = 0.0_dp
10920  kac(1:1*2) = 0.0_dp
10921  p_index = 0
10922  DO md = 1, md_max
10923  DO mc = 1, 2
10924  DO mb = 1, 9
10925  ks_bd = 0.0_dp
10926  ks_bc = 0.0_dp
10927  p_bd = pbd((md - 1)*9 + mb)
10928  p_bc = pbc((mc - 1)*9 + mb)
10929  DO ma = 1, 1
10930  p_index = p_index + 1
10931  tmp = scale*prim(p_index)
10932  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
10933  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
10934  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
10935  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
10936  END DO
10937  kbd((md - 1)*9 + mb) = kbd((md - 1)*9 + mb) - ks_bd
10938  kbc((mc - 1)*9 + mb) = kbc((mc - 1)*9 + mb) - ks_bc
10939  END DO
10940  END DO
10941  END DO
10942  END SUBROUTINE block_1_9_2
10943 ! **************************************************************************************************
10944 !> \brief ...
10945 !> \param mc_max ...
10946 !> \param md_max ...
10947 !> \param kbd ...
10948 !> \param kbc ...
10949 !> \param kad ...
10950 !> \param kac ...
10951 !> \param pbd ...
10952 !> \param pbc ...
10953 !> \param pad ...
10954 !> \param pac ...
10955 !> \param prim ...
10956 !> \param scale ...
10957 ! **************************************************************************************************
10958  SUBROUTINE block_1_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
10959  INTEGER :: mc_max, md_max
10960  REAL(kind=dp) :: kbd(9*md_max), kbc(9*mc_max), kad(1*md_max), kac(1*mc_max), pbd(9*md_max), &
10961  pbc(9*mc_max), pad(1*md_max), pac(1*mc_max), prim(1*9*mc_max*md_max), scale
10962 
10963  INTEGER :: ma, mb, mc, md, p_index
10964  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
10965 
10966  kbd(1:9*md_max) = 0.0_dp
10967  kbc(1:9*mc_max) = 0.0_dp
10968  kad(1:1*md_max) = 0.0_dp
10969  kac(1:1*mc_max) = 0.0_dp
10970  p_index = 0
10971  DO md = 1, md_max
10972  DO mc = 1, mc_max
10973  DO mb = 1, 9
10974  ks_bd = 0.0_dp
10975  ks_bc = 0.0_dp
10976  p_bd = pbd((md - 1)*9 + mb)
10977  p_bc = pbc((mc - 1)*9 + mb)
10978  DO ma = 1, 1
10979  p_index = p_index + 1
10980  tmp = scale*prim(p_index)
10981  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
10982  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
10983  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
10984  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
10985  END DO
10986  kbd((md - 1)*9 + mb) = kbd((md - 1)*9 + mb) - ks_bd
10987  kbc((mc - 1)*9 + mb) = kbc((mc - 1)*9 + mb) - ks_bc
10988  END DO
10989  END DO
10990  END DO
10991  END SUBROUTINE block_1_9
10992 ! **************************************************************************************************
10993 !> \brief ...
10994 !> \param kbd ...
10995 !> \param kbc ...
10996 !> \param kad ...
10997 !> \param kac ...
10998 !> \param pbd ...
10999 !> \param pbc ...
11000 !> \param pad ...
11001 !> \param pac ...
11002 !> \param prim ...
11003 !> \param scale ...
11004 ! **************************************************************************************************
11005  SUBROUTINE block_1_10_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
11006  REAL(kind=dp) :: kbd(10*1), kbc(10*1), kad(1*1), &
11007  kac(1*1), pbd(10*1), pbc(10*1), &
11008  pad(1*1), pac(1*1), prim(1*10*1*1), &
11009  scale
11010 
11011  INTEGER :: ma, mb, mc, md, p_index
11012  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
11013 
11014  kbd(1:10*1) = 0.0_dp
11015  kbc(1:10*1) = 0.0_dp
11016  kad(1:1*1) = 0.0_dp
11017  kac(1:1*1) = 0.0_dp
11018  p_index = 0
11019  DO md = 1, 1
11020  DO mc = 1, 1
11021  DO mb = 1, 10
11022  ks_bd = 0.0_dp
11023  ks_bc = 0.0_dp
11024  p_bd = pbd((md - 1)*10 + mb)
11025  p_bc = pbc((mc - 1)*10 + mb)
11026  DO ma = 1, 1
11027  p_index = p_index + 1
11028  tmp = scale*prim(p_index)
11029  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
11030  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
11031  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
11032  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
11033  END DO
11034  kbd((md - 1)*10 + mb) = kbd((md - 1)*10 + mb) - ks_bd
11035  kbc((mc - 1)*10 + mb) = kbc((mc - 1)*10 + mb) - ks_bc
11036  END DO
11037  END DO
11038  END DO
11039  END SUBROUTINE block_1_10_1_1
11040 ! **************************************************************************************************
11041 !> \brief ...
11042 !> \param md_max ...
11043 !> \param kbd ...
11044 !> \param kbc ...
11045 !> \param kad ...
11046 !> \param kac ...
11047 !> \param pbd ...
11048 !> \param pbc ...
11049 !> \param pad ...
11050 !> \param pac ...
11051 !> \param prim ...
11052 !> \param scale ...
11053 ! **************************************************************************************************
11054  SUBROUTINE block_1_10_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
11055  INTEGER :: md_max
11056  REAL(kind=dp) :: kbd(10*md_max), kbc(10*1), kad(1*md_max), kac(1*1), pbd(10*md_max), &
11057  pbc(10*1), pad(1*md_max), pac(1*1), prim(1*10*1*md_max), scale
11058 
11059  INTEGER :: ma, mb, mc, md, p_index
11060  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
11061 
11062  kbd(1:10*md_max) = 0.0_dp
11063  kbc(1:10*1) = 0.0_dp
11064  kad(1:1*md_max) = 0.0_dp
11065  kac(1:1*1) = 0.0_dp
11066  p_index = 0
11067  DO md = 1, md_max
11068  DO mc = 1, 1
11069  DO mb = 1, 10
11070  ks_bd = 0.0_dp
11071  ks_bc = 0.0_dp
11072  p_bd = pbd((md - 1)*10 + mb)
11073  p_bc = pbc((mc - 1)*10 + mb)
11074  DO ma = 1, 1
11075  p_index = p_index + 1
11076  tmp = scale*prim(p_index)
11077  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
11078  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
11079  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
11080  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
11081  END DO
11082  kbd((md - 1)*10 + mb) = kbd((md - 1)*10 + mb) - ks_bd
11083  kbc((mc - 1)*10 + mb) = kbc((mc - 1)*10 + mb) - ks_bc
11084  END DO
11085  END DO
11086  END DO
11087  END SUBROUTINE block_1_10_1
11088 ! **************************************************************************************************
11089 !> \brief ...
11090 !> \param mc_max ...
11091 !> \param md_max ...
11092 !> \param kbd ...
11093 !> \param kbc ...
11094 !> \param kad ...
11095 !> \param kac ...
11096 !> \param pbd ...
11097 !> \param pbc ...
11098 !> \param pad ...
11099 !> \param pac ...
11100 !> \param prim ...
11101 !> \param scale ...
11102 ! **************************************************************************************************
11103  SUBROUTINE block_1_10(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
11104  INTEGER :: mc_max, md_max
11105  REAL(kind=dp) :: kbd(10*md_max), kbc(10*mc_max), kad(1*md_max), kac(1*mc_max), &
11106  pbd(10*md_max), pbc(10*mc_max), pad(1*md_max), pac(1*mc_max), prim(1*10*mc_max*md_max), &
11107  scale
11108 
11109  INTEGER :: ma, mb, mc, md, p_index
11110  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
11111 
11112  kbd(1:10*md_max) = 0.0_dp
11113  kbc(1:10*mc_max) = 0.0_dp
11114  kad(1:1*md_max) = 0.0_dp
11115  kac(1:1*mc_max) = 0.0_dp
11116  p_index = 0
11117  DO md = 1, md_max
11118  DO mc = 1, mc_max
11119  DO mb = 1, 10
11120  ks_bd = 0.0_dp
11121  ks_bc = 0.0_dp
11122  p_bd = pbd((md - 1)*10 + mb)
11123  p_bc = pbc((mc - 1)*10 + mb)
11124  DO ma = 1, 1
11125  p_index = p_index + 1
11126  tmp = scale*prim(p_index)
11127  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
11128  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
11129  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
11130  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
11131  END DO
11132  kbd((md - 1)*10 + mb) = kbd((md - 1)*10 + mb) - ks_bd
11133  kbc((mc - 1)*10 + mb) = kbc((mc - 1)*10 + mb) - ks_bc
11134  END DO
11135  END DO
11136  END DO
11137  END SUBROUTINE block_1_10
11138 ! **************************************************************************************************
11139 !> \brief ...
11140 !> \param kbd ...
11141 !> \param kbc ...
11142 !> \param kad ...
11143 !> \param kac ...
11144 !> \param pbd ...
11145 !> \param pbc ...
11146 !> \param pad ...
11147 !> \param pac ...
11148 !> \param prim ...
11149 !> \param scale ...
11150 ! **************************************************************************************************
11151  SUBROUTINE block_1_11_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
11152  REAL(kind=dp) :: kbd(11*1), kbc(11*1), kad(1*1), &
11153  kac(1*1), pbd(11*1), pbc(11*1), &
11154  pad(1*1), pac(1*1), prim(1*11*1*1), &
11155  scale
11156 
11157  INTEGER :: ma, mb, mc, md, p_index
11158  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
11159 
11160  kbd(1:11*1) = 0.0_dp
11161  kbc(1:11*1) = 0.0_dp
11162  kad(1:1*1) = 0.0_dp
11163  kac(1:1*1) = 0.0_dp
11164  p_index = 0
11165  DO md = 1, 1
11166  DO mc = 1, 1
11167  DO mb = 1, 11
11168  ks_bd = 0.0_dp
11169  ks_bc = 0.0_dp
11170  p_bd = pbd((md - 1)*11 + mb)
11171  p_bc = pbc((mc - 1)*11 + mb)
11172  DO ma = 1, 1
11173  p_index = p_index + 1
11174  tmp = scale*prim(p_index)
11175  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
11176  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
11177  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
11178  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
11179  END DO
11180  kbd((md - 1)*11 + mb) = kbd((md - 1)*11 + mb) - ks_bd
11181  kbc((mc - 1)*11 + mb) = kbc((mc - 1)*11 + mb) - ks_bc
11182  END DO
11183  END DO
11184  END DO
11185  END SUBROUTINE block_1_11_1_1
11186 ! **************************************************************************************************
11187 !> \brief ...
11188 !> \param md_max ...
11189 !> \param kbd ...
11190 !> \param kbc ...
11191 !> \param kad ...
11192 !> \param kac ...
11193 !> \param pbd ...
11194 !> \param pbc ...
11195 !> \param pad ...
11196 !> \param pac ...
11197 !> \param prim ...
11198 !> \param scale ...
11199 ! **************************************************************************************************
11200  SUBROUTINE block_1_11_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
11201  INTEGER :: md_max
11202  REAL(kind=dp) :: kbd(11*md_max), kbc(11*1), kad(1*md_max), kac(1*1), pbd(11*md_max), &
11203  pbc(11*1), pad(1*md_max), pac(1*1), prim(1*11*1*md_max), scale
11204 
11205  INTEGER :: ma, mb, mc, md, p_index
11206  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
11207 
11208  kbd(1:11*md_max) = 0.0_dp
11209  kbc(1:11*1) = 0.0_dp
11210  kad(1:1*md_max) = 0.0_dp
11211  kac(1:1*1) = 0.0_dp
11212  p_index = 0
11213  DO md = 1, md_max
11214  DO mc = 1, 1
11215  DO mb = 1, 11
11216  ks_bd = 0.0_dp
11217  ks_bc = 0.0_dp
11218  p_bd = pbd((md - 1)*11 + mb)
11219  p_bc = pbc((mc - 1)*11 + mb)
11220  DO ma = 1, 1
11221  p_index = p_index + 1
11222  tmp = scale*prim(p_index)
11223  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
11224  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
11225  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
11226  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
11227  END DO
11228  kbd((md - 1)*11 + mb) = kbd((md - 1)*11 + mb) - ks_bd
11229  kbc((mc - 1)*11 + mb) = kbc((mc - 1)*11 + mb) - ks_bc
11230  END DO
11231  END DO
11232  END DO
11233  END SUBROUTINE block_1_11_1
11234 ! **************************************************************************************************
11235 !> \brief ...
11236 !> \param mc_max ...
11237 !> \param md_max ...
11238 !> \param kbd ...
11239 !> \param kbc ...
11240 !> \param kad ...
11241 !> \param kac ...
11242 !> \param pbd ...
11243 !> \param pbc ...
11244 !> \param pad ...
11245 !> \param pac ...
11246 !> \param prim ...
11247 !> \param scale ...
11248 ! **************************************************************************************************
11249  SUBROUTINE block_1_11(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
11250  INTEGER :: mc_max, md_max
11251  REAL(kind=dp) :: kbd(11*md_max), kbc(11*mc_max), kad(1*md_max), kac(1*mc_max), &
11252  pbd(11*md_max), pbc(11*mc_max), pad(1*md_max), pac(1*mc_max), prim(1*11*mc_max*md_max), &
11253  scale
11254 
11255  INTEGER :: ma, mb, mc, md, p_index
11256  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
11257 
11258  kbd(1:11*md_max) = 0.0_dp
11259  kbc(1:11*mc_max) = 0.0_dp
11260  kad(1:1*md_max) = 0.0_dp
11261  kac(1:1*mc_max) = 0.0_dp
11262  p_index = 0
11263  DO md = 1, md_max
11264  DO mc = 1, mc_max
11265  DO mb = 1, 11
11266  ks_bd = 0.0_dp
11267  ks_bc = 0.0_dp
11268  p_bd = pbd((md - 1)*11 + mb)
11269  p_bc = pbc((mc - 1)*11 + mb)
11270  DO ma = 1, 1
11271  p_index = p_index + 1
11272  tmp = scale*prim(p_index)
11273  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
11274  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
11275  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
11276  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
11277  END DO
11278  kbd((md - 1)*11 + mb) = kbd((md - 1)*11 + mb) - ks_bd
11279  kbc((mc - 1)*11 + mb) = kbc((mc - 1)*11 + mb) - ks_bc
11280  END DO
11281  END DO
11282  END DO
11283  END SUBROUTINE block_1_11
11284 ! **************************************************************************************************
11285 !> \brief ...
11286 !> \param kbd ...
11287 !> \param kbc ...
11288 !> \param kad ...
11289 !> \param kac ...
11290 !> \param pbd ...
11291 !> \param pbc ...
11292 !> \param pad ...
11293 !> \param pac ...
11294 !> \param prim ...
11295 !> \param scale ...
11296 ! **************************************************************************************************
11297  SUBROUTINE block_1_15_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
11298  REAL(kind=dp) :: kbd(15*1), kbc(15*1), kad(1*1), &
11299  kac(1*1), pbd(15*1), pbc(15*1), &
11300  pad(1*1), pac(1*1), prim(1*15*1*1), &
11301  scale
11302 
11303  INTEGER :: ma, mb, mc, md, p_index
11304  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
11305 
11306  kbd(1:15*1) = 0.0_dp
11307  kbc(1:15*1) = 0.0_dp
11308  kad(1:1*1) = 0.0_dp
11309  kac(1:1*1) = 0.0_dp
11310  p_index = 0
11311  DO md = 1, 1
11312  DO mc = 1, 1
11313  DO mb = 1, 15
11314  ks_bd = 0.0_dp
11315  ks_bc = 0.0_dp
11316  p_bd = pbd((md - 1)*15 + mb)
11317  p_bc = pbc((mc - 1)*15 + mb)
11318  DO ma = 1, 1
11319  p_index = p_index + 1
11320  tmp = scale*prim(p_index)
11321  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
11322  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
11323  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
11324  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
11325  END DO
11326  kbd((md - 1)*15 + mb) = kbd((md - 1)*15 + mb) - ks_bd
11327  kbc((mc - 1)*15 + mb) = kbc((mc - 1)*15 + mb) - ks_bc
11328  END DO
11329  END DO
11330  END DO
11331  END SUBROUTINE block_1_15_1_1
11332 ! **************************************************************************************************
11333 !> \brief ...
11334 !> \param md_max ...
11335 !> \param kbd ...
11336 !> \param kbc ...
11337 !> \param kad ...
11338 !> \param kac ...
11339 !> \param pbd ...
11340 !> \param pbc ...
11341 !> \param pad ...
11342 !> \param pac ...
11343 !> \param prim ...
11344 !> \param scale ...
11345 ! **************************************************************************************************
11346  SUBROUTINE block_1_15_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
11347  INTEGER :: md_max
11348  REAL(kind=dp) :: kbd(15*md_max), kbc(15*1), kad(1*md_max), kac(1*1), pbd(15*md_max), &
11349  pbc(15*1), pad(1*md_max), pac(1*1), prim(1*15*1*md_max), scale
11350 
11351  INTEGER :: ma, mb, mc, md, p_index
11352  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
11353 
11354  kbd(1:15*md_max) = 0.0_dp
11355  kbc(1:15*1) = 0.0_dp
11356  kad(1:1*md_max) = 0.0_dp
11357  kac(1:1*1) = 0.0_dp
11358  p_index = 0
11359  DO md = 1, md_max
11360  DO mc = 1, 1
11361  DO mb = 1, 15
11362  ks_bd = 0.0_dp
11363  ks_bc = 0.0_dp
11364  p_bd = pbd((md - 1)*15 + mb)
11365  p_bc = pbc((mc - 1)*15 + mb)
11366  DO ma = 1, 1
11367  p_index = p_index + 1
11368  tmp = scale*prim(p_index)
11369  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
11370  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
11371  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
11372  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
11373  END DO
11374  kbd((md - 1)*15 + mb) = kbd((md - 1)*15 + mb) - ks_bd
11375  kbc((mc - 1)*15 + mb) = kbc((mc - 1)*15 + mb) - ks_bc
11376  END DO
11377  END DO
11378  END DO
11379  END SUBROUTINE block_1_15_1
11380 ! **************************************************************************************************
11381 !> \brief ...
11382 !> \param mc_max ...
11383 !> \param md_max ...
11384 !> \param kbd ...
11385 !> \param kbc ...
11386 !> \param kad ...
11387 !> \param kac ...
11388 !> \param pbd ...
11389 !> \param pbc ...
11390 !> \param pad ...
11391 !> \param pac ...
11392 !> \param prim ...
11393 !> \param scale ...
11394 ! **************************************************************************************************
11395  SUBROUTINE block_1_15(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
11396  INTEGER :: mc_max, md_max
11397  REAL(kind=dp) :: kbd(15*md_max), kbc(15*mc_max), kad(1*md_max), kac(1*mc_max), &
11398  pbd(15*md_max), pbc(15*mc_max), pad(1*md_max), pac(1*mc_max), prim(1*15*mc_max*md_max), &
11399  scale
11400 
11401  INTEGER :: ma, mb, mc, md, p_index
11402  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
11403 
11404  kbd(1:15*md_max) = 0.0_dp
11405  kbc(1:15*mc_max) = 0.0_dp
11406  kad(1:1*md_max) = 0.0_dp
11407  kac(1:1*mc_max) = 0.0_dp
11408  p_index = 0
11409  DO md = 1, md_max
11410  DO mc = 1, mc_max
11411  DO mb = 1, 15
11412  ks_bd = 0.0_dp
11413  ks_bc = 0.0_dp
11414  p_bd = pbd((md - 1)*15 + mb)
11415  p_bc = pbc((mc - 1)*15 + mb)
11416  DO ma = 1, 1
11417  p_index = p_index + 1
11418  tmp = scale*prim(p_index)
11419  ks_bc = ks_bc + tmp*pad((md - 1)*1 + ma)
11420  ks_bd = ks_bd + tmp*pac((mc - 1)*1 + ma)
11421  kad((md - 1)*1 + ma) = kad((md - 1)*1 + ma) - tmp*p_bc
11422  kac((mc - 1)*1 + ma) = kac((mc - 1)*1 + ma) - tmp*p_bd
11423  END DO
11424  kbd((md - 1)*15 + mb) = kbd((md - 1)*15 + mb) - ks_bd
11425  kbc((mc - 1)*15 + mb) = kbc((mc - 1)*15 + mb) - ks_bc
11426  END DO
11427  END DO
11428  END DO
11429  END SUBROUTINE block_1_15
11430 ! **************************************************************************************************
11431 !> \brief ...
11432 !> \param kbd ...
11433 !> \param kbc ...
11434 !> \param kad ...
11435 !> \param kac ...
11436 !> \param pbd ...
11437 !> \param pbc ...
11438 !> \param pad ...
11439 !> \param pac ...
11440 !> \param prim ...
11441 !> \param scale ...
11442 ! **************************************************************************************************
11443  SUBROUTINE block_2_1_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
11444  REAL(kind=dp) :: kbd(1*1), kbc(1*1), kad(2*1), kac(2*1), &
11445  pbd(1*1), pbc(1*1), pad(2*1), &
11446  pac(2*1), prim(2*1*1*1), scale
11447 
11448  INTEGER :: ma, mb, mc, md, p_index
11449  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
11450 
11451  kbd(1:1*1) = 0.0_dp
11452  kbc(1:1*1) = 0.0_dp
11453  kad(1:2*1) = 0.0_dp
11454  kac(1:2*1) = 0.0_dp
11455  p_index = 0
11456  DO md = 1, 1
11457  DO mc = 1, 1
11458  DO mb = 1, 1
11459  ks_bd = 0.0_dp
11460  ks_bc = 0.0_dp
11461  p_bd = pbd((md - 1)*1 + mb)
11462  p_bc = pbc((mc - 1)*1 + mb)
11463  DO ma = 1, 2
11464  p_index = p_index + 1
11465  tmp = scale*prim(p_index)
11466  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
11467  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
11468  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
11469  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
11470  END DO
11471  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
11472  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
11473  END DO
11474  END DO
11475  END DO
11476  END SUBROUTINE block_2_1_1_1
11477 ! **************************************************************************************************
11478 !> \brief ...
11479 !> \param kbd ...
11480 !> \param kbc ...
11481 !> \param kad ...
11482 !> \param kac ...
11483 !> \param pbd ...
11484 !> \param pbc ...
11485 !> \param pad ...
11486 !> \param pac ...
11487 !> \param prim ...
11488 !> \param scale ...
11489 ! **************************************************************************************************
11490  SUBROUTINE block_2_1_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
11491  REAL(kind=dp) :: kbd(1*2), kbc(1*1), kad(2*2), kac(2*1), &
11492  pbd(1*2), pbc(1*1), pad(2*2), &
11493  pac(2*1), prim(2*1*1*2), scale
11494 
11495  INTEGER :: ma, mb, mc, md, p_index
11496  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
11497 
11498  kbd(1:1*2) = 0.0_dp
11499  kbc(1:1*1) = 0.0_dp
11500  kad(1:2*2) = 0.0_dp
11501  kac(1:2*1) = 0.0_dp
11502  p_index = 0
11503  DO md = 1, 2
11504  DO mc = 1, 1
11505  DO mb = 1, 1
11506  ks_bd = 0.0_dp
11507  ks_bc = 0.0_dp
11508  p_bd = pbd((md - 1)*1 + mb)
11509  p_bc = pbc((mc - 1)*1 + mb)
11510  DO ma = 1, 2
11511  p_index = p_index + 1
11512  tmp = scale*prim(p_index)
11513  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
11514  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
11515  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
11516  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
11517  END DO
11518  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
11519  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
11520  END DO
11521  END DO
11522  END DO
11523  END SUBROUTINE block_2_1_1_2
11524 ! **************************************************************************************************
11525 !> \brief ...
11526 !> \param kbd ...
11527 !> \param kbc ...
11528 !> \param kad ...
11529 !> \param kac ...
11530 !> \param pbd ...
11531 !> \param pbc ...
11532 !> \param pad ...
11533 !> \param pac ...
11534 !> \param prim ...
11535 !> \param scale ...
11536 ! **************************************************************************************************
11537  SUBROUTINE block_2_1_1_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
11538  REAL(kind=dp) :: kbd(1*3), kbc(1*1), kad(2*3), kac(2*1), &
11539  pbd(1*3), pbc(1*1), pad(2*3), &
11540  pac(2*1), prim(2*1*1*3), scale
11541 
11542  INTEGER :: ma, mb, mc, md, p_index
11543  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
11544 
11545  kbd(1:1*3) = 0.0_dp
11546  kbc(1:1*1) = 0.0_dp
11547  kad(1:2*3) = 0.0_dp
11548  kac(1:2*1) = 0.0_dp
11549  p_index = 0
11550  DO md = 1, 3
11551  DO mc = 1, 1
11552  DO mb = 1, 1
11553  ks_bd = 0.0_dp
11554  ks_bc = 0.0_dp
11555  p_bd = pbd((md - 1)*1 + mb)
11556  p_bc = pbc((mc - 1)*1 + mb)
11557  DO ma = 1, 2
11558  p_index = p_index + 1
11559  tmp = scale*prim(p_index)
11560  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
11561  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
11562  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
11563  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
11564  END DO
11565  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
11566  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
11567  END DO
11568  END DO
11569  END DO
11570  END SUBROUTINE block_2_1_1_3
11571 ! **************************************************************************************************
11572 !> \brief ...
11573 !> \param kbd ...
11574 !> \param kbc ...
11575 !> \param kad ...
11576 !> \param kac ...
11577 !> \param pbd ...
11578 !> \param pbc ...
11579 !> \param pad ...
11580 !> \param pac ...
11581 !> \param prim ...
11582 !> \param scale ...
11583 ! **************************************************************************************************
11584  SUBROUTINE block_2_1_1_4(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
11585  REAL(kind=dp) :: kbd(1*4), kbc(1*1), kad(2*4), kac(2*1), &
11586  pbd(1*4), pbc(1*1), pad(2*4), &
11587  pac(2*1), prim(2*1*1*4), scale
11588 
11589  INTEGER :: ma, mb, mc, md, p_index
11590  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
11591 
11592  kbd(1:1*4) = 0.0_dp
11593  kbc(1:1*1) = 0.0_dp
11594  kad(1:2*4) = 0.0_dp
11595  kac(1:2*1) = 0.0_dp
11596  p_index = 0
11597  DO md = 1, 4
11598  DO mc = 1, 1
11599  DO mb = 1, 1
11600  ks_bd = 0.0_dp
11601  ks_bc = 0.0_dp
11602  p_bd = pbd((md - 1)*1 + mb)
11603  p_bc = pbc((mc - 1)*1 + mb)
11604  DO ma = 1, 2
11605  p_index = p_index + 1
11606  tmp = scale*prim(p_index)
11607  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
11608  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
11609  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
11610  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
11611  END DO
11612  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
11613  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
11614  END DO
11615  END DO
11616  END DO
11617  END SUBROUTINE block_2_1_1_4
11618 ! **************************************************************************************************
11619 !> \brief ...
11620 !> \param kbd ...
11621 !> \param kbc ...
11622 !> \param kad ...
11623 !> \param kac ...
11624 !> \param pbd ...
11625 !> \param pbc ...
11626 !> \param pad ...
11627 !> \param pac ...
11628 !> \param prim ...
11629 !> \param scale ...
11630 ! **************************************************************************************************
11631  SUBROUTINE block_2_1_1_5(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
11632  REAL(kind=dp) :: kbd(1*5), kbc(1*1), kad(2*5), kac(2*1), &
11633  pbd(1*5), pbc(1*1), pad(2*5), &
11634  pac(2*1), prim(2*1*1*5), scale
11635 
11636  INTEGER :: ma, mb, mc, md, p_index
11637  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
11638 
11639  kbd(1:1*5) = 0.0_dp
11640  kbc(1:1*1) = 0.0_dp
11641  kad(1:2*5) = 0.0_dp
11642  kac(1:2*1) = 0.0_dp
11643  p_index = 0
11644  DO md = 1, 5
11645  DO mc = 1, 1
11646  DO mb = 1, 1
11647  ks_bd = 0.0_dp
11648  ks_bc = 0.0_dp
11649  p_bd = pbd((md - 1)*1 + mb)
11650  p_bc = pbc((mc - 1)*1 + mb)
11651  DO ma = 1, 2
11652  p_index = p_index + 1
11653  tmp = scale*prim(p_index)
11654  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
11655  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
11656  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
11657  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
11658  END DO
11659  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
11660  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
11661  END DO
11662  END DO
11663  END DO
11664  END SUBROUTINE block_2_1_1_5
11665 ! **************************************************************************************************
11666 !> \brief ...
11667 !> \param kbd ...
11668 !> \param kbc ...
11669 !> \param kad ...
11670 !> \param kac ...
11671 !> \param pbd ...
11672 !> \param pbc ...
11673 !> \param pad ...
11674 !> \param pac ...
11675 !> \param prim ...
11676 !> \param scale ...
11677 ! **************************************************************************************************
11678  SUBROUTINE block_2_1_1_6(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
11679  REAL(kind=dp) :: kbd(1*6), kbc(1*1), kad(2*6), kac(2*1), &
11680  pbd(1*6), pbc(1*1), pad(2*6), &
11681  pac(2*1), prim(2*1*1*6), scale
11682 
11683  INTEGER :: ma, mb, mc, md, p_index
11684  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
11685 
11686  kbd(1:1*6) = 0.0_dp
11687  kbc(1:1*1) = 0.0_dp
11688  kad(1:2*6) = 0.0_dp
11689  kac(1:2*1) = 0.0_dp
11690  p_index = 0
11691  DO md = 1, 6
11692  DO mc = 1, 1
11693  DO mb = 1, 1
11694  ks_bd = 0.0_dp
11695  ks_bc = 0.0_dp
11696  p_bd = pbd((md - 1)*1 + mb)
11697  p_bc = pbc((mc - 1)*1 + mb)
11698  DO ma = 1, 2
11699  p_index = p_index + 1
11700  tmp = scale*prim(p_index)
11701  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
11702  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
11703  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
11704  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
11705  END DO
11706  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
11707  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
11708  END DO
11709  END DO
11710  END DO
11711  END SUBROUTINE block_2_1_1_6
11712 ! **************************************************************************************************
11713 !> \brief ...
11714 !> \param kbd ...
11715 !> \param kbc ...
11716 !> \param kad ...
11717 !> \param kac ...
11718 !> \param pbd ...
11719 !> \param pbc ...
11720 !> \param pad ...
11721 !> \param pac ...
11722 !> \param prim ...
11723 !> \param scale ...
11724 ! **************************************************************************************************
11725  SUBROUTINE block_2_1_1_7(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
11726  REAL(kind=dp) :: kbd(1*7), kbc(1*1), kad(2*7), kac(2*1), &
11727  pbd(1*7), pbc(1*1), pad(2*7), &
11728  pac(2*1), prim(2*1*1*7), scale
11729 
11730  INTEGER :: ma, mb, mc, md, p_index
11731  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
11732 
11733  kbd(1:1*7) = 0.0_dp
11734  kbc(1:1*1) = 0.0_dp
11735  kad(1:2*7) = 0.0_dp
11736  kac(1:2*1) = 0.0_dp
11737  p_index = 0
11738  DO md = 1, 7
11739  DO mc = 1, 1
11740  DO mb = 1, 1
11741  ks_bd = 0.0_dp
11742  ks_bc = 0.0_dp
11743  p_bd = pbd((md - 1)*1 + mb)
11744  p_bc = pbc((mc - 1)*1 + mb)
11745  DO ma = 1, 2
11746  p_index = p_index + 1
11747  tmp = scale*prim(p_index)
11748  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
11749  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
11750  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
11751  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
11752  END DO
11753  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
11754  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
11755  END DO
11756  END DO
11757  END DO
11758  END SUBROUTINE block_2_1_1_7
11759 ! **************************************************************************************************
11760 !> \brief ...
11761 !> \param kbd ...
11762 !> \param kbc ...
11763 !> \param kad ...
11764 !> \param kac ...
11765 !> \param pbd ...
11766 !> \param pbc ...
11767 !> \param pad ...
11768 !> \param pac ...
11769 !> \param prim ...
11770 !> \param scale ...
11771 ! **************************************************************************************************
11772  SUBROUTINE block_2_1_1_9(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
11773  REAL(kind=dp) :: kbd(1*9), kbc(1*1), kad(2*9), kac(2*1), &
11774  pbd(1*9), pbc(1*1), pad(2*9), &
11775  pac(2*1), prim(2*1*1*9), scale
11776 
11777  INTEGER :: ma, mb, mc, md, p_index
11778  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
11779 
11780  kbd(1:1*9) = 0.0_dp
11781  kbc(1:1*1) = 0.0_dp
11782  kad(1:2*9) = 0.0_dp
11783  kac(1:2*1) = 0.0_dp
11784  p_index = 0
11785  DO md = 1, 9
11786  DO mc = 1, 1
11787  DO mb = 1, 1
11788  ks_bd = 0.0_dp
11789  ks_bc = 0.0_dp
11790  p_bd = pbd((md - 1)*1 + mb)
11791  p_bc = pbc((mc - 1)*1 + mb)
11792  DO ma = 1, 2
11793  p_index = p_index + 1
11794  tmp = scale*prim(p_index)
11795  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
11796  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
11797  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
11798  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
11799  END DO
11800  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
11801  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
11802  END DO
11803  END DO
11804  END DO
11805  END SUBROUTINE block_2_1_1_9
11806 ! **************************************************************************************************
11807 !> \brief ...
11808 !> \param md_max ...
11809 !> \param kbd ...
11810 !> \param kbc ...
11811 !> \param kad ...
11812 !> \param kac ...
11813 !> \param pbd ...
11814 !> \param pbc ...
11815 !> \param pad ...
11816 !> \param pac ...
11817 !> \param prim ...
11818 !> \param scale ...
11819 ! **************************************************************************************************
11820  SUBROUTINE block_2_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
11821  INTEGER :: md_max
11822  REAL(kind=dp) :: kbd(1*md_max), kbc(1*1), kad(2*md_max), kac(2*1), pbd(1*md_max), pbc(1*1), &
11823  pad(2*md_max), pac(2*1), prim(2*1*1*md_max), scale
11824 
11825  INTEGER :: ma, mb, mc, md, p_index
11826  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
11827 
11828  kbd(1:1*md_max) = 0.0_dp
11829  kbc(1:1*1) = 0.0_dp
11830  kad(1:2*md_max) = 0.0_dp
11831  kac(1:2*1) = 0.0_dp
11832  p_index = 0
11833  DO md = 1, md_max
11834  DO mc = 1, 1
11835  DO mb = 1, 1
11836  ks_bd = 0.0_dp
11837  ks_bc = 0.0_dp
11838  p_bd = pbd((md - 1)*1 + mb)
11839  p_bc = pbc((mc - 1)*1 + mb)
11840  DO ma = 1, 2
11841  p_index = p_index + 1
11842  tmp = scale*prim(p_index)
11843  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
11844  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
11845  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
11846  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
11847  END DO
11848  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
11849  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
11850  END DO
11851  END DO
11852  END DO
11853  END SUBROUTINE block_2_1_1
11854 ! **************************************************************************************************
11855 !> \brief ...
11856 !> \param kbd ...
11857 !> \param kbc ...
11858 !> \param kad ...
11859 !> \param kac ...
11860 !> \param pbd ...
11861 !> \param pbc ...
11862 !> \param pad ...
11863 !> \param pac ...
11864 !> \param prim ...
11865 !> \param scale ...
11866 ! **************************************************************************************************
11867  SUBROUTINE block_2_1_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
11868  REAL(kind=dp) :: kbd(1*1), kbc(1*2), kad(2*1), kac(2*2), &
11869  pbd(1*1), pbc(1*2), pad(2*1), &
11870  pac(2*2), prim(2*1*2*1), scale
11871 
11872  INTEGER :: ma, mb, mc, md, p_index
11873  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
11874 
11875  kbd(1:1*1) = 0.0_dp
11876  kbc(1:1*2) = 0.0_dp
11877  kad(1:2*1) = 0.0_dp
11878  kac(1:2*2) = 0.0_dp
11879  p_index = 0
11880  DO md = 1, 1
11881  DO mc = 1, 2
11882  DO mb = 1, 1
11883  ks_bd = 0.0_dp
11884  ks_bc = 0.0_dp
11885  p_bd = pbd((md - 1)*1 + mb)
11886  p_bc = pbc((mc - 1)*1 + mb)
11887  DO ma = 1, 2
11888  p_index = p_index + 1
11889  tmp = scale*prim(p_index)
11890  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
11891  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
11892  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
11893  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
11894  END DO
11895  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
11896  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
11897  END DO
11898  END DO
11899  END DO
11900  END SUBROUTINE block_2_1_2_1
11901 ! **************************************************************************************************
11902 !> \brief ...
11903 !> \param kbd ...
11904 !> \param kbc ...
11905 !> \param kad ...
11906 !> \param kac ...
11907 !> \param pbd ...
11908 !> \param pbc ...
11909 !> \param pad ...
11910 !> \param pac ...
11911 !> \param prim ...
11912 !> \param scale ...
11913 ! **************************************************************************************************
11914  SUBROUTINE block_2_1_2_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
11915  REAL(kind=dp) :: kbd(1*2), kbc(1*2), kad(2*2), kac(2*2), &
11916  pbd(1*2), pbc(1*2), pad(2*2), &
11917  pac(2*2), prim(2*1*2*2), scale
11918 
11919  INTEGER :: ma, mb, mc, md, p_index
11920  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
11921 
11922  kbd(1:1*2) = 0.0_dp
11923  kbc(1:1*2) = 0.0_dp
11924  kad(1:2*2) = 0.0_dp
11925  kac(1:2*2) = 0.0_dp
11926  p_index = 0
11927  DO md = 1, 2
11928  DO mc = 1, 2
11929  DO mb = 1, 1
11930  ks_bd = 0.0_dp
11931  ks_bc = 0.0_dp
11932  p_bd = pbd((md - 1)*1 + mb)
11933  p_bc = pbc((mc - 1)*1 + mb)
11934  DO ma = 1, 2
11935  p_index = p_index + 1
11936  tmp = scale*prim(p_index)
11937  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
11938  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
11939  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
11940  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
11941  END DO
11942  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
11943  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
11944  END DO
11945  END DO
11946  END DO
11947  END SUBROUTINE block_2_1_2_2
11948 ! **************************************************************************************************
11949 !> \brief ...
11950 !> \param kbd ...
11951 !> \param kbc ...
11952 !> \param kad ...
11953 !> \param kac ...
11954 !> \param pbd ...
11955 !> \param pbc ...
11956 !> \param pad ...
11957 !> \param pac ...
11958 !> \param prim ...
11959 !> \param scale ...
11960 ! **************************************************************************************************
11961  SUBROUTINE block_2_1_2_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
11962  REAL(kind=dp) :: kbd(1*3), kbc(1*2), kad(2*3), kac(2*2), &
11963  pbd(1*3), pbc(1*2), pad(2*3), &
11964  pac(2*2), prim(2*1*2*3), scale
11965 
11966  INTEGER :: ma, mb, mc, md, p_index
11967  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
11968 
11969  kbd(1:1*3) = 0.0_dp
11970  kbc(1:1*2) = 0.0_dp
11971  kad(1:2*3) = 0.0_dp
11972  kac(1:2*2) = 0.0_dp
11973  p_index = 0
11974  DO md = 1, 3
11975  DO mc = 1, 2
11976  DO mb = 1, 1
11977  ks_bd = 0.0_dp
11978  ks_bc = 0.0_dp
11979  p_bd = pbd((md - 1)*1 + mb)
11980  p_bc = pbc((mc - 1)*1 + mb)
11981  DO ma = 1, 2
11982  p_index = p_index + 1
11983  tmp = scale*prim(p_index)
11984  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
11985  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
11986  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
11987  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
11988  END DO
11989  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
11990  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
11991  END DO
11992  END DO
11993  END DO
11994  END SUBROUTINE block_2_1_2_3
11995 ! **************************************************************************************************
11996 !> \brief ...
11997 !> \param kbd ...
11998 !> \param kbc ...
11999 !> \param kad ...
12000 !> \param kac ...
12001 !> \param pbd ...
12002 !> \param pbc ...
12003 !> \param pad ...
12004 !> \param pac ...
12005 !> \param prim ...
12006 !> \param scale ...
12007 ! **************************************************************************************************
12008  SUBROUTINE block_2_1_2_4(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
12009  REAL(kind=dp) :: kbd(1*4), kbc(1*2), kad(2*4), kac(2*2), &
12010  pbd(1*4), pbc(1*2), pad(2*4), &
12011  pac(2*2), prim(2*1*2*4), scale
12012 
12013  INTEGER :: ma, mb, mc, md, p_index
12014  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
12015 
12016  kbd(1:1*4) = 0.0_dp
12017  kbc(1:1*2) = 0.0_dp
12018  kad(1:2*4) = 0.0_dp
12019  kac(1:2*2) = 0.0_dp
12020  p_index = 0
12021  DO md = 1, 4
12022  DO mc = 1, 2
12023  DO mb = 1, 1
12024  ks_bd = 0.0_dp
12025  ks_bc = 0.0_dp
12026  p_bd = pbd((md - 1)*1 + mb)
12027  p_bc = pbc((mc - 1)*1 + mb)
12028  DO ma = 1, 2
12029  p_index = p_index + 1
12030  tmp = scale*prim(p_index)
12031  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
12032  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
12033  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
12034  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
12035  END DO
12036  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
12037  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
12038  END DO
12039  END DO
12040  END DO
12041  END SUBROUTINE block_2_1_2_4
12042 ! **************************************************************************************************
12043 !> \brief ...
12044 !> \param md_max ...
12045 !> \param kbd ...
12046 !> \param kbc ...
12047 !> \param kad ...
12048 !> \param kac ...
12049 !> \param pbd ...
12050 !> \param pbc ...
12051 !> \param pad ...
12052 !> \param pac ...
12053 !> \param prim ...
12054 !> \param scale ...
12055 ! **************************************************************************************************
12056  SUBROUTINE block_2_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
12057  INTEGER :: md_max
12058  REAL(kind=dp) :: kbd(1*md_max), kbc(1*2), kad(2*md_max), kac(2*2), pbd(1*md_max), pbc(1*2), &
12059  pad(2*md_max), pac(2*2), prim(2*1*2*md_max), scale
12060 
12061  INTEGER :: ma, mb, mc, md, p_index
12062  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
12063 
12064  kbd(1:1*md_max) = 0.0_dp
12065  kbc(1:1*2) = 0.0_dp
12066  kad(1:2*md_max) = 0.0_dp
12067  kac(1:2*2) = 0.0_dp
12068  p_index = 0
12069  DO md = 1, md_max
12070  DO mc = 1, 2
12071  DO mb = 1, 1
12072  ks_bd = 0.0_dp
12073  ks_bc = 0.0_dp
12074  p_bd = pbd((md - 1)*1 + mb)
12075  p_bc = pbc((mc - 1)*1 + mb)
12076  DO ma = 1, 2
12077  p_index = p_index + 1
12078  tmp = scale*prim(p_index)
12079  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
12080  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
12081  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
12082  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
12083  END DO
12084  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
12085  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
12086  END DO
12087  END DO
12088  END DO
12089  END SUBROUTINE block_2_1_2
12090 ! **************************************************************************************************
12091 !> \brief ...
12092 !> \param kbd ...
12093 !> \param kbc ...
12094 !> \param kad ...
12095 !> \param kac ...
12096 !> \param pbd ...
12097 !> \param pbc ...
12098 !> \param pad ...
12099 !> \param pac ...
12100 !> \param prim ...
12101 !> \param scale ...
12102 ! **************************************************************************************************
12103  SUBROUTINE block_2_1_3_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
12104  REAL(kind=dp) :: kbd(1*1), kbc(1*3), kad(2*1), kac(2*3), &
12105  pbd(1*1), pbc(1*3), pad(2*1), &
12106  pac(2*3), prim(2*1*3*1), scale
12107 
12108  INTEGER :: ma, mb, mc, md, p_index
12109  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
12110 
12111  kbd(1:1*1) = 0.0_dp
12112  kbc(1:1*3) = 0.0_dp
12113  kad(1:2*1) = 0.0_dp
12114  kac(1:2*3) = 0.0_dp
12115  p_index = 0
12116  DO md = 1, 1
12117  DO mc = 1, 3
12118  DO mb = 1, 1
12119  ks_bd = 0.0_dp
12120  ks_bc = 0.0_dp
12121  p_bd = pbd((md - 1)*1 + mb)
12122  p_bc = pbc((mc - 1)*1 + mb)
12123  DO ma = 1, 2
12124  p_index = p_index + 1
12125  tmp = scale*prim(p_index)
12126  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
12127  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
12128  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
12129  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
12130  END DO
12131  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
12132  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
12133  END DO
12134  END DO
12135  END DO
12136  END SUBROUTINE block_2_1_3_1
12137 ! **************************************************************************************************
12138 !> \brief ...
12139 !> \param kbd ...
12140 !> \param kbc ...
12141 !> \param kad ...
12142 !> \param kac ...
12143 !> \param pbd ...
12144 !> \param pbc ...
12145 !> \param pad ...
12146 !> \param pac ...
12147 !> \param prim ...
12148 !> \param scale ...
12149 ! **************************************************************************************************
12150  SUBROUTINE block_2_1_3_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
12151  REAL(kind=dp) :: kbd(1*2), kbc(1*3), kad(2*2), kac(2*3), &
12152  pbd(1*2), pbc(1*3), pad(2*2), &
12153  pac(2*3), prim(2*1*3*2), scale
12154 
12155  INTEGER :: ma, mb, mc, md, p_index
12156  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
12157 
12158  kbd(1:1*2) = 0.0_dp
12159  kbc(1:1*3) = 0.0_dp
12160  kad(1:2*2) = 0.0_dp
12161  kac(1:2*3) = 0.0_dp
12162  p_index = 0
12163  DO md = 1, 2
12164  DO mc = 1, 3
12165  DO mb = 1, 1
12166  ks_bd = 0.0_dp
12167  ks_bc = 0.0_dp
12168  p_bd = pbd((md - 1)*1 + mb)
12169  p_bc = pbc((mc - 1)*1 + mb)
12170  DO ma = 1, 2
12171  p_index = p_index + 1
12172  tmp = scale*prim(p_index)
12173  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
12174  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
12175  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
12176  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
12177  END DO
12178  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
12179  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
12180  END DO
12181  END DO
12182  END DO
12183  END SUBROUTINE block_2_1_3_2
12184 ! **************************************************************************************************
12185 !> \brief ...
12186 !> \param kbd ...
12187 !> \param kbc ...
12188 !> \param kad ...
12189 !> \param kac ...
12190 !> \param pbd ...
12191 !> \param pbc ...
12192 !> \param pad ...
12193 !> \param pac ...
12194 !> \param prim ...
12195 !> \param scale ...
12196 ! **************************************************************************************************
12197  SUBROUTINE block_2_1_3_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
12198  REAL(kind=dp) :: kbd(1*3), kbc(1*3), kad(2*3), kac(2*3), &
12199  pbd(1*3), pbc(1*3), pad(2*3), &
12200  pac(2*3), prim(2*1*3*3), scale
12201 
12202  INTEGER :: ma, mb, mc, md, p_index
12203  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
12204 
12205  kbd(1:1*3) = 0.0_dp
12206  kbc(1:1*3) = 0.0_dp
12207  kad(1:2*3) = 0.0_dp
12208  kac(1:2*3) = 0.0_dp
12209  p_index = 0
12210  DO md = 1, 3
12211  DO mc = 1, 3
12212  DO mb = 1, 1
12213  ks_bd = 0.0_dp
12214  ks_bc = 0.0_dp
12215  p_bd = pbd((md - 1)*1 + mb)
12216  p_bc = pbc((mc - 1)*1 + mb)
12217  DO ma = 1, 2
12218  p_index = p_index + 1
12219  tmp = scale*prim(p_index)
12220  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
12221  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
12222  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
12223  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
12224  END DO
12225  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
12226  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
12227  END DO
12228  END DO
12229  END DO
12230  END SUBROUTINE block_2_1_3_3
12231 ! **************************************************************************************************
12232 !> \brief ...
12233 !> \param md_max ...
12234 !> \param kbd ...
12235 !> \param kbc ...
12236 !> \param kad ...
12237 !> \param kac ...
12238 !> \param pbd ...
12239 !> \param pbc ...
12240 !> \param pad ...
12241 !> \param pac ...
12242 !> \param prim ...
12243 !> \param scale ...
12244 ! **************************************************************************************************
12245  SUBROUTINE block_2_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
12246  INTEGER :: md_max
12247  REAL(kind=dp) :: kbd(1*md_max), kbc(1*3), kad(2*md_max), kac(2*3), pbd(1*md_max), pbc(1*3), &
12248  pad(2*md_max), pac(2*3), prim(2*1*3*md_max), scale
12249 
12250  INTEGER :: ma, mb, mc, md, p_index
12251  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
12252 
12253  kbd(1:1*md_max) = 0.0_dp
12254  kbc(1:1*3) = 0.0_dp
12255  kad(1:2*md_max) = 0.0_dp
12256  kac(1:2*3) = 0.0_dp
12257  p_index = 0
12258  DO md = 1, md_max
12259  DO mc = 1, 3
12260  DO mb = 1, 1
12261  ks_bd = 0.0_dp
12262  ks_bc = 0.0_dp
12263  p_bd = pbd((md - 1)*1 + mb)
12264  p_bc = pbc((mc - 1)*1 + mb)
12265  DO ma = 1, 2
12266  p_index = p_index + 1
12267  tmp = scale*prim(p_index)
12268  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
12269  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
12270  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
12271  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
12272  END DO
12273  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
12274  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
12275  END DO
12276  END DO
12277  END DO
12278  END SUBROUTINE block_2_1_3
12279 ! **************************************************************************************************
12280 !> \brief ...
12281 !> \param kbd ...
12282 !> \param kbc ...
12283 !> \param kad ...
12284 !> \param kac ...
12285 !> \param pbd ...
12286 !> \param pbc ...
12287 !> \param pad ...
12288 !> \param pac ...
12289 !> \param prim ...
12290 !> \param scale ...
12291 ! **************************************************************************************************
12292  SUBROUTINE block_2_1_4_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
12293  REAL(kind=dp) :: kbd(1*1), kbc(1*4), kad(2*1), kac(2*4), &
12294  pbd(1*1), pbc(1*4), pad(2*1), &
12295  pac(2*4), prim(2*1*4*1), scale
12296 
12297  INTEGER :: ma, mb, mc, md, p_index
12298  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
12299 
12300  kbd(1:1*1) = 0.0_dp
12301  kbc(1:1*4) = 0.0_dp
12302  kad(1:2*1) = 0.0_dp
12303  kac(1:2*4) = 0.0_dp
12304  p_index = 0
12305  DO md = 1, 1
12306  DO mc = 1, 4
12307  DO mb = 1, 1
12308  ks_bd = 0.0_dp
12309  ks_bc = 0.0_dp
12310  p_bd = pbd((md - 1)*1 + mb)
12311  p_bc = pbc((mc - 1)*1 + mb)
12312  DO ma = 1, 2
12313  p_index = p_index + 1
12314  tmp = scale*prim(p_index)
12315  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
12316  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
12317  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
12318  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
12319  END DO
12320  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
12321  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
12322  END DO
12323  END DO
12324  END DO
12325  END SUBROUTINE block_2_1_4_1
12326 ! **************************************************************************************************
12327 !> \brief ...
12328 !> \param kbd ...
12329 !> \param kbc ...
12330 !> \param kad ...
12331 !> \param kac ...
12332 !> \param pbd ...
12333 !> \param pbc ...
12334 !> \param pad ...
12335 !> \param pac ...
12336 !> \param prim ...
12337 !> \param scale ...
12338 ! **************************************************************************************************
12339  SUBROUTINE block_2_1_4_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
12340  REAL(kind=dp) :: kbd(1*2), kbc(1*4), kad(2*2), kac(2*4), &
12341  pbd(1*2), pbc(1*4), pad(2*2), &
12342  pac(2*4), prim(2*1*4*2), scale
12343 
12344  INTEGER :: ma, mb, mc, md, p_index
12345  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
12346 
12347  kbd(1:1*2) = 0.0_dp
12348  kbc(1:1*4) = 0.0_dp
12349  kad(1:2*2) = 0.0_dp
12350  kac(1:2*4) = 0.0_dp
12351  p_index = 0
12352  DO md = 1, 2
12353  DO mc = 1, 4
12354  DO mb = 1, 1
12355  ks_bd = 0.0_dp
12356  ks_bc = 0.0_dp
12357  p_bd = pbd((md - 1)*1 + mb)
12358  p_bc = pbc((mc - 1)*1 + mb)
12359  DO ma = 1, 2
12360  p_index = p_index + 1
12361  tmp = scale*prim(p_index)
12362  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
12363  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
12364  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
12365  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
12366  END DO
12367  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
12368  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
12369  END DO
12370  END DO
12371  END DO
12372  END SUBROUTINE block_2_1_4_2
12373 ! **************************************************************************************************
12374 !> \brief ...
12375 !> \param md_max ...
12376 !> \param kbd ...
12377 !> \param kbc ...
12378 !> \param kad ...
12379 !> \param kac ...
12380 !> \param pbd ...
12381 !> \param pbc ...
12382 !> \param pad ...
12383 !> \param pac ...
12384 !> \param prim ...
12385 !> \param scale ...
12386 ! **************************************************************************************************
12387  SUBROUTINE block_2_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
12388  INTEGER :: md_max
12389  REAL(kind=dp) :: kbd(1*md_max), kbc(1*4), kad(2*md_max), kac(2*4), pbd(1*md_max), pbc(1*4), &
12390  pad(2*md_max), pac(2*4), prim(2*1*4*md_max), scale
12391 
12392  INTEGER :: ma, mb, mc, md, p_index
12393  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
12394 
12395  kbd(1:1*md_max) = 0.0_dp
12396  kbc(1:1*4) = 0.0_dp
12397  kad(1:2*md_max) = 0.0_dp
12398  kac(1:2*4) = 0.0_dp
12399  p_index = 0
12400  DO md = 1, md_max
12401  DO mc = 1, 4
12402  DO mb = 1, 1
12403  ks_bd = 0.0_dp
12404  ks_bc = 0.0_dp
12405  p_bd = pbd((md - 1)*1 + mb)
12406  p_bc = pbc((mc - 1)*1 + mb)
12407  DO ma = 1, 2
12408  p_index = p_index + 1
12409  tmp = scale*prim(p_index)
12410  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
12411  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
12412  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
12413  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
12414  END DO
12415  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
12416  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
12417  END DO
12418  END DO
12419  END DO
12420  END SUBROUTINE block_2_1_4
12421 ! **************************************************************************************************
12422 !> \brief ...
12423 !> \param kbd ...
12424 !> \param kbc ...
12425 !> \param kad ...
12426 !> \param kac ...
12427 !> \param pbd ...
12428 !> \param pbc ...
12429 !> \param pad ...
12430 !> \param pac ...
12431 !> \param prim ...
12432 !> \param scale ...
12433 ! **************************************************************************************************
12434  SUBROUTINE block_2_1_5_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
12435  REAL(kind=dp) :: kbd(1*1), kbc(1*5), kad(2*1), kac(2*5), &
12436  pbd(1*1), pbc(1*5), pad(2*1), &
12437  pac(2*5), prim(2*1*5*1), scale
12438 
12439  INTEGER :: ma, mb, mc, md, p_index
12440  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
12441 
12442  kbd(1:1*1) = 0.0_dp
12443  kbc(1:1*5) = 0.0_dp
12444  kad(1:2*1) = 0.0_dp
12445  kac(1:2*5) = 0.0_dp
12446  p_index = 0
12447  DO md = 1, 1
12448  DO mc = 1, 5
12449  DO mb = 1, 1
12450  ks_bd = 0.0_dp
12451  ks_bc = 0.0_dp
12452  p_bd = pbd((md - 1)*1 + mb)
12453  p_bc = pbc((mc - 1)*1 + mb)
12454  DO ma = 1, 2
12455  p_index = p_index + 1
12456  tmp = scale*prim(p_index)
12457  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
12458  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
12459  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
12460  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
12461  END DO
12462  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
12463  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
12464  END DO
12465  END DO
12466  END DO
12467  END SUBROUTINE block_2_1_5_1
12468 ! **************************************************************************************************
12469 !> \brief ...
12470 !> \param md_max ...
12471 !> \param kbd ...
12472 !> \param kbc ...
12473 !> \param kad ...
12474 !> \param kac ...
12475 !> \param pbd ...
12476 !> \param pbc ...
12477 !> \param pad ...
12478 !> \param pac ...
12479 !> \param prim ...
12480 !> \param scale ...
12481 ! **************************************************************************************************
12482  SUBROUTINE block_2_1_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
12483  INTEGER :: md_max
12484  REAL(kind=dp) :: kbd(1*md_max), kbc(1*5), kad(2*md_max), kac(2*5), pbd(1*md_max), pbc(1*5), &
12485  pad(2*md_max), pac(2*5), prim(2*1*5*md_max), scale
12486 
12487  INTEGER :: ma, mb, mc, md, p_index
12488  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
12489 
12490  kbd(1:1*md_max) = 0.0_dp
12491  kbc(1:1*5) = 0.0_dp
12492  kad(1:2*md_max) = 0.0_dp
12493  kac(1:2*5) = 0.0_dp
12494  p_index = 0
12495  DO md = 1, md_max
12496  DO mc = 1, 5
12497  DO mb = 1, 1
12498  ks_bd = 0.0_dp
12499  ks_bc = 0.0_dp
12500  p_bd = pbd((md - 1)*1 + mb)
12501  p_bc = pbc((mc - 1)*1 + mb)
12502  DO ma = 1, 2
12503  p_index = p_index + 1
12504  tmp = scale*prim(p_index)
12505  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
12506  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
12507  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
12508  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
12509  END DO
12510  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
12511  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
12512  END DO
12513  END DO
12514  END DO
12515  END SUBROUTINE block_2_1_5
12516 ! **************************************************************************************************
12517 !> \brief ...
12518 !> \param kbd ...
12519 !> \param kbc ...
12520 !> \param kad ...
12521 !> \param kac ...
12522 !> \param pbd ...
12523 !> \param pbc ...
12524 !> \param pad ...
12525 !> \param pac ...
12526 !> \param prim ...
12527 !> \param scale ...
12528 ! **************************************************************************************************
12529  SUBROUTINE block_2_1_6_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
12530  REAL(kind=dp) :: kbd(1*1), kbc(1*6), kad(2*1), kac(2*6), &
12531  pbd(1*1), pbc(1*6), pad(2*1), &
12532  pac(2*6), prim(2*1*6*1), scale
12533 
12534  INTEGER :: ma, mb, mc, md, p_index
12535  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
12536 
12537  kbd(1:1*1) = 0.0_dp
12538  kbc(1:1*6) = 0.0_dp
12539  kad(1:2*1) = 0.0_dp
12540  kac(1:2*6) = 0.0_dp
12541  p_index = 0
12542  DO md = 1, 1
12543  DO mc = 1, 6
12544  DO mb = 1, 1
12545  ks_bd = 0.0_dp
12546  ks_bc = 0.0_dp
12547  p_bd = pbd((md - 1)*1 + mb)
12548  p_bc = pbc((mc - 1)*1 + mb)
12549  DO ma = 1, 2
12550  p_index = p_index + 1
12551  tmp = scale*prim(p_index)
12552  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
12553  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
12554  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
12555  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
12556  END DO
12557  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
12558  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
12559  END DO
12560  END DO
12561  END DO
12562  END SUBROUTINE block_2_1_6_1
12563 ! **************************************************************************************************
12564 !> \brief ...
12565 !> \param md_max ...
12566 !> \param kbd ...
12567 !> \param kbc ...
12568 !> \param kad ...
12569 !> \param kac ...
12570 !> \param pbd ...
12571 !> \param pbc ...
12572 !> \param pad ...
12573 !> \param pac ...
12574 !> \param prim ...
12575 !> \param scale ...
12576 ! **************************************************************************************************
12577  SUBROUTINE block_2_1_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
12578  INTEGER :: md_max
12579  REAL(kind=dp) :: kbd(1*md_max), kbc(1*6), kad(2*md_max), kac(2*6), pbd(1*md_max), pbc(1*6), &
12580  pad(2*md_max), pac(2*6), prim(2*1*6*md_max), scale
12581 
12582  INTEGER :: ma, mb, mc, md, p_index
12583  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
12584 
12585  kbd(1:1*md_max) = 0.0_dp
12586  kbc(1:1*6) = 0.0_dp
12587  kad(1:2*md_max) = 0.0_dp
12588  kac(1:2*6) = 0.0_dp
12589  p_index = 0
12590  DO md = 1, md_max
12591  DO mc = 1, 6
12592  DO mb = 1, 1
12593  ks_bd = 0.0_dp
12594  ks_bc = 0.0_dp
12595  p_bd = pbd((md - 1)*1 + mb)
12596  p_bc = pbc((mc - 1)*1 + mb)
12597  DO ma = 1, 2
12598  p_index = p_index + 1
12599  tmp = scale*prim(p_index)
12600  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
12601  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
12602  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
12603  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
12604  END DO
12605  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
12606  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
12607  END DO
12608  END DO
12609  END DO
12610  END SUBROUTINE block_2_1_6
12611 ! **************************************************************************************************
12612 !> \brief ...
12613 !> \param kbd ...
12614 !> \param kbc ...
12615 !> \param kad ...
12616 !> \param kac ...
12617 !> \param pbd ...
12618 !> \param pbc ...
12619 !> \param pad ...
12620 !> \param pac ...
12621 !> \param prim ...
12622 !> \param scale ...
12623 ! **************************************************************************************************
12624  SUBROUTINE block_2_1_7_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
12625  REAL(kind=dp) :: kbd(1*1), kbc(1*7), kad(2*1), kac(2*7), &
12626  pbd(1*1), pbc(1*7), pad(2*1), &
12627  pac(2*7), prim(2*1*7*1), scale
12628 
12629  INTEGER :: ma, mb, mc, md, p_index
12630  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
12631 
12632  kbd(1:1*1) = 0.0_dp
12633  kbc(1:1*7) = 0.0_dp
12634  kad(1:2*1) = 0.0_dp
12635  kac(1:2*7) = 0.0_dp
12636  p_index = 0
12637  DO md = 1, 1
12638  DO mc = 1, 7
12639  DO mb = 1, 1
12640  ks_bd = 0.0_dp
12641  ks_bc = 0.0_dp
12642  p_bd = pbd((md - 1)*1 + mb)
12643  p_bc = pbc((mc - 1)*1 + mb)
12644  DO ma = 1, 2
12645  p_index = p_index + 1
12646  tmp = scale*prim(p_index)
12647  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
12648  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
12649  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
12650  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
12651  END DO
12652  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
12653  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
12654  END DO
12655  END DO
12656  END DO
12657  END SUBROUTINE block_2_1_7_1
12658 ! **************************************************************************************************
12659 !> \brief ...
12660 !> \param md_max ...
12661 !> \param kbd ...
12662 !> \param kbc ...
12663 !> \param kad ...
12664 !> \param kac ...
12665 !> \param pbd ...
12666 !> \param pbc ...
12667 !> \param pad ...
12668 !> \param pac ...
12669 !> \param prim ...
12670 !> \param scale ...
12671 ! **************************************************************************************************
12672  SUBROUTINE block_2_1_7(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
12673  INTEGER :: md_max
12674  REAL(kind=dp) :: kbd(1*md_max), kbc(1*7), kad(2*md_max), kac(2*7), pbd(1*md_max), pbc(1*7), &
12675  pad(2*md_max), pac(2*7), prim(2*1*7*md_max), scale
12676 
12677  INTEGER :: ma, mb, mc, md, p_index
12678  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
12679 
12680  kbd(1:1*md_max) = 0.0_dp
12681  kbc(1:1*7) = 0.0_dp
12682  kad(1:2*md_max) = 0.0_dp
12683  kac(1:2*7) = 0.0_dp
12684  p_index = 0
12685  DO md = 1, md_max
12686  DO mc = 1, 7
12687  DO mb = 1, 1
12688  ks_bd = 0.0_dp
12689  ks_bc = 0.0_dp
12690  p_bd = pbd((md - 1)*1 + mb)
12691  p_bc = pbc((mc - 1)*1 + mb)
12692  DO ma = 1, 2
12693  p_index = p_index + 1
12694  tmp = scale*prim(p_index)
12695  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
12696  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
12697  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
12698  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
12699  END DO
12700  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
12701  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
12702  END DO
12703  END DO
12704  END DO
12705  END SUBROUTINE block_2_1_7
12706 ! **************************************************************************************************
12707 !> \brief ...
12708 !> \param kbd ...
12709 !> \param kbc ...
12710 !> \param kad ...
12711 !> \param kac ...
12712 !> \param pbd ...
12713 !> \param pbc ...
12714 !> \param pad ...
12715 !> \param pac ...
12716 !> \param prim ...
12717 !> \param scale ...
12718 ! **************************************************************************************************
12719  SUBROUTINE block_2_1_9_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
12720  REAL(kind=dp) :: kbd(1*1), kbc(1*9), kad(2*1), kac(2*9), &
12721  pbd(1*1), pbc(1*9), pad(2*1), &
12722  pac(2*9), prim(2*1*9*1), scale
12723 
12724  INTEGER :: ma, mb, mc, md, p_index
12725  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
12726 
12727  kbd(1:1*1) = 0.0_dp
12728  kbc(1:1*9) = 0.0_dp
12729  kad(1:2*1) = 0.0_dp
12730  kac(1:2*9) = 0.0_dp
12731  p_index = 0
12732  DO md = 1, 1
12733  DO mc = 1, 9
12734  DO mb = 1, 1
12735  ks_bd = 0.0_dp
12736  ks_bc = 0.0_dp
12737  p_bd = pbd((md - 1)*1 + mb)
12738  p_bc = pbc((mc - 1)*1 + mb)
12739  DO ma = 1, 2
12740  p_index = p_index + 1
12741  tmp = scale*prim(p_index)
12742  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
12743  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
12744  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
12745  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
12746  END DO
12747  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
12748  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
12749  END DO
12750  END DO
12751  END DO
12752  END SUBROUTINE block_2_1_9_1
12753 ! **************************************************************************************************
12754 !> \brief ...
12755 !> \param md_max ...
12756 !> \param kbd ...
12757 !> \param kbc ...
12758 !> \param kad ...
12759 !> \param kac ...
12760 !> \param pbd ...
12761 !> \param pbc ...
12762 !> \param pad ...
12763 !> \param pac ...
12764 !> \param prim ...
12765 !> \param scale ...
12766 ! **************************************************************************************************
12767  SUBROUTINE block_2_1_9(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
12768  INTEGER :: md_max
12769  REAL(kind=dp) :: kbd(1*md_max), kbc(1*9), kad(2*md_max), kac(2*9), pbd(1*md_max), pbc(1*9), &
12770  pad(2*md_max), pac(2*9), prim(2*1*9*md_max), scale
12771 
12772  INTEGER :: ma, mb, mc, md, p_index
12773  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
12774 
12775  kbd(1:1*md_max) = 0.0_dp
12776  kbc(1:1*9) = 0.0_dp
12777  kad(1:2*md_max) = 0.0_dp
12778  kac(1:2*9) = 0.0_dp
12779  p_index = 0
12780  DO md = 1, md_max
12781  DO mc = 1, 9
12782  DO mb = 1, 1
12783  ks_bd = 0.0_dp
12784  ks_bc = 0.0_dp
12785  p_bd = pbd((md - 1)*1 + mb)
12786  p_bc = pbc((mc - 1)*1 + mb)
12787  DO ma = 1, 2
12788  p_index = p_index + 1
12789  tmp = scale*prim(p_index)
12790  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
12791  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
12792  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
12793  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
12794  END DO
12795  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
12796  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
12797  END DO
12798  END DO
12799  END DO
12800  END SUBROUTINE block_2_1_9
12801 ! **************************************************************************************************
12802 !> \brief ...
12803 !> \param mc_max ...
12804 !> \param md_max ...
12805 !> \param kbd ...
12806 !> \param kbc ...
12807 !> \param kad ...
12808 !> \param kac ...
12809 !> \param pbd ...
12810 !> \param pbc ...
12811 !> \param pad ...
12812 !> \param pac ...
12813 !> \param prim ...
12814 !> \param scale ...
12815 ! **************************************************************************************************
12816  SUBROUTINE block_2_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
12817  INTEGER :: mc_max, md_max
12818  REAL(kind=dp) :: kbd(1*md_max), kbc(1*mc_max), kad(2*md_max), kac(2*mc_max), pbd(1*md_max), &
12819  pbc(1*mc_max), pad(2*md_max), pac(2*mc_max), prim(2*1*mc_max*md_max), scale
12820 
12821  INTEGER :: ma, mb, mc, md, p_index
12822  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
12823 
12824  kbd(1:1*md_max) = 0.0_dp
12825  kbc(1:1*mc_max) = 0.0_dp
12826  kad(1:2*md_max) = 0.0_dp
12827  kac(1:2*mc_max) = 0.0_dp
12828  p_index = 0
12829  DO md = 1, md_max
12830  DO mc = 1, mc_max
12831  DO mb = 1, 1
12832  ks_bd = 0.0_dp
12833  ks_bc = 0.0_dp
12834  p_bd = pbd((md - 1)*1 + mb)
12835  p_bc = pbc((mc - 1)*1 + mb)
12836  DO ma = 1, 2
12837  p_index = p_index + 1
12838  tmp = scale*prim(p_index)
12839  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
12840  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
12841  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
12842  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
12843  END DO
12844  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
12845  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
12846  END DO
12847  END DO
12848  END DO
12849  END SUBROUTINE block_2_1
12850 ! **************************************************************************************************
12851 !> \brief ...
12852 !> \param kbd ...
12853 !> \param kbc ...
12854 !> \param kad ...
12855 !> \param kac ...
12856 !> \param pbd ...
12857 !> \param pbc ...
12858 !> \param pad ...
12859 !> \param pac ...
12860 !> \param prim ...
12861 !> \param scale ...
12862 ! **************************************************************************************************
12863  SUBROUTINE block_2_2_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
12864  REAL(kind=dp) :: kbd(2*1), kbc(2*1), kad(2*1), kac(2*1), &
12865  pbd(2*1), pbc(2*1), pad(2*1), &
12866  pac(2*1), prim(2*2*1*1), scale
12867 
12868  INTEGER :: ma, mb, mc, md, p_index
12869  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
12870 
12871  kbd(1:2*1) = 0.0_dp
12872  kbc(1:2*1) = 0.0_dp
12873  kad(1:2*1) = 0.0_dp
12874  kac(1:2*1) = 0.0_dp
12875  p_index = 0
12876  DO md = 1, 1
12877  DO mc = 1, 1
12878  DO mb = 1, 2
12879  ks_bd = 0.0_dp
12880  ks_bc = 0.0_dp
12881  p_bd = pbd((md - 1)*2 + mb)
12882  p_bc = pbc((mc - 1)*2 + mb)
12883  DO ma = 1, 2
12884  p_index = p_index + 1
12885  tmp = scale*prim(p_index)
12886  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
12887  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
12888  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
12889  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
12890  END DO
12891  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
12892  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
12893  END DO
12894  END DO
12895  END DO
12896  END SUBROUTINE block_2_2_1_1
12897 ! **************************************************************************************************
12898 !> \brief ...
12899 !> \param kbd ...
12900 !> \param kbc ...
12901 !> \param kad ...
12902 !> \param kac ...
12903 !> \param pbd ...
12904 !> \param pbc ...
12905 !> \param pad ...
12906 !> \param pac ...
12907 !> \param prim ...
12908 !> \param scale ...
12909 ! **************************************************************************************************
12910  SUBROUTINE block_2_2_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
12911  REAL(kind=dp) :: kbd(2*2), kbc(2*1), kad(2*2), kac(2*1), &
12912  pbd(2*2), pbc(2*1), pad(2*2), &
12913  pac(2*1), prim(2*2*1*2), scale
12914 
12915  INTEGER :: ma, mb, mc, md, p_index
12916  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
12917 
12918  kbd(1:2*2) = 0.0_dp
12919  kbc(1:2*1) = 0.0_dp
12920  kad(1:2*2) = 0.0_dp
12921  kac(1:2*1) = 0.0_dp
12922  p_index = 0
12923  DO md = 1, 2
12924  DO mc = 1, 1
12925  DO mb = 1, 2
12926  ks_bd = 0.0_dp
12927  ks_bc = 0.0_dp
12928  p_bd = pbd((md - 1)*2 + mb)
12929  p_bc = pbc((mc - 1)*2 + mb)
12930  DO ma = 1, 2
12931  p_index = p_index + 1
12932  tmp = scale*prim(p_index)
12933  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
12934  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
12935  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
12936  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
12937  END DO
12938  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
12939  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
12940  END DO
12941  END DO
12942  END DO
12943  END SUBROUTINE block_2_2_1_2
12944 ! **************************************************************************************************
12945 !> \brief ...
12946 !> \param kbd ...
12947 !> \param kbc ...
12948 !> \param kad ...
12949 !> \param kac ...
12950 !> \param pbd ...
12951 !> \param pbc ...
12952 !> \param pad ...
12953 !> \param pac ...
12954 !> \param prim ...
12955 !> \param scale ...
12956 ! **************************************************************************************************
12957  SUBROUTINE block_2_2_1_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
12958  REAL(kind=dp) :: kbd(2*3), kbc(2*1), kad(2*3), kac(2*1), &
12959  pbd(2*3), pbc(2*1), pad(2*3), &
12960  pac(2*1), prim(2*2*1*3), scale
12961 
12962  INTEGER :: ma, mb, mc, md, p_index
12963  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
12964 
12965  kbd(1:2*3) = 0.0_dp
12966  kbc(1:2*1) = 0.0_dp
12967  kad(1:2*3) = 0.0_dp
12968  kac(1:2*1) = 0.0_dp
12969  p_index = 0
12970  DO md = 1, 3
12971  DO mc = 1, 1
12972  DO mb = 1, 2
12973  ks_bd = 0.0_dp
12974  ks_bc = 0.0_dp
12975  p_bd = pbd((md - 1)*2 + mb)
12976  p_bc = pbc((mc - 1)*2 + mb)
12977  DO ma = 1, 2
12978  p_index = p_index + 1
12979  tmp = scale*prim(p_index)
12980  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
12981  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
12982  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
12983  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
12984  END DO
12985  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
12986  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
12987  END DO
12988  END DO
12989  END DO
12990  END SUBROUTINE block_2_2_1_3
12991 ! **************************************************************************************************
12992 !> \brief ...
12993 !> \param kbd ...
12994 !> \param kbc ...
12995 !> \param kad ...
12996 !> \param kac ...
12997 !> \param pbd ...
12998 !> \param pbc ...
12999 !> \param pad ...
13000 !> \param pac ...
13001 !> \param prim ...
13002 !> \param scale ...
13003 ! **************************************************************************************************
13004  SUBROUTINE block_2_2_1_4(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
13005  REAL(kind=dp) :: kbd(2*4), kbc(2*1), kad(2*4), kac(2*1), &
13006  pbd(2*4), pbc(2*1), pad(2*4), &
13007  pac(2*1), prim(2*2*1*4), scale
13008 
13009  INTEGER :: ma, mb, mc, md, p_index
13010  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
13011 
13012  kbd(1:2*4) = 0.0_dp
13013  kbc(1:2*1) = 0.0_dp
13014  kad(1:2*4) = 0.0_dp
13015  kac(1:2*1) = 0.0_dp
13016  p_index = 0
13017  DO md = 1, 4
13018  DO mc = 1, 1
13019  DO mb = 1, 2
13020  ks_bd = 0.0_dp
13021  ks_bc = 0.0_dp
13022  p_bd = pbd((md - 1)*2 + mb)
13023  p_bc = pbc((mc - 1)*2 + mb)
13024  DO ma = 1, 2
13025  p_index = p_index + 1
13026  tmp = scale*prim(p_index)
13027  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
13028  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
13029  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
13030  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
13031  END DO
13032  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
13033  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
13034  END DO
13035  END DO
13036  END DO
13037  END SUBROUTINE block_2_2_1_4
13038 ! **************************************************************************************************
13039 !> \brief ...
13040 !> \param md_max ...
13041 !> \param kbd ...
13042 !> \param kbc ...
13043 !> \param kad ...
13044 !> \param kac ...
13045 !> \param pbd ...
13046 !> \param pbc ...
13047 !> \param pad ...
13048 !> \param pac ...
13049 !> \param prim ...
13050 !> \param scale ...
13051 ! **************************************************************************************************
13052  SUBROUTINE block_2_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
13053  INTEGER :: md_max
13054  REAL(kind=dp) :: kbd(2*md_max), kbc(2*1), kad(2*md_max), kac(2*1), pbd(2*md_max), pbc(2*1), &
13055  pad(2*md_max), pac(2*1), prim(2*2*1*md_max), scale
13056 
13057  INTEGER :: ma, mb, mc, md, p_index
13058  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
13059 
13060  kbd(1:2*md_max) = 0.0_dp
13061  kbc(1:2*1) = 0.0_dp
13062  kad(1:2*md_max) = 0.0_dp
13063  kac(1:2*1) = 0.0_dp
13064  p_index = 0
13065  DO md = 1, md_max
13066  DO mc = 1, 1
13067  DO mb = 1, 2
13068  ks_bd = 0.0_dp
13069  ks_bc = 0.0_dp
13070  p_bd = pbd((md - 1)*2 + mb)
13071  p_bc = pbc((mc - 1)*2 + mb)
13072  DO ma = 1, 2
13073  p_index = p_index + 1
13074  tmp = scale*prim(p_index)
13075  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
13076  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
13077  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
13078  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
13079  END DO
13080  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
13081  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
13082  END DO
13083  END DO
13084  END DO
13085  END SUBROUTINE block_2_2_1
13086 ! **************************************************************************************************
13087 !> \brief ...
13088 !> \param kbd ...
13089 !> \param kbc ...
13090 !> \param kad ...
13091 !> \param kac ...
13092 !> \param pbd ...
13093 !> \param pbc ...
13094 !> \param pad ...
13095 !> \param pac ...
13096 !> \param prim ...
13097 !> \param scale ...
13098 ! **************************************************************************************************
13099  SUBROUTINE block_2_2_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
13100  REAL(kind=dp) :: kbd(2*1), kbc(2*2), kad(2*1), kac(2*2), &
13101  pbd(2*1), pbc(2*2), pad(2*1), &
13102  pac(2*2), prim(2*2*2*1), scale
13103 
13104  INTEGER :: ma, mb, mc, md, p_index
13105  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
13106 
13107  kbd(1:2*1) = 0.0_dp
13108  kbc(1:2*2) = 0.0_dp
13109  kad(1:2*1) = 0.0_dp
13110  kac(1:2*2) = 0.0_dp
13111  p_index = 0
13112  DO md = 1, 1
13113  DO mc = 1, 2
13114  DO mb = 1, 2
13115  ks_bd = 0.0_dp
13116  ks_bc = 0.0_dp
13117  p_bd = pbd((md - 1)*2 + mb)
13118  p_bc = pbc((mc - 1)*2 + mb)
13119  DO ma = 1, 2
13120  p_index = p_index + 1
13121  tmp = scale*prim(p_index)
13122  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
13123  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
13124  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
13125  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
13126  END DO
13127  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
13128  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
13129  END DO
13130  END DO
13131  END DO
13132  END SUBROUTINE block_2_2_2_1
13133 ! **************************************************************************************************
13134 !> \brief ...
13135 !> \param kbd ...
13136 !> \param kbc ...
13137 !> \param kad ...
13138 !> \param kac ...
13139 !> \param pbd ...
13140 !> \param pbc ...
13141 !> \param pad ...
13142 !> \param pac ...
13143 !> \param prim ...
13144 !> \param scale ...
13145 ! **************************************************************************************************
13146  SUBROUTINE block_2_2_2_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
13147  REAL(kind=dp) :: kbd(2*2), kbc(2*2), kad(2*2), kac(2*2), &
13148  pbd(2*2), pbc(2*2), pad(2*2), &
13149  pac(2*2), prim(2*2*2*2), scale
13150 
13151  INTEGER :: ma, mb, mc, md, p_index
13152  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
13153 
13154  kbd(1:2*2) = 0.0_dp
13155  kbc(1:2*2) = 0.0_dp
13156  kad(1:2*2) = 0.0_dp
13157  kac(1:2*2) = 0.0_dp
13158  p_index = 0
13159  DO md = 1, 2
13160  DO mc = 1, 2
13161  DO mb = 1, 2
13162  ks_bd = 0.0_dp
13163  ks_bc = 0.0_dp
13164  p_bd = pbd((md - 1)*2 + mb)
13165  p_bc = pbc((mc - 1)*2 + mb)
13166  DO ma = 1, 2
13167  p_index = p_index + 1
13168  tmp = scale*prim(p_index)
13169  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
13170  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
13171  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
13172  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
13173  END DO
13174  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
13175  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
13176  END DO
13177  END DO
13178  END DO
13179  END SUBROUTINE block_2_2_2_2
13180 ! **************************************************************************************************
13181 !> \brief ...
13182 !> \param md_max ...
13183 !> \param kbd ...
13184 !> \param kbc ...
13185 !> \param kad ...
13186 !> \param kac ...
13187 !> \param pbd ...
13188 !> \param pbc ...
13189 !> \param pad ...
13190 !> \param pac ...
13191 !> \param prim ...
13192 !> \param scale ...
13193 ! **************************************************************************************************
13194  SUBROUTINE block_2_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
13195  INTEGER :: md_max
13196  REAL(kind=dp) :: kbd(2*md_max), kbc(2*2), kad(2*md_max), kac(2*2), pbd(2*md_max), pbc(2*2), &
13197  pad(2*md_max), pac(2*2), prim(2*2*2*md_max), scale
13198 
13199  INTEGER :: ma, mb, mc, md, p_index
13200  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
13201 
13202  kbd(1:2*md_max) = 0.0_dp
13203  kbc(1:2*2) = 0.0_dp
13204  kad(1:2*md_max) = 0.0_dp
13205  kac(1:2*2) = 0.0_dp
13206  p_index = 0
13207  DO md = 1, md_max
13208  DO mc = 1, 2
13209  DO mb = 1, 2
13210  ks_bd = 0.0_dp
13211  ks_bc = 0.0_dp
13212  p_bd = pbd((md - 1)*2 + mb)
13213  p_bc = pbc((mc - 1)*2 + mb)
13214  DO ma = 1, 2
13215  p_index = p_index + 1
13216  tmp = scale*prim(p_index)
13217  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
13218  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
13219  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
13220  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
13221  END DO
13222  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
13223  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
13224  END DO
13225  END DO
13226  END DO
13227  END SUBROUTINE block_2_2_2
13228 ! **************************************************************************************************
13229 !> \brief ...
13230 !> \param kbd ...
13231 !> \param kbc ...
13232 !> \param kad ...
13233 !> \param kac ...
13234 !> \param pbd ...
13235 !> \param pbc ...
13236 !> \param pad ...
13237 !> \param pac ...
13238 !> \param prim ...
13239 !> \param scale ...
13240 ! **************************************************************************************************
13241  SUBROUTINE block_2_2_3_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
13242  REAL(kind=dp) :: kbd(2*1), kbc(2*3), kad(2*1), kac(2*3), &
13243  pbd(2*1), pbc(2*3), pad(2*1), &
13244  pac(2*3), prim(2*2*3*1), scale
13245 
13246  INTEGER :: ma, mb, mc, md, p_index
13247  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
13248 
13249  kbd(1:2*1) = 0.0_dp
13250  kbc(1:2*3) = 0.0_dp
13251  kad(1:2*1) = 0.0_dp
13252  kac(1:2*3) = 0.0_dp
13253  p_index = 0
13254  DO md = 1, 1
13255  DO mc = 1, 3
13256  DO mb = 1, 2
13257  ks_bd = 0.0_dp
13258  ks_bc = 0.0_dp
13259  p_bd = pbd((md - 1)*2 + mb)
13260  p_bc = pbc((mc - 1)*2 + mb)
13261  DO ma = 1, 2
13262  p_index = p_index + 1
13263  tmp = scale*prim(p_index)
13264  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
13265  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
13266  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
13267  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
13268  END DO
13269  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
13270  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
13271  END DO
13272  END DO
13273  END DO
13274  END SUBROUTINE block_2_2_3_1
13275 ! **************************************************************************************************
13276 !> \brief ...
13277 !> \param md_max ...
13278 !> \param kbd ...
13279 !> \param kbc ...
13280 !> \param kad ...
13281 !> \param kac ...
13282 !> \param pbd ...
13283 !> \param pbc ...
13284 !> \param pad ...
13285 !> \param pac ...
13286 !> \param prim ...
13287 !> \param scale ...
13288 ! **************************************************************************************************
13289  SUBROUTINE block_2_2_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
13290  INTEGER :: md_max
13291  REAL(kind=dp) :: kbd(2*md_max), kbc(2*3), kad(2*md_max), kac(2*3), pbd(2*md_max), pbc(2*3), &
13292  pad(2*md_max), pac(2*3), prim(2*2*3*md_max), scale
13293 
13294  INTEGER :: ma, mb, mc, md, p_index
13295  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
13296 
13297  kbd(1:2*md_max) = 0.0_dp
13298  kbc(1:2*3) = 0.0_dp
13299  kad(1:2*md_max) = 0.0_dp
13300  kac(1:2*3) = 0.0_dp
13301  p_index = 0
13302  DO md = 1, md_max
13303  DO mc = 1, 3
13304  DO mb = 1, 2
13305  ks_bd = 0.0_dp
13306  ks_bc = 0.0_dp
13307  p_bd = pbd((md - 1)*2 + mb)
13308  p_bc = pbc((mc - 1)*2 + mb)
13309  DO ma = 1, 2
13310  p_index = p_index + 1
13311  tmp = scale*prim(p_index)
13312  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
13313  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
13314  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
13315  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
13316  END DO
13317  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
13318  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
13319  END DO
13320  END DO
13321  END DO
13322  END SUBROUTINE block_2_2_3
13323 ! **************************************************************************************************
13324 !> \brief ...
13325 !> \param kbd ...
13326 !> \param kbc ...
13327 !> \param kad ...
13328 !> \param kac ...
13329 !> \param pbd ...
13330 !> \param pbc ...
13331 !> \param pad ...
13332 !> \param pac ...
13333 !> \param prim ...
13334 !> \param scale ...
13335 ! **************************************************************************************************
13336  SUBROUTINE block_2_2_4_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
13337  REAL(kind=dp) :: kbd(2*1), kbc(2*4), kad(2*1), kac(2*4), &
13338  pbd(2*1), pbc(2*4), pad(2*1), &
13339  pac(2*4), prim(2*2*4*1), scale
13340 
13341  INTEGER :: ma, mb, mc, md, p_index
13342  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
13343 
13344  kbd(1:2*1) = 0.0_dp
13345  kbc(1:2*4) = 0.0_dp
13346  kad(1:2*1) = 0.0_dp
13347  kac(1:2*4) = 0.0_dp
13348  p_index = 0
13349  DO md = 1, 1
13350  DO mc = 1, 4
13351  DO mb = 1, 2
13352  ks_bd = 0.0_dp
13353  ks_bc = 0.0_dp
13354  p_bd = pbd((md - 1)*2 + mb)
13355  p_bc = pbc((mc - 1)*2 + mb)
13356  DO ma = 1, 2
13357  p_index = p_index + 1
13358  tmp = scale*prim(p_index)
13359  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
13360  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
13361  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
13362  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
13363  END DO
13364  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
13365  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
13366  END DO
13367  END DO
13368  END DO
13369  END SUBROUTINE block_2_2_4_1
13370 ! **************************************************************************************************
13371 !> \brief ...
13372 !> \param md_max ...
13373 !> \param kbd ...
13374 !> \param kbc ...
13375 !> \param kad ...
13376 !> \param kac ...
13377 !> \param pbd ...
13378 !> \param pbc ...
13379 !> \param pad ...
13380 !> \param pac ...
13381 !> \param prim ...
13382 !> \param scale ...
13383 ! **************************************************************************************************
13384  SUBROUTINE block_2_2_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
13385  INTEGER :: md_max
13386  REAL(kind=dp) :: kbd(2*md_max), kbc(2*4), kad(2*md_max), kac(2*4), pbd(2*md_max), pbc(2*4), &
13387  pad(2*md_max), pac(2*4), prim(2*2*4*md_max), scale
13388 
13389  INTEGER :: ma, mb, mc, md, p_index
13390  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
13391 
13392  kbd(1:2*md_max) = 0.0_dp
13393  kbc(1:2*4) = 0.0_dp
13394  kad(1:2*md_max) = 0.0_dp
13395  kac(1:2*4) = 0.0_dp
13396  p_index = 0
13397  DO md = 1, md_max
13398  DO mc = 1, 4
13399  DO mb = 1, 2
13400  ks_bd = 0.0_dp
13401  ks_bc = 0.0_dp
13402  p_bd = pbd((md - 1)*2 + mb)
13403  p_bc = pbc((mc - 1)*2 + mb)
13404  DO ma = 1, 2
13405  p_index = p_index + 1
13406  tmp = scale*prim(p_index)
13407  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
13408  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
13409  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
13410  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
13411  END DO
13412  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
13413  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
13414  END DO
13415  END DO
13416  END DO
13417  END SUBROUTINE block_2_2_4
13418 ! **************************************************************************************************
13419 !> \brief ...
13420 !> \param mc_max ...
13421 !> \param md_max ...
13422 !> \param kbd ...
13423 !> \param kbc ...
13424 !> \param kad ...
13425 !> \param kac ...
13426 !> \param pbd ...
13427 !> \param pbc ...
13428 !> \param pad ...
13429 !> \param pac ...
13430 !> \param prim ...
13431 !> \param scale ...
13432 ! **************************************************************************************************
13433  SUBROUTINE block_2_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
13434  INTEGER :: mc_max, md_max
13435  REAL(kind=dp) :: kbd(2*md_max), kbc(2*mc_max), kad(2*md_max), kac(2*mc_max), pbd(2*md_max), &
13436  pbc(2*mc_max), pad(2*md_max), pac(2*mc_max), prim(2*2*mc_max*md_max), scale
13437 
13438  INTEGER :: ma, mb, mc, md, p_index
13439  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
13440 
13441  kbd(1:2*md_max) = 0.0_dp
13442  kbc(1:2*mc_max) = 0.0_dp
13443  kad(1:2*md_max) = 0.0_dp
13444  kac(1:2*mc_max) = 0.0_dp
13445  p_index = 0
13446  DO md = 1, md_max
13447  DO mc = 1, mc_max
13448  DO mb = 1, 2
13449  ks_bd = 0.0_dp
13450  ks_bc = 0.0_dp
13451  p_bd = pbd((md - 1)*2 + mb)
13452  p_bc = pbc((mc - 1)*2 + mb)
13453  DO ma = 1, 2
13454  p_index = p_index + 1
13455  tmp = scale*prim(p_index)
13456  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
13457  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
13458  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
13459  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
13460  END DO
13461  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
13462  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
13463  END DO
13464  END DO
13465  END DO
13466  END SUBROUTINE block_2_2
13467 ! **************************************************************************************************
13468 !> \brief ...
13469 !> \param kbd ...
13470 !> \param kbc ...
13471 !> \param kad ...
13472 !> \param kac ...
13473 !> \param pbd ...
13474 !> \param pbc ...
13475 !> \param pad ...
13476 !> \param pac ...
13477 !> \param prim ...
13478 !> \param scale ...
13479 ! **************************************************************************************************
13480  SUBROUTINE block_2_3_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
13481  REAL(kind=dp) :: kbd(3*1), kbc(3*1), kad(2*1), kac(2*1), &
13482  pbd(3*1), pbc(3*1), pad(2*1), &
13483  pac(2*1), prim(2*3*1*1), scale
13484 
13485  INTEGER :: ma, mb, mc, md, p_index
13486  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
13487 
13488  kbd(1:3*1) = 0.0_dp
13489  kbc(1:3*1) = 0.0_dp
13490  kad(1:2*1) = 0.0_dp
13491  kac(1:2*1) = 0.0_dp
13492  p_index = 0
13493  DO md = 1, 1
13494  DO mc = 1, 1
13495  DO mb = 1, 3
13496  ks_bd = 0.0_dp
13497  ks_bc = 0.0_dp
13498  p_bd = pbd((md - 1)*3 + mb)
13499  p_bc = pbc((mc - 1)*3 + mb)
13500  DO ma = 1, 2
13501  p_index = p_index + 1
13502  tmp = scale*prim(p_index)
13503  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
13504  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
13505  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
13506  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
13507  END DO
13508  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
13509  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
13510  END DO
13511  END DO
13512  END DO
13513  END SUBROUTINE block_2_3_1_1
13514 ! **************************************************************************************************
13515 !> \brief ...
13516 !> \param kbd ...
13517 !> \param kbc ...
13518 !> \param kad ...
13519 !> \param kac ...
13520 !> \param pbd ...
13521 !> \param pbc ...
13522 !> \param pad ...
13523 !> \param pac ...
13524 !> \param prim ...
13525 !> \param scale ...
13526 ! **************************************************************************************************
13527  SUBROUTINE block_2_3_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
13528  REAL(kind=dp) :: kbd(3*2), kbc(3*1), kad(2*2), kac(2*1), &
13529  pbd(3*2), pbc(3*1), pad(2*2), &
13530  pac(2*1), prim(2*3*1*2), scale
13531 
13532  INTEGER :: ma, mb, mc, md, p_index
13533  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
13534 
13535  kbd(1:3*2) = 0.0_dp
13536  kbc(1:3*1) = 0.0_dp
13537  kad(1:2*2) = 0.0_dp
13538  kac(1:2*1) = 0.0_dp
13539  p_index = 0
13540  DO md = 1, 2
13541  DO mc = 1, 1
13542  DO mb = 1, 3
13543  ks_bd = 0.0_dp
13544  ks_bc = 0.0_dp
13545  p_bd = pbd((md - 1)*3 + mb)
13546  p_bc = pbc((mc - 1)*3 + mb)
13547  DO ma = 1, 2
13548  p_index = p_index + 1
13549  tmp = scale*prim(p_index)
13550  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
13551  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
13552  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
13553  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
13554  END DO
13555  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
13556  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
13557  END DO
13558  END DO
13559  END DO
13560  END SUBROUTINE block_2_3_1_2
13561 ! **************************************************************************************************
13562 !> \brief ...
13563 !> \param kbd ...
13564 !> \param kbc ...
13565 !> \param kad ...
13566 !> \param kac ...
13567 !> \param pbd ...
13568 !> \param pbc ...
13569 !> \param pad ...
13570 !> \param pac ...
13571 !> \param prim ...
13572 !> \param scale ...
13573 ! **************************************************************************************************
13574  SUBROUTINE block_2_3_1_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
13575  REAL(kind=dp) :: kbd(3*3), kbc(3*1), kad(2*3), kac(2*1), &
13576  pbd(3*3), pbc(3*1), pad(2*3), &
13577  pac(2*1), prim(2*3*1*3), scale
13578 
13579  INTEGER :: ma, mb, mc, md, p_index
13580  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
13581 
13582  kbd(1:3*3) = 0.0_dp
13583  kbc(1:3*1) = 0.0_dp
13584  kad(1:2*3) = 0.0_dp
13585  kac(1:2*1) = 0.0_dp
13586  p_index = 0
13587  DO md = 1, 3
13588  DO mc = 1, 1
13589  DO mb = 1, 3
13590  ks_bd = 0.0_dp
13591  ks_bc = 0.0_dp
13592  p_bd = pbd((md - 1)*3 + mb)
13593  p_bc = pbc((mc - 1)*3 + mb)
13594  DO ma = 1, 2
13595  p_index = p_index + 1
13596  tmp = scale*prim(p_index)
13597  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
13598  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
13599  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
13600  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
13601  END DO
13602  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
13603  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
13604  END DO
13605  END DO
13606  END DO
13607  END SUBROUTINE block_2_3_1_3
13608 ! **************************************************************************************************
13609 !> \brief ...
13610 !> \param md_max ...
13611 !> \param kbd ...
13612 !> \param kbc ...
13613 !> \param kad ...
13614 !> \param kac ...
13615 !> \param pbd ...
13616 !> \param pbc ...
13617 !> \param pad ...
13618 !> \param pac ...
13619 !> \param prim ...
13620 !> \param scale ...
13621 ! **************************************************************************************************
13622  SUBROUTINE block_2_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
13623  INTEGER :: md_max
13624  REAL(kind=dp) :: kbd(3*md_max), kbc(3*1), kad(2*md_max), kac(2*1), pbd(3*md_max), pbc(3*1), &
13625  pad(2*md_max), pac(2*1), prim(2*3*1*md_max), scale
13626 
13627  INTEGER :: ma, mb, mc, md, p_index
13628  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
13629 
13630  kbd(1:3*md_max) = 0.0_dp
13631  kbc(1:3*1) = 0.0_dp
13632  kad(1:2*md_max) = 0.0_dp
13633  kac(1:2*1) = 0.0_dp
13634  p_index = 0
13635  DO md = 1, md_max
13636  DO mc = 1, 1
13637  DO mb = 1, 3
13638  ks_bd = 0.0_dp
13639  ks_bc = 0.0_dp
13640  p_bd = pbd((md - 1)*3 + mb)
13641  p_bc = pbc((mc - 1)*3 + mb)
13642  DO ma = 1, 2
13643  p_index = p_index + 1
13644  tmp = scale*prim(p_index)
13645  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
13646  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
13647  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
13648  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
13649  END DO
13650  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
13651  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
13652  END DO
13653  END DO
13654  END DO
13655  END SUBROUTINE block_2_3_1
13656 ! **************************************************************************************************
13657 !> \brief ...
13658 !> \param kbd ...
13659 !> \param kbc ...
13660 !> \param kad ...
13661 !> \param kac ...
13662 !> \param pbd ...
13663 !> \param pbc ...
13664 !> \param pad ...
13665 !> \param pac ...
13666 !> \param prim ...
13667 !> \param scale ...
13668 ! **************************************************************************************************
13669  SUBROUTINE block_2_3_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
13670  REAL(kind=dp) :: kbd(3*1), kbc(3*2), kad(2*1), kac(2*2), &
13671  pbd(3*1), pbc(3*2), pad(2*1), &
13672  pac(2*2), prim(2*3*2*1), scale
13673 
13674  INTEGER :: ma, mb, mc, md, p_index
13675  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
13676 
13677  kbd(1:3*1) = 0.0_dp
13678  kbc(1:3*2) = 0.0_dp
13679  kad(1:2*1) = 0.0_dp
13680  kac(1:2*2) = 0.0_dp
13681  p_index = 0
13682  DO md = 1, 1
13683  DO mc = 1, 2
13684  DO mb = 1, 3
13685  ks_bd = 0.0_dp
13686  ks_bc = 0.0_dp
13687  p_bd = pbd((md - 1)*3 + mb)
13688  p_bc = pbc((mc - 1)*3 + mb)
13689  DO ma = 1, 2
13690  p_index = p_index + 1
13691  tmp = scale*prim(p_index)
13692  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
13693  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
13694  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
13695  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
13696  END DO
13697  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
13698  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
13699  END DO
13700  END DO
13701  END DO
13702  END SUBROUTINE block_2_3_2_1
13703 ! **************************************************************************************************
13704 !> \brief ...
13705 !> \param md_max ...
13706 !> \param kbd ...
13707 !> \param kbc ...
13708 !> \param kad ...
13709 !> \param kac ...
13710 !> \param pbd ...
13711 !> \param pbc ...
13712 !> \param pad ...
13713 !> \param pac ...
13714 !> \param prim ...
13715 !> \param scale ...
13716 ! **************************************************************************************************
13717  SUBROUTINE block_2_3_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
13718  INTEGER :: md_max
13719  REAL(kind=dp) :: kbd(3*md_max), kbc(3*2), kad(2*md_max), kac(2*2), pbd(3*md_max), pbc(3*2), &
13720  pad(2*md_max), pac(2*2), prim(2*3*2*md_max), scale
13721 
13722  INTEGER :: ma, mb, mc, md, p_index
13723  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
13724 
13725  kbd(1:3*md_max) = 0.0_dp
13726  kbc(1:3*2) = 0.0_dp
13727  kad(1:2*md_max) = 0.0_dp
13728  kac(1:2*2) = 0.0_dp
13729  p_index = 0
13730  DO md = 1, md_max
13731  DO mc = 1, 2
13732  DO mb = 1, 3
13733  ks_bd = 0.0_dp
13734  ks_bc = 0.0_dp
13735  p_bd = pbd((md - 1)*3 + mb)
13736  p_bc = pbc((mc - 1)*3 + mb)
13737  DO ma = 1, 2
13738  p_index = p_index + 1
13739  tmp = scale*prim(p_index)
13740  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
13741  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
13742  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
13743  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
13744  END DO
13745  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
13746  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
13747  END DO
13748  END DO
13749  END DO
13750  END SUBROUTINE block_2_3_2
13751 ! **************************************************************************************************
13752 !> \brief ...
13753 !> \param kbd ...
13754 !> \param kbc ...
13755 !> \param kad ...
13756 !> \param kac ...
13757 !> \param pbd ...
13758 !> \param pbc ...
13759 !> \param pad ...
13760 !> \param pac ...
13761 !> \param prim ...
13762 !> \param scale ...
13763 ! **************************************************************************************************
13764  SUBROUTINE block_2_3_3_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
13765  REAL(kind=dp) :: kbd(3*1), kbc(3*3), kad(2*1), kac(2*3), &
13766  pbd(3*1), pbc(3*3), pad(2*1), &
13767  pac(2*3), prim(2*3*3*1), scale
13768 
13769  INTEGER :: ma, mb, mc, md, p_index
13770  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
13771 
13772  kbd(1:3*1) = 0.0_dp
13773  kbc(1:3*3) = 0.0_dp
13774  kad(1:2*1) = 0.0_dp
13775  kac(1:2*3) = 0.0_dp
13776  p_index = 0
13777  DO md = 1, 1
13778  DO mc = 1, 3
13779  DO mb = 1, 3
13780  ks_bd = 0.0_dp
13781  ks_bc = 0.0_dp
13782  p_bd = pbd((md - 1)*3 + mb)
13783  p_bc = pbc((mc - 1)*3 + mb)
13784  DO ma = 1, 2
13785  p_index = p_index + 1
13786  tmp = scale*prim(p_index)
13787  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
13788  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
13789  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
13790  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
13791  END DO
13792  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
13793  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
13794  END DO
13795  END DO
13796  END DO
13797  END SUBROUTINE block_2_3_3_1
13798 ! **************************************************************************************************
13799 !> \brief ...
13800 !> \param md_max ...
13801 !> \param kbd ...
13802 !> \param kbc ...
13803 !> \param kad ...
13804 !> \param kac ...
13805 !> \param pbd ...
13806 !> \param pbc ...
13807 !> \param pad ...
13808 !> \param pac ...
13809 !> \param prim ...
13810 !> \param scale ...
13811 ! **************************************************************************************************
13812  SUBROUTINE block_2_3_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
13813  INTEGER :: md_max
13814  REAL(kind=dp) :: kbd(3*md_max), kbc(3*3), kad(2*md_max), kac(2*3), pbd(3*md_max), pbc(3*3), &
13815  pad(2*md_max), pac(2*3), prim(2*3*3*md_max), scale
13816 
13817  INTEGER :: ma, mb, mc, md, p_index
13818  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
13819 
13820  kbd(1:3*md_max) = 0.0_dp
13821  kbc(1:3*3) = 0.0_dp
13822  kad(1:2*md_max) = 0.0_dp
13823  kac(1:2*3) = 0.0_dp
13824  p_index = 0
13825  DO md = 1, md_max
13826  DO mc = 1, 3
13827  DO mb = 1, 3
13828  ks_bd = 0.0_dp
13829  ks_bc = 0.0_dp
13830  p_bd = pbd((md - 1)*3 + mb)
13831  p_bc = pbc((mc - 1)*3 + mb)
13832  DO ma = 1, 2
13833  p_index = p_index + 1
13834  tmp = scale*prim(p_index)
13835  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
13836  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
13837  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
13838  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
13839  END DO
13840  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
13841  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
13842  END DO
13843  END DO
13844  END DO
13845  END SUBROUTINE block_2_3_3
13846 ! **************************************************************************************************
13847 !> \brief ...
13848 !> \param mc_max ...
13849 !> \param md_max ...
13850 !> \param kbd ...
13851 !> \param kbc ...
13852 !> \param kad ...
13853 !> \param kac ...
13854 !> \param pbd ...
13855 !> \param pbc ...
13856 !> \param pad ...
13857 !> \param pac ...
13858 !> \param prim ...
13859 !> \param scale ...
13860 ! **************************************************************************************************
13861  SUBROUTINE block_2_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
13862  INTEGER :: mc_max, md_max
13863  REAL(kind=dp) :: kbd(3*md_max), kbc(3*mc_max), kad(2*md_max), kac(2*mc_max), pbd(3*md_max), &
13864  pbc(3*mc_max), pad(2*md_max), pac(2*mc_max), prim(2*3*mc_max*md_max), scale
13865 
13866  INTEGER :: ma, mb, mc, md, p_index
13867  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
13868 
13869  kbd(1:3*md_max) = 0.0_dp
13870  kbc(1:3*mc_max) = 0.0_dp
13871  kad(1:2*md_max) = 0.0_dp
13872  kac(1:2*mc_max) = 0.0_dp
13873  p_index = 0
13874  DO md = 1, md_max
13875  DO mc = 1, mc_max
13876  DO mb = 1, 3
13877  ks_bd = 0.0_dp
13878  ks_bc = 0.0_dp
13879  p_bd = pbd((md - 1)*3 + mb)
13880  p_bc = pbc((mc - 1)*3 + mb)
13881  DO ma = 1, 2
13882  p_index = p_index + 1
13883  tmp = scale*prim(p_index)
13884  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
13885  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
13886  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
13887  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
13888  END DO
13889  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
13890  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
13891  END DO
13892  END DO
13893  END DO
13894  END SUBROUTINE block_2_3
13895 ! **************************************************************************************************
13896 !> \brief ...
13897 !> \param kbd ...
13898 !> \param kbc ...
13899 !> \param kad ...
13900 !> \param kac ...
13901 !> \param pbd ...
13902 !> \param pbc ...
13903 !> \param pad ...
13904 !> \param pac ...
13905 !> \param prim ...
13906 !> \param scale ...
13907 ! **************************************************************************************************
13908  SUBROUTINE block_2_4_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
13909  REAL(kind=dp) :: kbd(4*1), kbc(4*1), kad(2*1), kac(2*1), &
13910  pbd(4*1), pbc(4*1), pad(2*1), &
13911  pac(2*1), prim(2*4*1*1), scale
13912 
13913  INTEGER :: ma, mb, mc, md, p_index
13914  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
13915 
13916  kbd(1:4*1) = 0.0_dp
13917  kbc(1:4*1) = 0.0_dp
13918  kad(1:2*1) = 0.0_dp
13919  kac(1:2*1) = 0.0_dp
13920  p_index = 0
13921  DO md = 1, 1
13922  DO mc = 1, 1
13923  DO mb = 1, 4
13924  ks_bd = 0.0_dp
13925  ks_bc = 0.0_dp
13926  p_bd = pbd((md - 1)*4 + mb)
13927  p_bc = pbc((mc - 1)*4 + mb)
13928  DO ma = 1, 2
13929  p_index = p_index + 1
13930  tmp = scale*prim(p_index)
13931  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
13932  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
13933  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
13934  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
13935  END DO
13936  kbd((md - 1)*4 + mb) = kbd((md - 1)*4 + mb) - ks_bd
13937  kbc((mc - 1)*4 + mb) = kbc((mc - 1)*4 + mb) - ks_bc
13938  END DO
13939  END DO
13940  END DO
13941  END SUBROUTINE block_2_4_1_1
13942 ! **************************************************************************************************
13943 !> \brief ...
13944 !> \param kbd ...
13945 !> \param kbc ...
13946 !> \param kad ...
13947 !> \param kac ...
13948 !> \param pbd ...
13949 !> \param pbc ...
13950 !> \param pad ...
13951 !> \param pac ...
13952 !> \param prim ...
13953 !> \param scale ...
13954 ! **************************************************************************************************
13955  SUBROUTINE block_2_4_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
13956  REAL(kind=dp) :: kbd(4*2), kbc(4*1), kad(2*2), kac(2*1), &
13957  pbd(4*2), pbc(4*1), pad(2*2), &
13958  pac(2*1), prim(2*4*1*2), scale
13959 
13960  INTEGER :: ma, mb, mc, md, p_index
13961  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
13962 
13963  kbd(1:4*2) = 0.0_dp
13964  kbc(1:4*1) = 0.0_dp
13965  kad(1:2*2) = 0.0_dp
13966  kac(1:2*1) = 0.0_dp
13967  p_index = 0
13968  DO md = 1, 2
13969  DO mc = 1, 1
13970  DO mb = 1, 4
13971  ks_bd = 0.0_dp
13972  ks_bc = 0.0_dp
13973  p_bd = pbd((md - 1)*4 + mb)
13974  p_bc = pbc((mc - 1)*4 + mb)
13975  DO ma = 1, 2
13976  p_index = p_index + 1
13977  tmp = scale*prim(p_index)
13978  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
13979  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
13980  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
13981  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
13982  END DO
13983  kbd((md - 1)*4 + mb) = kbd((md - 1)*4 + mb) - ks_bd
13984  kbc((mc - 1)*4 + mb) = kbc((mc - 1)*4 + mb) - ks_bc
13985  END DO
13986  END DO
13987  END DO
13988  END SUBROUTINE block_2_4_1_2
13989 ! **************************************************************************************************
13990 !> \brief ...
13991 !> \param md_max ...
13992 !> \param kbd ...
13993 !> \param kbc ...
13994 !> \param kad ...
13995 !> \param kac ...
13996 !> \param pbd ...
13997 !> \param pbc ...
13998 !> \param pad ...
13999 !> \param pac ...
14000 !> \param prim ...
14001 !> \param scale ...
14002 ! **************************************************************************************************
14003  SUBROUTINE block_2_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
14004  INTEGER :: md_max
14005  REAL(kind=dp) :: kbd(4*md_max), kbc(4*1), kad(2*md_max), kac(2*1), pbd(4*md_max), pbc(4*1), &
14006  pad(2*md_max), pac(2*1), prim(2*4*1*md_max), scale
14007 
14008  INTEGER :: ma, mb, mc, md, p_index
14009  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
14010 
14011  kbd(1:4*md_max) = 0.0_dp
14012  kbc(1:4*1) = 0.0_dp
14013  kad(1:2*md_max) = 0.0_dp
14014  kac(1:2*1) = 0.0_dp
14015  p_index = 0
14016  DO md = 1, md_max
14017  DO mc = 1, 1
14018  DO mb = 1, 4
14019  ks_bd = 0.0_dp
14020  ks_bc = 0.0_dp
14021  p_bd = pbd((md - 1)*4 + mb)
14022  p_bc = pbc((mc - 1)*4 + mb)
14023  DO ma = 1, 2
14024  p_index = p_index + 1
14025  tmp = scale*prim(p_index)
14026  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
14027  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
14028  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
14029  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
14030  END DO
14031  kbd((md - 1)*4 + mb) = kbd((md - 1)*4 + mb) - ks_bd
14032  kbc((mc - 1)*4 + mb) = kbc((mc - 1)*4 + mb) - ks_bc
14033  END DO
14034  END DO
14035  END DO
14036  END SUBROUTINE block_2_4_1
14037 ! **************************************************************************************************
14038 !> \brief ...
14039 !> \param kbd ...
14040 !> \param kbc ...
14041 !> \param kad ...
14042 !> \param kac ...
14043 !> \param pbd ...
14044 !> \param pbc ...
14045 !> \param pad ...
14046 !> \param pac ...
14047 !> \param prim ...
14048 !> \param scale ...
14049 ! **************************************************************************************************
14050  SUBROUTINE block_2_4_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
14051  REAL(kind=dp) :: kbd(4*1), kbc(4*2), kad(2*1), kac(2*2), &
14052  pbd(4*1), pbc(4*2), pad(2*1), &
14053  pac(2*2), prim(2*4*2*1), scale
14054 
14055  INTEGER :: ma, mb, mc, md, p_index
14056  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
14057 
14058  kbd(1:4*1) = 0.0_dp
14059  kbc(1:4*2) = 0.0_dp
14060  kad(1:2*1) = 0.0_dp
14061  kac(1:2*2) = 0.0_dp
14062  p_index = 0
14063  DO md = 1, 1
14064  DO mc = 1, 2
14065  DO mb = 1, 4
14066  ks_bd = 0.0_dp
14067  ks_bc = 0.0_dp
14068  p_bd = pbd((md - 1)*4 + mb)
14069  p_bc = pbc((mc - 1)*4 + mb)
14070  DO ma = 1, 2
14071  p_index = p_index + 1
14072  tmp = scale*prim(p_index)
14073  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
14074  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
14075  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
14076  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
14077  END DO
14078  kbd((md - 1)*4 + mb) = kbd((md - 1)*4 + mb) - ks_bd
14079  kbc((mc - 1)*4 + mb) = kbc((mc - 1)*4 + mb) - ks_bc
14080  END DO
14081  END DO
14082  END DO
14083  END SUBROUTINE block_2_4_2_1
14084 ! **************************************************************************************************
14085 !> \brief ...
14086 !> \param md_max ...
14087 !> \param kbd ...
14088 !> \param kbc ...
14089 !> \param kad ...
14090 !> \param kac ...
14091 !> \param pbd ...
14092 !> \param pbc ...
14093 !> \param pad ...
14094 !> \param pac ...
14095 !> \param prim ...
14096 !> \param scale ...
14097 ! **************************************************************************************************
14098  SUBROUTINE block_2_4_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
14099  INTEGER :: md_max
14100  REAL(kind=dp) :: kbd(4*md_max), kbc(4*2), kad(2*md_max), kac(2*2), pbd(4*md_max), pbc(4*2), &
14101  pad(2*md_max), pac(2*2), prim(2*4*2*md_max), scale
14102 
14103  INTEGER :: ma, mb, mc, md, p_index
14104  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
14105 
14106  kbd(1:4*md_max) = 0.0_dp
14107  kbc(1:4*2) = 0.0_dp
14108  kad(1:2*md_max) = 0.0_dp
14109  kac(1:2*2) = 0.0_dp
14110  p_index = 0
14111  DO md = 1, md_max
14112  DO mc = 1, 2
14113  DO mb = 1, 4
14114  ks_bd = 0.0_dp
14115  ks_bc = 0.0_dp
14116  p_bd = pbd((md - 1)*4 + mb)
14117  p_bc = pbc((mc - 1)*4 + mb)
14118  DO ma = 1, 2
14119  p_index = p_index + 1
14120  tmp = scale*prim(p_index)
14121  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
14122  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
14123  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
14124  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
14125  END DO
14126  kbd((md - 1)*4 + mb) = kbd((md - 1)*4 + mb) - ks_bd
14127  kbc((mc - 1)*4 + mb) = kbc((mc - 1)*4 + mb) - ks_bc
14128  END DO
14129  END DO
14130  END DO
14131  END SUBROUTINE block_2_4_2
14132 ! **************************************************************************************************
14133 !> \brief ...
14134 !> \param mc_max ...
14135 !> \param md_max ...
14136 !> \param kbd ...
14137 !> \param kbc ...
14138 !> \param kad ...
14139 !> \param kac ...
14140 !> \param pbd ...
14141 !> \param pbc ...
14142 !> \param pad ...
14143 !> \param pac ...
14144 !> \param prim ...
14145 !> \param scale ...
14146 ! **************************************************************************************************
14147  SUBROUTINE block_2_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
14148  INTEGER :: mc_max, md_max
14149  REAL(kind=dp) :: kbd(4*md_max), kbc(4*mc_max), kad(2*md_max), kac(2*mc_max), pbd(4*md_max), &
14150  pbc(4*mc_max), pad(2*md_max), pac(2*mc_max), prim(2*4*mc_max*md_max), scale
14151 
14152  INTEGER :: ma, mb, mc, md, p_index
14153  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
14154 
14155  kbd(1:4*md_max) = 0.0_dp
14156  kbc(1:4*mc_max) = 0.0_dp
14157  kad(1:2*md_max) = 0.0_dp
14158  kac(1:2*mc_max) = 0.0_dp
14159  p_index = 0
14160  DO md = 1, md_max
14161  DO mc = 1, mc_max
14162  DO mb = 1, 4
14163  ks_bd = 0.0_dp
14164  ks_bc = 0.0_dp
14165  p_bd = pbd((md - 1)*4 + mb)
14166  p_bc = pbc((mc - 1)*4 + mb)
14167  DO ma = 1, 2
14168  p_index = p_index + 1
14169  tmp = scale*prim(p_index)
14170  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
14171  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
14172  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
14173  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
14174  END DO
14175  kbd((md - 1)*4 + mb) = kbd((md - 1)*4 + mb) - ks_bd
14176  kbc((mc - 1)*4 + mb) = kbc((mc - 1)*4 + mb) - ks_bc
14177  END DO
14178  END DO
14179  END DO
14180  END SUBROUTINE block_2_4
14181 ! **************************************************************************************************
14182 !> \brief ...
14183 !> \param kbd ...
14184 !> \param kbc ...
14185 !> \param kad ...
14186 !> \param kac ...
14187 !> \param pbd ...
14188 !> \param pbc ...
14189 !> \param pad ...
14190 !> \param pac ...
14191 !> \param prim ...
14192 !> \param scale ...
14193 ! **************************************************************************************************
14194  SUBROUTINE block_2_5_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
14195  REAL(kind=dp) :: kbd(5*1), kbc(5*1), kad(2*1), kac(2*1), &
14196  pbd(5*1), pbc(5*1), pad(2*1), &
14197  pac(2*1), prim(2*5*1*1), scale
14198 
14199  INTEGER :: ma, mb, mc, md, p_index
14200  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
14201 
14202  kbd(1:5*1) = 0.0_dp
14203  kbc(1:5*1) = 0.0_dp
14204  kad(1:2*1) = 0.0_dp
14205  kac(1:2*1) = 0.0_dp
14206  p_index = 0
14207  DO md = 1, 1
14208  DO mc = 1, 1
14209  DO mb = 1, 5
14210  ks_bd = 0.0_dp
14211  ks_bc = 0.0_dp
14212  p_bd = pbd((md - 1)*5 + mb)
14213  p_bc = pbc((mc - 1)*5 + mb)
14214  DO ma = 1, 2
14215  p_index = p_index + 1
14216  tmp = scale*prim(p_index)
14217  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
14218  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
14219  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
14220  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
14221  END DO
14222  kbd((md - 1)*5 + mb) = kbd((md - 1)*5 + mb) - ks_bd
14223  kbc((mc - 1)*5 + mb) = kbc((mc - 1)*5 + mb) - ks_bc
14224  END DO
14225  END DO
14226  END DO
14227  END SUBROUTINE block_2_5_1_1
14228 ! **************************************************************************************************
14229 !> \brief ...
14230 !> \param md_max ...
14231 !> \param kbd ...
14232 !> \param kbc ...
14233 !> \param kad ...
14234 !> \param kac ...
14235 !> \param pbd ...
14236 !> \param pbc ...
14237 !> \param pad ...
14238 !> \param pac ...
14239 !> \param prim ...
14240 !> \param scale ...
14241 ! **************************************************************************************************
14242  SUBROUTINE block_2_5_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
14243  INTEGER :: md_max
14244  REAL(kind=dp) :: kbd(5*md_max), kbc(5*1), kad(2*md_max), kac(2*1), pbd(5*md_max), pbc(5*1), &
14245  pad(2*md_max), pac(2*1), prim(2*5*1*md_max), scale
14246 
14247  INTEGER :: ma, mb, mc, md, p_index
14248  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
14249 
14250  kbd(1:5*md_max) = 0.0_dp
14251  kbc(1:5*1) = 0.0_dp
14252  kad(1:2*md_max) = 0.0_dp
14253  kac(1:2*1) = 0.0_dp
14254  p_index = 0
14255  DO md = 1, md_max
14256  DO mc = 1, 1
14257  DO mb = 1, 5
14258  ks_bd = 0.0_dp
14259  ks_bc = 0.0_dp
14260  p_bd = pbd((md - 1)*5 + mb)
14261  p_bc = pbc((mc - 1)*5 + mb)
14262  DO ma = 1, 2
14263  p_index = p_index + 1
14264  tmp = scale*prim(p_index)
14265  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
14266  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
14267  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
14268  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
14269  END DO
14270  kbd((md - 1)*5 + mb) = kbd((md - 1)*5 + mb) - ks_bd
14271  kbc((mc - 1)*5 + mb) = kbc((mc - 1)*5 + mb) - ks_bc
14272  END DO
14273  END DO
14274  END DO
14275  END SUBROUTINE block_2_5_1
14276 ! **************************************************************************************************
14277 !> \brief ...
14278 !> \param mc_max ...
14279 !> \param md_max ...
14280 !> \param kbd ...
14281 !> \param kbc ...
14282 !> \param kad ...
14283 !> \param kac ...
14284 !> \param pbd ...
14285 !> \param pbc ...
14286 !> \param pad ...
14287 !> \param pac ...
14288 !> \param prim ...
14289 !> \param scale ...
14290 ! **************************************************************************************************
14291  SUBROUTINE block_2_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
14292  INTEGER :: mc_max, md_max
14293  REAL(kind=dp) :: kbd(5*md_max), kbc(5*mc_max), kad(2*md_max), kac(2*mc_max), pbd(5*md_max), &
14294  pbc(5*mc_max), pad(2*md_max), pac(2*mc_max), prim(2*5*mc_max*md_max), scale
14295 
14296  INTEGER :: ma, mb, mc, md, p_index
14297  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
14298 
14299  kbd(1:5*md_max) = 0.0_dp
14300  kbc(1:5*mc_max) = 0.0_dp
14301  kad(1:2*md_max) = 0.0_dp
14302  kac(1:2*mc_max) = 0.0_dp
14303  p_index = 0
14304  DO md = 1, md_max
14305  DO mc = 1, mc_max
14306  DO mb = 1, 5
14307  ks_bd = 0.0_dp
14308  ks_bc = 0.0_dp
14309  p_bd = pbd((md - 1)*5 + mb)
14310  p_bc = pbc((mc - 1)*5 + mb)
14311  DO ma = 1, 2
14312  p_index = p_index + 1
14313  tmp = scale*prim(p_index)
14314  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
14315  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
14316  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
14317  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
14318  END DO
14319  kbd((md - 1)*5 + mb) = kbd((md - 1)*5 + mb) - ks_bd
14320  kbc((mc - 1)*5 + mb) = kbc((mc - 1)*5 + mb) - ks_bc
14321  END DO
14322  END DO
14323  END DO
14324  END SUBROUTINE block_2_5
14325 ! **************************************************************************************************
14326 !> \brief ...
14327 !> \param kbd ...
14328 !> \param kbc ...
14329 !> \param kad ...
14330 !> \param kac ...
14331 !> \param pbd ...
14332 !> \param pbc ...
14333 !> \param pad ...
14334 !> \param pac ...
14335 !> \param prim ...
14336 !> \param scale ...
14337 ! **************************************************************************************************
14338  SUBROUTINE block_2_6_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
14339  REAL(kind=dp) :: kbd(6*1), kbc(6*1), kad(2*1), kac(2*1), &
14340  pbd(6*1), pbc(6*1), pad(2*1), &
14341  pac(2*1), prim(2*6*1*1), scale
14342 
14343  INTEGER :: ma, mb, mc, md, p_index
14344  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
14345 
14346  kbd(1:6*1) = 0.0_dp
14347  kbc(1:6*1) = 0.0_dp
14348  kad(1:2*1) = 0.0_dp
14349  kac(1:2*1) = 0.0_dp
14350  p_index = 0
14351  DO md = 1, 1
14352  DO mc = 1, 1
14353  DO mb = 1, 6
14354  ks_bd = 0.0_dp
14355  ks_bc = 0.0_dp
14356  p_bd = pbd((md - 1)*6 + mb)
14357  p_bc = pbc((mc - 1)*6 + mb)
14358  DO ma = 1, 2
14359  p_index = p_index + 1
14360  tmp = scale*prim(p_index)
14361  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
14362  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
14363  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
14364  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
14365  END DO
14366  kbd((md - 1)*6 + mb) = kbd((md - 1)*6 + mb) - ks_bd
14367  kbc((mc - 1)*6 + mb) = kbc((mc - 1)*6 + mb) - ks_bc
14368  END DO
14369  END DO
14370  END DO
14371  END SUBROUTINE block_2_6_1_1
14372 ! **************************************************************************************************
14373 !> \brief ...
14374 !> \param md_max ...
14375 !> \param kbd ...
14376 !> \param kbc ...
14377 !> \param kad ...
14378 !> \param kac ...
14379 !> \param pbd ...
14380 !> \param pbc ...
14381 !> \param pad ...
14382 !> \param pac ...
14383 !> \param prim ...
14384 !> \param scale ...
14385 ! **************************************************************************************************
14386  SUBROUTINE block_2_6_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
14387  INTEGER :: md_max
14388  REAL(kind=dp) :: kbd(6*md_max), kbc(6*1), kad(2*md_max), kac(2*1), pbd(6*md_max), pbc(6*1), &
14389  pad(2*md_max), pac(2*1), prim(2*6*1*md_max), scale
14390 
14391  INTEGER :: ma, mb, mc, md, p_index
14392  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
14393 
14394  kbd(1:6*md_max) = 0.0_dp
14395  kbc(1:6*1) = 0.0_dp
14396  kad(1:2*md_max) = 0.0_dp
14397  kac(1:2*1) = 0.0_dp
14398  p_index = 0
14399  DO md = 1, md_max
14400  DO mc = 1, 1
14401  DO mb = 1, 6
14402  ks_bd = 0.0_dp
14403  ks_bc = 0.0_dp
14404  p_bd = pbd((md - 1)*6 + mb)
14405  p_bc = pbc((mc - 1)*6 + mb)
14406  DO ma = 1, 2
14407  p_index = p_index + 1
14408  tmp = scale*prim(p_index)
14409  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
14410  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
14411  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
14412  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
14413  END DO
14414  kbd((md - 1)*6 + mb) = kbd((md - 1)*6 + mb) - ks_bd
14415  kbc((mc - 1)*6 + mb) = kbc((mc - 1)*6 + mb) - ks_bc
14416  END DO
14417  END DO
14418  END DO
14419  END SUBROUTINE block_2_6_1
14420 ! **************************************************************************************************
14421 !> \brief ...
14422 !> \param mc_max ...
14423 !> \param md_max ...
14424 !> \param kbd ...
14425 !> \param kbc ...
14426 !> \param kad ...
14427 !> \param kac ...
14428 !> \param pbd ...
14429 !> \param pbc ...
14430 !> \param pad ...
14431 !> \param pac ...
14432 !> \param prim ...
14433 !> \param scale ...
14434 ! **************************************************************************************************
14435  SUBROUTINE block_2_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
14436  INTEGER :: mc_max, md_max
14437  REAL(kind=dp) :: kbd(6*md_max), kbc(6*mc_max), kad(2*md_max), kac(2*mc_max), pbd(6*md_max), &
14438  pbc(6*mc_max), pad(2*md_max), pac(2*mc_max), prim(2*6*mc_max*md_max), scale
14439 
14440  INTEGER :: ma, mb, mc, md, p_index
14441  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
14442 
14443  kbd(1:6*md_max) = 0.0_dp
14444  kbc(1:6*mc_max) = 0.0_dp
14445  kad(1:2*md_max) = 0.0_dp
14446  kac(1:2*mc_max) = 0.0_dp
14447  p_index = 0
14448  DO md = 1, md_max
14449  DO mc = 1, mc_max
14450  DO mb = 1, 6
14451  ks_bd = 0.0_dp
14452  ks_bc = 0.0_dp
14453  p_bd = pbd((md - 1)*6 + mb)
14454  p_bc = pbc((mc - 1)*6 + mb)
14455  DO ma = 1, 2
14456  p_index = p_index + 1
14457  tmp = scale*prim(p_index)
14458  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
14459  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
14460  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
14461  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
14462  END DO
14463  kbd((md - 1)*6 + mb) = kbd((md - 1)*6 + mb) - ks_bd
14464  kbc((mc - 1)*6 + mb) = kbc((mc - 1)*6 + mb) - ks_bc
14465  END DO
14466  END DO
14467  END DO
14468  END SUBROUTINE block_2_6
14469 ! **************************************************************************************************
14470 !> \brief ...
14471 !> \param kbd ...
14472 !> \param kbc ...
14473 !> \param kad ...
14474 !> \param kac ...
14475 !> \param pbd ...
14476 !> \param pbc ...
14477 !> \param pad ...
14478 !> \param pac ...
14479 !> \param prim ...
14480 !> \param scale ...
14481 ! **************************************************************************************************
14482  SUBROUTINE block_2_7_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
14483  REAL(kind=dp) :: kbd(7*1), kbc(7*1), kad(2*1), kac(2*1), &
14484  pbd(7*1), pbc(7*1), pad(2*1), &
14485  pac(2*1), prim(2*7*1*1), scale
14486 
14487  INTEGER :: ma, mb, mc, md, p_index
14488  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
14489 
14490  kbd(1:7*1) = 0.0_dp
14491  kbc(1:7*1) = 0.0_dp
14492  kad(1:2*1) = 0.0_dp
14493  kac(1:2*1) = 0.0_dp
14494  p_index = 0
14495  DO md = 1, 1
14496  DO mc = 1, 1
14497  DO mb = 1, 7
14498  ks_bd = 0.0_dp
14499  ks_bc = 0.0_dp
14500  p_bd = pbd((md - 1)*7 + mb)
14501  p_bc = pbc((mc - 1)*7 + mb)
14502  DO ma = 1, 2
14503  p_index = p_index + 1
14504  tmp = scale*prim(p_index)
14505  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
14506  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
14507  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
14508  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
14509  END DO
14510  kbd((md - 1)*7 + mb) = kbd((md - 1)*7 + mb) - ks_bd
14511  kbc((mc - 1)*7 + mb) = kbc((mc - 1)*7 + mb) - ks_bc
14512  END DO
14513  END DO
14514  END DO
14515  END SUBROUTINE block_2_7_1_1
14516 ! **************************************************************************************************
14517 !> \brief ...
14518 !> \param md_max ...
14519 !> \param kbd ...
14520 !> \param kbc ...
14521 !> \param kad ...
14522 !> \param kac ...
14523 !> \param pbd ...
14524 !> \param pbc ...
14525 !> \param pad ...
14526 !> \param pac ...
14527 !> \param prim ...
14528 !> \param scale ...
14529 ! **************************************************************************************************
14530  SUBROUTINE block_2_7_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
14531  INTEGER :: md_max
14532  REAL(kind=dp) :: kbd(7*md_max), kbc(7*1), kad(2*md_max), kac(2*1), pbd(7*md_max), pbc(7*1), &
14533  pad(2*md_max), pac(2*1), prim(2*7*1*md_max), scale
14534 
14535  INTEGER :: ma, mb, mc, md, p_index
14536  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
14537 
14538  kbd(1:7*md_max) = 0.0_dp
14539  kbc(1:7*1) = 0.0_dp
14540  kad(1:2*md_max) = 0.0_dp
14541  kac(1:2*1) = 0.0_dp
14542  p_index = 0
14543  DO md = 1, md_max
14544  DO mc = 1, 1
14545  DO mb = 1, 7
14546  ks_bd = 0.0_dp
14547  ks_bc = 0.0_dp
14548  p_bd = pbd((md - 1)*7 + mb)
14549  p_bc = pbc((mc - 1)*7 + mb)
14550  DO ma = 1, 2
14551  p_index = p_index + 1
14552  tmp = scale*prim(p_index)
14553  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
14554  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
14555  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
14556  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
14557  END DO
14558  kbd((md - 1)*7 + mb) = kbd((md - 1)*7 + mb) - ks_bd
14559  kbc((mc - 1)*7 + mb) = kbc((mc - 1)*7 + mb) - ks_bc
14560  END DO
14561  END DO
14562  END DO
14563  END SUBROUTINE block_2_7_1
14564 ! **************************************************************************************************
14565 !> \brief ...
14566 !> \param mc_max ...
14567 !> \param md_max ...
14568 !> \param kbd ...
14569 !> \param kbc ...
14570 !> \param kad ...
14571 !> \param kac ...
14572 !> \param pbd ...
14573 !> \param pbc ...
14574 !> \param pad ...
14575 !> \param pac ...
14576 !> \param prim ...
14577 !> \param scale ...
14578 ! **************************************************************************************************
14579  SUBROUTINE block_2_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
14580  INTEGER :: mc_max, md_max
14581  REAL(kind=dp) :: kbd(7*md_max), kbc(7*mc_max), kad(2*md_max), kac(2*mc_max), pbd(7*md_max), &
14582  pbc(7*mc_max), pad(2*md_max), pac(2*mc_max), prim(2*7*mc_max*md_max), scale
14583 
14584  INTEGER :: ma, mb, mc, md, p_index
14585  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
14586 
14587  kbd(1:7*md_max) = 0.0_dp
14588  kbc(1:7*mc_max) = 0.0_dp
14589  kad(1:2*md_max) = 0.0_dp
14590  kac(1:2*mc_max) = 0.0_dp
14591  p_index = 0
14592  DO md = 1, md_max
14593  DO mc = 1, mc_max
14594  DO mb = 1, 7
14595  ks_bd = 0.0_dp
14596  ks_bc = 0.0_dp
14597  p_bd = pbd((md - 1)*7 + mb)
14598  p_bc = pbc((mc - 1)*7 + mb)
14599  DO ma = 1, 2
14600  p_index = p_index + 1
14601  tmp = scale*prim(p_index)
14602  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
14603  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
14604  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
14605  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
14606  END DO
14607  kbd((md - 1)*7 + mb) = kbd((md - 1)*7 + mb) - ks_bd
14608  kbc((mc - 1)*7 + mb) = kbc((mc - 1)*7 + mb) - ks_bc
14609  END DO
14610  END DO
14611  END DO
14612  END SUBROUTINE block_2_7
14613 ! **************************************************************************************************
14614 !> \brief ...
14615 !> \param kbd ...
14616 !> \param kbc ...
14617 !> \param kad ...
14618 !> \param kac ...
14619 !> \param pbd ...
14620 !> \param pbc ...
14621 !> \param pad ...
14622 !> \param pac ...
14623 !> \param prim ...
14624 !> \param scale ...
14625 ! **************************************************************************************************
14626  SUBROUTINE block_2_9_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
14627  REAL(kind=dp) :: kbd(9*1), kbc(9*1), kad(2*1), kac(2*1), &
14628  pbd(9*1), pbc(9*1), pad(2*1), &
14629  pac(2*1), prim(2*9*1*1), scale
14630 
14631  INTEGER :: ma, mb, mc, md, p_index
14632  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
14633 
14634  kbd(1:9*1) = 0.0_dp
14635  kbc(1:9*1) = 0.0_dp
14636  kad(1:2*1) = 0.0_dp
14637  kac(1:2*1) = 0.0_dp
14638  p_index = 0
14639  DO md = 1, 1
14640  DO mc = 1, 1
14641  DO mb = 1, 9
14642  ks_bd = 0.0_dp
14643  ks_bc = 0.0_dp
14644  p_bd = pbd((md - 1)*9 + mb)
14645  p_bc = pbc((mc - 1)*9 + mb)
14646  DO ma = 1, 2
14647  p_index = p_index + 1
14648  tmp = scale*prim(p_index)
14649  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
14650  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
14651  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
14652  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
14653  END DO
14654  kbd((md - 1)*9 + mb) = kbd((md - 1)*9 + mb) - ks_bd
14655  kbc((mc - 1)*9 + mb) = kbc((mc - 1)*9 + mb) - ks_bc
14656  END DO
14657  END DO
14658  END DO
14659  END SUBROUTINE block_2_9_1_1
14660 ! **************************************************************************************************
14661 !> \brief ...
14662 !> \param md_max ...
14663 !> \param kbd ...
14664 !> \param kbc ...
14665 !> \param kad ...
14666 !> \param kac ...
14667 !> \param pbd ...
14668 !> \param pbc ...
14669 !> \param pad ...
14670 !> \param pac ...
14671 !> \param prim ...
14672 !> \param scale ...
14673 ! **************************************************************************************************
14674  SUBROUTINE block_2_9_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
14675  INTEGER :: md_max
14676  REAL(kind=dp) :: kbd(9*md_max), kbc(9*1), kad(2*md_max), kac(2*1), pbd(9*md_max), pbc(9*1), &
14677  pad(2*md_max), pac(2*1), prim(2*9*1*md_max), scale
14678 
14679  INTEGER :: ma, mb, mc, md, p_index
14680  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
14681 
14682  kbd(1:9*md_max) = 0.0_dp
14683  kbc(1:9*1) = 0.0_dp
14684  kad(1:2*md_max) = 0.0_dp
14685  kac(1:2*1) = 0.0_dp
14686  p_index = 0
14687  DO md = 1, md_max
14688  DO mc = 1, 1
14689  DO mb = 1, 9
14690  ks_bd = 0.0_dp
14691  ks_bc = 0.0_dp
14692  p_bd = pbd((md - 1)*9 + mb)
14693  p_bc = pbc((mc - 1)*9 + mb)
14694  DO ma = 1, 2
14695  p_index = p_index + 1
14696  tmp = scale*prim(p_index)
14697  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
14698  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
14699  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
14700  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
14701  END DO
14702  kbd((md - 1)*9 + mb) = kbd((md - 1)*9 + mb) - ks_bd
14703  kbc((mc - 1)*9 + mb) = kbc((mc - 1)*9 + mb) - ks_bc
14704  END DO
14705  END DO
14706  END DO
14707  END SUBROUTINE block_2_9_1
14708 ! **************************************************************************************************
14709 !> \brief ...
14710 !> \param mc_max ...
14711 !> \param md_max ...
14712 !> \param kbd ...
14713 !> \param kbc ...
14714 !> \param kad ...
14715 !> \param kac ...
14716 !> \param pbd ...
14717 !> \param pbc ...
14718 !> \param pad ...
14719 !> \param pac ...
14720 !> \param prim ...
14721 !> \param scale ...
14722 ! **************************************************************************************************
14723  SUBROUTINE block_2_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
14724  INTEGER :: mc_max, md_max
14725  REAL(kind=dp) :: kbd(9*md_max), kbc(9*mc_max), kad(2*md_max), kac(2*mc_max), pbd(9*md_max), &
14726  pbc(9*mc_max), pad(2*md_max), pac(2*mc_max), prim(2*9*mc_max*md_max), scale
14727 
14728  INTEGER :: ma, mb, mc, md, p_index
14729  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
14730 
14731  kbd(1:9*md_max) = 0.0_dp
14732  kbc(1:9*mc_max) = 0.0_dp
14733  kad(1:2*md_max) = 0.0_dp
14734  kac(1:2*mc_max) = 0.0_dp
14735  p_index = 0
14736  DO md = 1, md_max
14737  DO mc = 1, mc_max
14738  DO mb = 1, 9
14739  ks_bd = 0.0_dp
14740  ks_bc = 0.0_dp
14741  p_bd = pbd((md - 1)*9 + mb)
14742  p_bc = pbc((mc - 1)*9 + mb)
14743  DO ma = 1, 2
14744  p_index = p_index + 1
14745  tmp = scale*prim(p_index)
14746  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
14747  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
14748  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
14749  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
14750  END DO
14751  kbd((md - 1)*9 + mb) = kbd((md - 1)*9 + mb) - ks_bd
14752  kbc((mc - 1)*9 + mb) = kbc((mc - 1)*9 + mb) - ks_bc
14753  END DO
14754  END DO
14755  END DO
14756  END SUBROUTINE block_2_9
14757 ! **************************************************************************************************
14758 !> \brief ...
14759 !> \param mc_max ...
14760 !> \param md_max ...
14761 !> \param kbd ...
14762 !> \param kbc ...
14763 !> \param kad ...
14764 !> \param kac ...
14765 !> \param pbd ...
14766 !> \param pbc ...
14767 !> \param pad ...
14768 !> \param pac ...
14769 !> \param prim ...
14770 !> \param scale ...
14771 ! **************************************************************************************************
14772  SUBROUTINE block_2_10(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
14773  INTEGER :: mc_max, md_max
14774  REAL(kind=dp) :: kbd(10*md_max), kbc(10*mc_max), kad(2*md_max), kac(2*mc_max), &
14775  pbd(10*md_max), pbc(10*mc_max), pad(2*md_max), pac(2*mc_max), prim(2*10*mc_max*md_max), &
14776  scale
14777 
14778  INTEGER :: ma, mb, mc, md, p_index
14779  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
14780 
14781  kbd(1:10*md_max) = 0.0_dp
14782  kbc(1:10*mc_max) = 0.0_dp
14783  kad(1:2*md_max) = 0.0_dp
14784  kac(1:2*mc_max) = 0.0_dp
14785  p_index = 0
14786  DO md = 1, md_max
14787  DO mc = 1, mc_max
14788  DO mb = 1, 10
14789  ks_bd = 0.0_dp
14790  ks_bc = 0.0_dp
14791  p_bd = pbd((md - 1)*10 + mb)
14792  p_bc = pbc((mc - 1)*10 + mb)
14793  DO ma = 1, 2
14794  p_index = p_index + 1
14795  tmp = scale*prim(p_index)
14796  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
14797  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
14798  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
14799  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
14800  END DO
14801  kbd((md - 1)*10 + mb) = kbd((md - 1)*10 + mb) - ks_bd
14802  kbc((mc - 1)*10 + mb) = kbc((mc - 1)*10 + mb) - ks_bc
14803  END DO
14804  END DO
14805  END DO
14806  END SUBROUTINE block_2_10
14807 ! **************************************************************************************************
14808 !> \brief ...
14809 !> \param mc_max ...
14810 !> \param md_max ...
14811 !> \param kbd ...
14812 !> \param kbc ...
14813 !> \param kad ...
14814 !> \param kac ...
14815 !> \param pbd ...
14816 !> \param pbc ...
14817 !> \param pad ...
14818 !> \param pac ...
14819 !> \param prim ...
14820 !> \param scale ...
14821 ! **************************************************************************************************
14822  SUBROUTINE block_2_11(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
14823  INTEGER :: mc_max, md_max
14824  REAL(kind=dp) :: kbd(11*md_max), kbc(11*mc_max), kad(2*md_max), kac(2*mc_max), &
14825  pbd(11*md_max), pbc(11*mc_max), pad(2*md_max), pac(2*mc_max), prim(2*11*mc_max*md_max), &
14826  scale
14827 
14828  INTEGER :: ma, mb, mc, md, p_index
14829  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
14830 
14831  kbd(1:11*md_max) = 0.0_dp
14832  kbc(1:11*mc_max) = 0.0_dp
14833  kad(1:2*md_max) = 0.0_dp
14834  kac(1:2*mc_max) = 0.0_dp
14835  p_index = 0
14836  DO md = 1, md_max
14837  DO mc = 1, mc_max
14838  DO mb = 1, 11
14839  ks_bd = 0.0_dp
14840  ks_bc = 0.0_dp
14841  p_bd = pbd((md - 1)*11 + mb)
14842  p_bc = pbc((mc - 1)*11 + mb)
14843  DO ma = 1, 2
14844  p_index = p_index + 1
14845  tmp = scale*prim(p_index)
14846  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
14847  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
14848  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
14849  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
14850  END DO
14851  kbd((md - 1)*11 + mb) = kbd((md - 1)*11 + mb) - ks_bd
14852  kbc((mc - 1)*11 + mb) = kbc((mc - 1)*11 + mb) - ks_bc
14853  END DO
14854  END DO
14855  END DO
14856  END SUBROUTINE block_2_11
14857 ! **************************************************************************************************
14858 !> \brief ...
14859 !> \param mc_max ...
14860 !> \param md_max ...
14861 !> \param kbd ...
14862 !> \param kbc ...
14863 !> \param kad ...
14864 !> \param kac ...
14865 !> \param pbd ...
14866 !> \param pbc ...
14867 !> \param pad ...
14868 !> \param pac ...
14869 !> \param prim ...
14870 !> \param scale ...
14871 ! **************************************************************************************************
14872  SUBROUTINE block_2_15(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
14873  INTEGER :: mc_max, md_max
14874  REAL(kind=dp) :: kbd(15*md_max), kbc(15*mc_max), kad(2*md_max), kac(2*mc_max), &
14875  pbd(15*md_max), pbc(15*mc_max), pad(2*md_max), pac(2*mc_max), prim(2*15*mc_max*md_max), &
14876  scale
14877 
14878  INTEGER :: ma, mb, mc, md, p_index
14879  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
14880 
14881  kbd(1:15*md_max) = 0.0_dp
14882  kbc(1:15*mc_max) = 0.0_dp
14883  kad(1:2*md_max) = 0.0_dp
14884  kac(1:2*mc_max) = 0.0_dp
14885  p_index = 0
14886  DO md = 1, md_max
14887  DO mc = 1, mc_max
14888  DO mb = 1, 15
14889  ks_bd = 0.0_dp
14890  ks_bc = 0.0_dp
14891  p_bd = pbd((md - 1)*15 + mb)
14892  p_bc = pbc((mc - 1)*15 + mb)
14893  DO ma = 1, 2
14894  p_index = p_index + 1
14895  tmp = scale*prim(p_index)
14896  ks_bc = ks_bc + tmp*pad((md - 1)*2 + ma)
14897  ks_bd = ks_bd + tmp*pac((mc - 1)*2 + ma)
14898  kad((md - 1)*2 + ma) = kad((md - 1)*2 + ma) - tmp*p_bc
14899  kac((mc - 1)*2 + ma) = kac((mc - 1)*2 + ma) - tmp*p_bd
14900  END DO
14901  kbd((md - 1)*15 + mb) = kbd((md - 1)*15 + mb) - ks_bd
14902  kbc((mc - 1)*15 + mb) = kbc((mc - 1)*15 + mb) - ks_bc
14903  END DO
14904  END DO
14905  END DO
14906  END SUBROUTINE block_2_15
14907 ! **************************************************************************************************
14908 !> \brief ...
14909 !> \param kbd ...
14910 !> \param kbc ...
14911 !> \param kad ...
14912 !> \param kac ...
14913 !> \param pbd ...
14914 !> \param pbc ...
14915 !> \param pad ...
14916 !> \param pac ...
14917 !> \param prim ...
14918 !> \param scale ...
14919 ! **************************************************************************************************
14920  SUBROUTINE block_3_1_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
14921  REAL(kind=dp) :: kbd(1*1), kbc(1*1), kad(3*1), kac(3*1), &
14922  pbd(1*1), pbc(1*1), pad(3*1), &
14923  pac(3*1), prim(3*1*1*1), scale
14924 
14925  INTEGER :: ma, mb, mc, md, p_index
14926  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
14927 
14928  kbd(1:1*1) = 0.0_dp
14929  kbc(1:1*1) = 0.0_dp
14930  kad(1:3*1) = 0.0_dp
14931  kac(1:3*1) = 0.0_dp
14932  p_index = 0
14933  DO md = 1, 1
14934  DO mc = 1, 1
14935  DO mb = 1, 1
14936  ks_bd = 0.0_dp
14937  ks_bc = 0.0_dp
14938  p_bd = pbd((md - 1)*1 + mb)
14939  p_bc = pbc((mc - 1)*1 + mb)
14940  DO ma = 1, 3
14941  p_index = p_index + 1
14942  tmp = scale*prim(p_index)
14943  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
14944  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
14945  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
14946  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
14947  END DO
14948  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
14949  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
14950  END DO
14951  END DO
14952  END DO
14953  END SUBROUTINE block_3_1_1_1
14954 ! **************************************************************************************************
14955 !> \brief ...
14956 !> \param kbd ...
14957 !> \param kbc ...
14958 !> \param kad ...
14959 !> \param kac ...
14960 !> \param pbd ...
14961 !> \param pbc ...
14962 !> \param pad ...
14963 !> \param pac ...
14964 !> \param prim ...
14965 !> \param scale ...
14966 ! **************************************************************************************************
14967  SUBROUTINE block_3_1_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
14968  REAL(kind=dp) :: kbd(1*2), kbc(1*1), kad(3*2), kac(3*1), &
14969  pbd(1*2), pbc(1*1), pad(3*2), &
14970  pac(3*1), prim(3*1*1*2), scale
14971 
14972  INTEGER :: ma, mb, mc, md, p_index
14973  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
14974 
14975  kbd(1:1*2) = 0.0_dp
14976  kbc(1:1*1) = 0.0_dp
14977  kad(1:3*2) = 0.0_dp
14978  kac(1:3*1) = 0.0_dp
14979  p_index = 0
14980  DO md = 1, 2
14981  DO mc = 1, 1
14982  DO mb = 1, 1
14983  ks_bd = 0.0_dp
14984  ks_bc = 0.0_dp
14985  p_bd = pbd((md - 1)*1 + mb)
14986  p_bc = pbc((mc - 1)*1 + mb)
14987  DO ma = 1, 3
14988  p_index = p_index + 1
14989  tmp = scale*prim(p_index)
14990  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
14991  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
14992  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
14993  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
14994  END DO
14995  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
14996  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
14997  END DO
14998  END DO
14999  END DO
15000  END SUBROUTINE block_3_1_1_2
15001 ! **************************************************************************************************
15002 !> \brief ...
15003 !> \param kbd ...
15004 !> \param kbc ...
15005 !> \param kad ...
15006 !> \param kac ...
15007 !> \param pbd ...
15008 !> \param pbc ...
15009 !> \param pad ...
15010 !> \param pac ...
15011 !> \param prim ...
15012 !> \param scale ...
15013 ! **************************************************************************************************
15014  SUBROUTINE block_3_1_1_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
15015  REAL(kind=dp) :: kbd(1*3), kbc(1*1), kad(3*3), kac(3*1), &
15016  pbd(1*3), pbc(1*1), pad(3*3), &
15017  pac(3*1), prim(3*1*1*3), scale
15018 
15019  INTEGER :: ma, mb, mc, md, p_index
15020  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
15021 
15022  kbd(1:1*3) = 0.0_dp
15023  kbc(1:1*1) = 0.0_dp
15024  kad(1:3*3) = 0.0_dp
15025  kac(1:3*1) = 0.0_dp
15026  p_index = 0
15027  DO md = 1, 3
15028  DO mc = 1, 1
15029  DO mb = 1, 1
15030  ks_bd = 0.0_dp
15031  ks_bc = 0.0_dp
15032  p_bd = pbd((md - 1)*1 + mb)
15033  p_bc = pbc((mc - 1)*1 + mb)
15034  DO ma = 1, 3
15035  p_index = p_index + 1
15036  tmp = scale*prim(p_index)
15037  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
15038  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
15039  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
15040  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
15041  END DO
15042  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
15043  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
15044  END DO
15045  END DO
15046  END DO
15047  END SUBROUTINE block_3_1_1_3
15048 ! **************************************************************************************************
15049 !> \brief ...
15050 !> \param kbd ...
15051 !> \param kbc ...
15052 !> \param kad ...
15053 !> \param kac ...
15054 !> \param pbd ...
15055 !> \param pbc ...
15056 !> \param pad ...
15057 !> \param pac ...
15058 !> \param prim ...
15059 !> \param scale ...
15060 ! **************************************************************************************************
15061  SUBROUTINE block_3_1_1_4(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
15062  REAL(kind=dp) :: kbd(1*4), kbc(1*1), kad(3*4), kac(3*1), &
15063  pbd(1*4), pbc(1*1), pad(3*4), &
15064  pac(3*1), prim(3*1*1*4), scale
15065 
15066  INTEGER :: ma, mb, mc, md, p_index
15067  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
15068 
15069  kbd(1:1*4) = 0.0_dp
15070  kbc(1:1*1) = 0.0_dp
15071  kad(1:3*4) = 0.0_dp
15072  kac(1:3*1) = 0.0_dp
15073  p_index = 0
15074  DO md = 1, 4
15075  DO mc = 1, 1
15076  DO mb = 1, 1
15077  ks_bd = 0.0_dp
15078  ks_bc = 0.0_dp
15079  p_bd = pbd((md - 1)*1 + mb)
15080  p_bc = pbc((mc - 1)*1 + mb)
15081  DO ma = 1, 3
15082  p_index = p_index + 1
15083  tmp = scale*prim(p_index)
15084  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
15085  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
15086  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
15087  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
15088  END DO
15089  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
15090  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
15091  END DO
15092  END DO
15093  END DO
15094  END SUBROUTINE block_3_1_1_4
15095 ! **************************************************************************************************
15096 !> \brief ...
15097 !> \param kbd ...
15098 !> \param kbc ...
15099 !> \param kad ...
15100 !> \param kac ...
15101 !> \param pbd ...
15102 !> \param pbc ...
15103 !> \param pad ...
15104 !> \param pac ...
15105 !> \param prim ...
15106 !> \param scale ...
15107 ! **************************************************************************************************
15108  SUBROUTINE block_3_1_1_5(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
15109  REAL(kind=dp) :: kbd(1*5), kbc(1*1), kad(3*5), kac(3*1), &
15110  pbd(1*5), pbc(1*1), pad(3*5), &
15111  pac(3*1), prim(3*1*1*5), scale
15112 
15113  INTEGER :: ma, mb, mc, md, p_index
15114  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
15115 
15116  kbd(1:1*5) = 0.0_dp
15117  kbc(1:1*1) = 0.0_dp
15118  kad(1:3*5) = 0.0_dp
15119  kac(1:3*1) = 0.0_dp
15120  p_index = 0
15121  DO md = 1, 5
15122  DO mc = 1, 1
15123  DO mb = 1, 1
15124  ks_bd = 0.0_dp
15125  ks_bc = 0.0_dp
15126  p_bd = pbd((md - 1)*1 + mb)
15127  p_bc = pbc((mc - 1)*1 + mb)
15128  DO ma = 1, 3
15129  p_index = p_index + 1
15130  tmp = scale*prim(p_index)
15131  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
15132  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
15133  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
15134  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
15135  END DO
15136  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
15137  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
15138  END DO
15139  END DO
15140  END DO
15141  END SUBROUTINE block_3_1_1_5
15142 ! **************************************************************************************************
15143 !> \brief ...
15144 !> \param kbd ...
15145 !> \param kbc ...
15146 !> \param kad ...
15147 !> \param kac ...
15148 !> \param pbd ...
15149 !> \param pbc ...
15150 !> \param pad ...
15151 !> \param pac ...
15152 !> \param prim ...
15153 !> \param scale ...
15154 ! **************************************************************************************************
15155  SUBROUTINE block_3_1_1_6(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
15156  REAL(kind=dp) :: kbd(1*6), kbc(1*1), kad(3*6), kac(3*1), &
15157  pbd(1*6), pbc(1*1), pad(3*6), &
15158  pac(3*1), prim(3*1*1*6), scale
15159 
15160  INTEGER :: ma, mb, mc, md, p_index
15161  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
15162 
15163  kbd(1:1*6) = 0.0_dp
15164  kbc(1:1*1) = 0.0_dp
15165  kad(1:3*6) = 0.0_dp
15166  kac(1:3*1) = 0.0_dp
15167  p_index = 0
15168  DO md = 1, 6
15169  DO mc = 1, 1
15170  DO mb = 1, 1
15171  ks_bd = 0.0_dp
15172  ks_bc = 0.0_dp
15173  p_bd = pbd((md - 1)*1 + mb)
15174  p_bc = pbc((mc - 1)*1 + mb)
15175  DO ma = 1, 3
15176  p_index = p_index + 1
15177  tmp = scale*prim(p_index)
15178  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
15179  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
15180  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
15181  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
15182  END DO
15183  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
15184  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
15185  END DO
15186  END DO
15187  END DO
15188  END SUBROUTINE block_3_1_1_6
15189 ! **************************************************************************************************
15190 !> \brief ...
15191 !> \param md_max ...
15192 !> \param kbd ...
15193 !> \param kbc ...
15194 !> \param kad ...
15195 !> \param kac ...
15196 !> \param pbd ...
15197 !> \param pbc ...
15198 !> \param pad ...
15199 !> \param pac ...
15200 !> \param prim ...
15201 !> \param scale ...
15202 ! **************************************************************************************************
15203  SUBROUTINE block_3_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
15204  INTEGER :: md_max
15205  REAL(kind=dp) :: kbd(1*md_max), kbc(1*1), kad(3*md_max), kac(3*1), pbd(1*md_max), pbc(1*1), &
15206  pad(3*md_max), pac(3*1), prim(3*1*1*md_max), scale
15207 
15208  INTEGER :: ma, mb, mc, md, p_index
15209  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
15210 
15211  kbd(1:1*md_max) = 0.0_dp
15212  kbc(1:1*1) = 0.0_dp
15213  kad(1:3*md_max) = 0.0_dp
15214  kac(1:3*1) = 0.0_dp
15215  p_index = 0
15216  DO md = 1, md_max
15217  DO mc = 1, 1
15218  DO mb = 1, 1
15219  ks_bd = 0.0_dp
15220  ks_bc = 0.0_dp
15221  p_bd = pbd((md - 1)*1 + mb)
15222  p_bc = pbc((mc - 1)*1 + mb)
15223  DO ma = 1, 3
15224  p_index = p_index + 1
15225  tmp = scale*prim(p_index)
15226  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
15227  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
15228  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
15229  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
15230  END DO
15231  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
15232  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
15233  END DO
15234  END DO
15235  END DO
15236  END SUBROUTINE block_3_1_1
15237 ! **************************************************************************************************
15238 !> \brief ...
15239 !> \param kbd ...
15240 !> \param kbc ...
15241 !> \param kad ...
15242 !> \param kac ...
15243 !> \param pbd ...
15244 !> \param pbc ...
15245 !> \param pad ...
15246 !> \param pac ...
15247 !> \param prim ...
15248 !> \param scale ...
15249 ! **************************************************************************************************
15250  SUBROUTINE block_3_1_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
15251  REAL(kind=dp) :: kbd(1*1), kbc(1*2), kad(3*1), kac(3*2), &
15252  pbd(1*1), pbc(1*2), pad(3*1), &
15253  pac(3*2), prim(3*1*2*1), scale
15254 
15255  INTEGER :: ma, mb, mc, md, p_index
15256  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
15257 
15258  kbd(1:1*1) = 0.0_dp
15259  kbc(1:1*2) = 0.0_dp
15260  kad(1:3*1) = 0.0_dp
15261  kac(1:3*2) = 0.0_dp
15262  p_index = 0
15263  DO md = 1, 1
15264  DO mc = 1, 2
15265  DO mb = 1, 1
15266  ks_bd = 0.0_dp
15267  ks_bc = 0.0_dp
15268  p_bd = pbd((md - 1)*1 + mb)
15269  p_bc = pbc((mc - 1)*1 + mb)
15270  DO ma = 1, 3
15271  p_index = p_index + 1
15272  tmp = scale*prim(p_index)
15273  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
15274  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
15275  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
15276  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
15277  END DO
15278  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
15279  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
15280  END DO
15281  END DO
15282  END DO
15283  END SUBROUTINE block_3_1_2_1
15284 ! **************************************************************************************************
15285 !> \brief ...
15286 !> \param kbd ...
15287 !> \param kbc ...
15288 !> \param kad ...
15289 !> \param kac ...
15290 !> \param pbd ...
15291 !> \param pbc ...
15292 !> \param pad ...
15293 !> \param pac ...
15294 !> \param prim ...
15295 !> \param scale ...
15296 ! **************************************************************************************************
15297  SUBROUTINE block_3_1_2_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
15298  REAL(kind=dp) :: kbd(1*2), kbc(1*2), kad(3*2), kac(3*2), &
15299  pbd(1*2), pbc(1*2), pad(3*2), &
15300  pac(3*2), prim(3*1*2*2), scale
15301 
15302  INTEGER :: ma, mb, mc, md, p_index
15303  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
15304 
15305  kbd(1:1*2) = 0.0_dp
15306  kbc(1:1*2) = 0.0_dp
15307  kad(1:3*2) = 0.0_dp
15308  kac(1:3*2) = 0.0_dp
15309  p_index = 0
15310  DO md = 1, 2
15311  DO mc = 1, 2
15312  DO mb = 1, 1
15313  ks_bd = 0.0_dp
15314  ks_bc = 0.0_dp
15315  p_bd = pbd((md - 1)*1 + mb)
15316  p_bc = pbc((mc - 1)*1 + mb)
15317  DO ma = 1, 3
15318  p_index = p_index + 1
15319  tmp = scale*prim(p_index)
15320  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
15321  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
15322  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
15323  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
15324  END DO
15325  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
15326  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
15327  END DO
15328  END DO
15329  END DO
15330  END SUBROUTINE block_3_1_2_2
15331 ! **************************************************************************************************
15332 !> \brief ...
15333 !> \param kbd ...
15334 !> \param kbc ...
15335 !> \param kad ...
15336 !> \param kac ...
15337 !> \param pbd ...
15338 !> \param pbc ...
15339 !> \param pad ...
15340 !> \param pac ...
15341 !> \param prim ...
15342 !> \param scale ...
15343 ! **************************************************************************************************
15344  SUBROUTINE block_3_1_2_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
15345  REAL(kind=dp) :: kbd(1*3), kbc(1*2), kad(3*3), kac(3*2), &
15346  pbd(1*3), pbc(1*2), pad(3*3), &
15347  pac(3*2), prim(3*1*2*3), scale
15348 
15349  INTEGER :: ma, mb, mc, md, p_index
15350  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
15351 
15352  kbd(1:1*3) = 0.0_dp
15353  kbc(1:1*2) = 0.0_dp
15354  kad(1:3*3) = 0.0_dp
15355  kac(1:3*2) = 0.0_dp
15356  p_index = 0
15357  DO md = 1, 3
15358  DO mc = 1, 2
15359  DO mb = 1, 1
15360  ks_bd = 0.0_dp
15361  ks_bc = 0.0_dp
15362  p_bd = pbd((md - 1)*1 + mb)
15363  p_bc = pbc((mc - 1)*1 + mb)
15364  DO ma = 1, 3
15365  p_index = p_index + 1
15366  tmp = scale*prim(p_index)
15367  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
15368  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
15369  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
15370  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
15371  END DO
15372  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
15373  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
15374  END DO
15375  END DO
15376  END DO
15377  END SUBROUTINE block_3_1_2_3
15378 ! **************************************************************************************************
15379 !> \brief ...
15380 !> \param md_max ...
15381 !> \param kbd ...
15382 !> \param kbc ...
15383 !> \param kad ...
15384 !> \param kac ...
15385 !> \param pbd ...
15386 !> \param pbc ...
15387 !> \param pad ...
15388 !> \param pac ...
15389 !> \param prim ...
15390 !> \param scale ...
15391 ! **************************************************************************************************
15392  SUBROUTINE block_3_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
15393  INTEGER :: md_max
15394  REAL(kind=dp) :: kbd(1*md_max), kbc(1*2), kad(3*md_max), kac(3*2), pbd(1*md_max), pbc(1*2), &
15395  pad(3*md_max), pac(3*2), prim(3*1*2*md_max), scale
15396 
15397  INTEGER :: ma, mb, mc, md, p_index
15398  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
15399 
15400  kbd(1:1*md_max) = 0.0_dp
15401  kbc(1:1*2) = 0.0_dp
15402  kad(1:3*md_max) = 0.0_dp
15403  kac(1:3*2) = 0.0_dp
15404  p_index = 0
15405  DO md = 1, md_max
15406  DO mc = 1, 2
15407  DO mb = 1, 1
15408  ks_bd = 0.0_dp
15409  ks_bc = 0.0_dp
15410  p_bd = pbd((md - 1)*1 + mb)
15411  p_bc = pbc((mc - 1)*1 + mb)
15412  DO ma = 1, 3
15413  p_index = p_index + 1
15414  tmp = scale*prim(p_index)
15415  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
15416  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
15417  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
15418  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
15419  END DO
15420  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
15421  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
15422  END DO
15423  END DO
15424  END DO
15425  END SUBROUTINE block_3_1_2
15426 ! **************************************************************************************************
15427 !> \brief ...
15428 !> \param kbd ...
15429 !> \param kbc ...
15430 !> \param kad ...
15431 !> \param kac ...
15432 !> \param pbd ...
15433 !> \param pbc ...
15434 !> \param pad ...
15435 !> \param pac ...
15436 !> \param prim ...
15437 !> \param scale ...
15438 ! **************************************************************************************************
15439  SUBROUTINE block_3_1_3_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
15440  REAL(kind=dp) :: kbd(1*1), kbc(1*3), kad(3*1), kac(3*3), &
15441  pbd(1*1), pbc(1*3), pad(3*1), &
15442  pac(3*3), prim(3*1*3*1), scale
15443 
15444  INTEGER :: ma, mb, mc, md, p_index
15445  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
15446 
15447  kbd(1:1*1) = 0.0_dp
15448  kbc(1:1*3) = 0.0_dp
15449  kad(1:3*1) = 0.0_dp
15450  kac(1:3*3) = 0.0_dp
15451  p_index = 0
15452  DO md = 1, 1
15453  DO mc = 1, 3
15454  DO mb = 1, 1
15455  ks_bd = 0.0_dp
15456  ks_bc = 0.0_dp
15457  p_bd = pbd((md - 1)*1 + mb)
15458  p_bc = pbc((mc - 1)*1 + mb)
15459  DO ma = 1, 3
15460  p_index = p_index + 1
15461  tmp = scale*prim(p_index)
15462  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
15463  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
15464  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
15465  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
15466  END DO
15467  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
15468  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
15469  END DO
15470  END DO
15471  END DO
15472  END SUBROUTINE block_3_1_3_1
15473 ! **************************************************************************************************
15474 !> \brief ...
15475 !> \param kbd ...
15476 !> \param kbc ...
15477 !> \param kad ...
15478 !> \param kac ...
15479 !> \param pbd ...
15480 !> \param pbc ...
15481 !> \param pad ...
15482 !> \param pac ...
15483 !> \param prim ...
15484 !> \param scale ...
15485 ! **************************************************************************************************
15486  SUBROUTINE block_3_1_3_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
15487  REAL(kind=dp) :: kbd(1*2), kbc(1*3), kad(3*2), kac(3*3), &
15488  pbd(1*2), pbc(1*3), pad(3*2), &
15489  pac(3*3), prim(3*1*3*2), scale
15490 
15491  INTEGER :: ma, mb, mc, md, p_index
15492  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
15493 
15494  kbd(1:1*2) = 0.0_dp
15495  kbc(1:1*3) = 0.0_dp
15496  kad(1:3*2) = 0.0_dp
15497  kac(1:3*3) = 0.0_dp
15498  p_index = 0
15499  DO md = 1, 2
15500  DO mc = 1, 3
15501  DO mb = 1, 1
15502  ks_bd = 0.0_dp
15503  ks_bc = 0.0_dp
15504  p_bd = pbd((md - 1)*1 + mb)
15505  p_bc = pbc((mc - 1)*1 + mb)
15506  DO ma = 1, 3
15507  p_index = p_index + 1
15508  tmp = scale*prim(p_index)
15509  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
15510  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
15511  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
15512  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
15513  END DO
15514  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
15515  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
15516  END DO
15517  END DO
15518  END DO
15519  END SUBROUTINE block_3_1_3_2
15520 ! **************************************************************************************************
15521 !> \brief ...
15522 !> \param md_max ...
15523 !> \param kbd ...
15524 !> \param kbc ...
15525 !> \param kad ...
15526 !> \param kac ...
15527 !> \param pbd ...
15528 !> \param pbc ...
15529 !> \param pad ...
15530 !> \param pac ...
15531 !> \param prim ...
15532 !> \param scale ...
15533 ! **************************************************************************************************
15534  SUBROUTINE block_3_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
15535  INTEGER :: md_max
15536  REAL(kind=dp) :: kbd(1*md_max), kbc(1*3), kad(3*md_max), kac(3*3), pbd(1*md_max), pbc(1*3), &
15537  pad(3*md_max), pac(3*3), prim(3*1*3*md_max), scale
15538 
15539  INTEGER :: ma, mb, mc, md, p_index
15540  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
15541 
15542  kbd(1:1*md_max) = 0.0_dp
15543  kbc(1:1*3) = 0.0_dp
15544  kad(1:3*md_max) = 0.0_dp
15545  kac(1:3*3) = 0.0_dp
15546  p_index = 0
15547  DO md = 1, md_max
15548  DO mc = 1, 3
15549  DO mb = 1, 1
15550  ks_bd = 0.0_dp
15551  ks_bc = 0.0_dp
15552  p_bd = pbd((md - 1)*1 + mb)
15553  p_bc = pbc((mc - 1)*1 + mb)
15554  DO ma = 1, 3
15555  p_index = p_index + 1
15556  tmp = scale*prim(p_index)
15557  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
15558  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
15559  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
15560  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
15561  END DO
15562  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
15563  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
15564  END DO
15565  END DO
15566  END DO
15567  END SUBROUTINE block_3_1_3
15568 ! **************************************************************************************************
15569 !> \brief ...
15570 !> \param kbd ...
15571 !> \param kbc ...
15572 !> \param kad ...
15573 !> \param kac ...
15574 !> \param pbd ...
15575 !> \param pbc ...
15576 !> \param pad ...
15577 !> \param pac ...
15578 !> \param prim ...
15579 !> \param scale ...
15580 ! **************************************************************************************************
15581  SUBROUTINE block_3_1_4_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
15582  REAL(kind=dp) :: kbd(1*1), kbc(1*4), kad(3*1), kac(3*4), &
15583  pbd(1*1), pbc(1*4), pad(3*1), &
15584  pac(3*4), prim(3*1*4*1), scale
15585 
15586  INTEGER :: ma, mb, mc, md, p_index
15587  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
15588 
15589  kbd(1:1*1) = 0.0_dp
15590  kbc(1:1*4) = 0.0_dp
15591  kad(1:3*1) = 0.0_dp
15592  kac(1:3*4) = 0.0_dp
15593  p_index = 0
15594  DO md = 1, 1
15595  DO mc = 1, 4
15596  DO mb = 1, 1
15597  ks_bd = 0.0_dp
15598  ks_bc = 0.0_dp
15599  p_bd = pbd((md - 1)*1 + mb)
15600  p_bc = pbc((mc - 1)*1 + mb)
15601  DO ma = 1, 3
15602  p_index = p_index + 1
15603  tmp = scale*prim(p_index)
15604  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
15605  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
15606  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
15607  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
15608  END DO
15609  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
15610  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
15611  END DO
15612  END DO
15613  END DO
15614  END SUBROUTINE block_3_1_4_1
15615 ! **************************************************************************************************
15616 !> \brief ...
15617 !> \param md_max ...
15618 !> \param kbd ...
15619 !> \param kbc ...
15620 !> \param kad ...
15621 !> \param kac ...
15622 !> \param pbd ...
15623 !> \param pbc ...
15624 !> \param pad ...
15625 !> \param pac ...
15626 !> \param prim ...
15627 !> \param scale ...
15628 ! **************************************************************************************************
15629  SUBROUTINE block_3_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
15630  INTEGER :: md_max
15631  REAL(kind=dp) :: kbd(1*md_max), kbc(1*4), kad(3*md_max), kac(3*4), pbd(1*md_max), pbc(1*4), &
15632  pad(3*md_max), pac(3*4), prim(3*1*4*md_max), scale
15633 
15634  INTEGER :: ma, mb, mc, md, p_index
15635  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
15636 
15637  kbd(1:1*md_max) = 0.0_dp
15638  kbc(1:1*4) = 0.0_dp
15639  kad(1:3*md_max) = 0.0_dp
15640  kac(1:3*4) = 0.0_dp
15641  p_index = 0
15642  DO md = 1, md_max
15643  DO mc = 1, 4
15644  DO mb = 1, 1
15645  ks_bd = 0.0_dp
15646  ks_bc = 0.0_dp
15647  p_bd = pbd((md - 1)*1 + mb)
15648  p_bc = pbc((mc - 1)*1 + mb)
15649  DO ma = 1, 3
15650  p_index = p_index + 1
15651  tmp = scale*prim(p_index)
15652  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
15653  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
15654  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
15655  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
15656  END DO
15657  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
15658  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
15659  END DO
15660  END DO
15661  END DO
15662  END SUBROUTINE block_3_1_4
15663 ! **************************************************************************************************
15664 !> \brief ...
15665 !> \param kbd ...
15666 !> \param kbc ...
15667 !> \param kad ...
15668 !> \param kac ...
15669 !> \param pbd ...
15670 !> \param pbc ...
15671 !> \param pad ...
15672 !> \param pac ...
15673 !> \param prim ...
15674 !> \param scale ...
15675 ! **************************************************************************************************
15676  SUBROUTINE block_3_1_5_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
15677  REAL(kind=dp) :: kbd(1*1), kbc(1*5), kad(3*1), kac(3*5), &
15678  pbd(1*1), pbc(1*5), pad(3*1), &
15679  pac(3*5), prim(3*1*5*1), scale
15680 
15681  INTEGER :: ma, mb, mc, md, p_index
15682  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
15683 
15684  kbd(1:1*1) = 0.0_dp
15685  kbc(1:1*5) = 0.0_dp
15686  kad(1:3*1) = 0.0_dp
15687  kac(1:3*5) = 0.0_dp
15688  p_index = 0
15689  DO md = 1, 1
15690  DO mc = 1, 5
15691  DO mb = 1, 1
15692  ks_bd = 0.0_dp
15693  ks_bc = 0.0_dp
15694  p_bd = pbd((md - 1)*1 + mb)
15695  p_bc = pbc((mc - 1)*1 + mb)
15696  DO ma = 1, 3
15697  p_index = p_index + 1
15698  tmp = scale*prim(p_index)
15699  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
15700  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
15701  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
15702  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
15703  END DO
15704  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
15705  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
15706  END DO
15707  END DO
15708  END DO
15709  END SUBROUTINE block_3_1_5_1
15710 ! **************************************************************************************************
15711 !> \brief ...
15712 !> \param md_max ...
15713 !> \param kbd ...
15714 !> \param kbc ...
15715 !> \param kad ...
15716 !> \param kac ...
15717 !> \param pbd ...
15718 !> \param pbc ...
15719 !> \param pad ...
15720 !> \param pac ...
15721 !> \param prim ...
15722 !> \param scale ...
15723 ! **************************************************************************************************
15724  SUBROUTINE block_3_1_5(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
15725  INTEGER :: md_max
15726  REAL(kind=dp) :: kbd(1*md_max), kbc(1*5), kad(3*md_max), kac(3*5), pbd(1*md_max), pbc(1*5), &
15727  pad(3*md_max), pac(3*5), prim(3*1*5*md_max), scale
15728 
15729  INTEGER :: ma, mb, mc, md, p_index
15730  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
15731 
15732  kbd(1:1*md_max) = 0.0_dp
15733  kbc(1:1*5) = 0.0_dp
15734  kad(1:3*md_max) = 0.0_dp
15735  kac(1:3*5) = 0.0_dp
15736  p_index = 0
15737  DO md = 1, md_max
15738  DO mc = 1, 5
15739  DO mb = 1, 1
15740  ks_bd = 0.0_dp
15741  ks_bc = 0.0_dp
15742  p_bd = pbd((md - 1)*1 + mb)
15743  p_bc = pbc((mc - 1)*1 + mb)
15744  DO ma = 1, 3
15745  p_index = p_index + 1
15746  tmp = scale*prim(p_index)
15747  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
15748  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
15749  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
15750  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
15751  END DO
15752  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
15753  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
15754  END DO
15755  END DO
15756  END DO
15757  END SUBROUTINE block_3_1_5
15758 ! **************************************************************************************************
15759 !> \brief ...
15760 !> \param kbd ...
15761 !> \param kbc ...
15762 !> \param kad ...
15763 !> \param kac ...
15764 !> \param pbd ...
15765 !> \param pbc ...
15766 !> \param pad ...
15767 !> \param pac ...
15768 !> \param prim ...
15769 !> \param scale ...
15770 ! **************************************************************************************************
15771  SUBROUTINE block_3_1_6_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
15772  REAL(kind=dp) :: kbd(1*1), kbc(1*6), kad(3*1), kac(3*6), &
15773  pbd(1*1), pbc(1*6), pad(3*1), &
15774  pac(3*6), prim(3*1*6*1), scale
15775 
15776  INTEGER :: ma, mb, mc, md, p_index
15777  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
15778 
15779  kbd(1:1*1) = 0.0_dp
15780  kbc(1:1*6) = 0.0_dp
15781  kad(1:3*1) = 0.0_dp
15782  kac(1:3*6) = 0.0_dp
15783  p_index = 0
15784  DO md = 1, 1
15785  DO mc = 1, 6
15786  DO mb = 1, 1
15787  ks_bd = 0.0_dp
15788  ks_bc = 0.0_dp
15789  p_bd = pbd((md - 1)*1 + mb)
15790  p_bc = pbc((mc - 1)*1 + mb)
15791  DO ma = 1, 3
15792  p_index = p_index + 1
15793  tmp = scale*prim(p_index)
15794  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
15795  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
15796  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
15797  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
15798  END DO
15799  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
15800  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
15801  END DO
15802  END DO
15803  END DO
15804  END SUBROUTINE block_3_1_6_1
15805 ! **************************************************************************************************
15806 !> \brief ...
15807 !> \param md_max ...
15808 !> \param kbd ...
15809 !> \param kbc ...
15810 !> \param kad ...
15811 !> \param kac ...
15812 !> \param pbd ...
15813 !> \param pbc ...
15814 !> \param pad ...
15815 !> \param pac ...
15816 !> \param prim ...
15817 !> \param scale ...
15818 ! **************************************************************************************************
15819  SUBROUTINE block_3_1_6(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
15820  INTEGER :: md_max
15821  REAL(kind=dp) :: kbd(1*md_max), kbc(1*6), kad(3*md_max), kac(3*6), pbd(1*md_max), pbc(1*6), &
15822  pad(3*md_max), pac(3*6), prim(3*1*6*md_max), scale
15823 
15824  INTEGER :: ma, mb, mc, md, p_index
15825  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
15826 
15827  kbd(1:1*md_max) = 0.0_dp
15828  kbc(1:1*6) = 0.0_dp
15829  kad(1:3*md_max) = 0.0_dp
15830  kac(1:3*6) = 0.0_dp
15831  p_index = 0
15832  DO md = 1, md_max
15833  DO mc = 1, 6
15834  DO mb = 1, 1
15835  ks_bd = 0.0_dp
15836  ks_bc = 0.0_dp
15837  p_bd = pbd((md - 1)*1 + mb)
15838  p_bc = pbc((mc - 1)*1 + mb)
15839  DO ma = 1, 3
15840  p_index = p_index + 1
15841  tmp = scale*prim(p_index)
15842  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
15843  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
15844  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
15845  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
15846  END DO
15847  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
15848  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
15849  END DO
15850  END DO
15851  END DO
15852  END SUBROUTINE block_3_1_6
15853 ! **************************************************************************************************
15854 !> \brief ...
15855 !> \param mc_max ...
15856 !> \param md_max ...
15857 !> \param kbd ...
15858 !> \param kbc ...
15859 !> \param kad ...
15860 !> \param kac ...
15861 !> \param pbd ...
15862 !> \param pbc ...
15863 !> \param pad ...
15864 !> \param pac ...
15865 !> \param prim ...
15866 !> \param scale ...
15867 ! **************************************************************************************************
15868  SUBROUTINE block_3_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
15869  INTEGER :: mc_max, md_max
15870  REAL(kind=dp) :: kbd(1*md_max), kbc(1*mc_max), kad(3*md_max), kac(3*mc_max), pbd(1*md_max), &
15871  pbc(1*mc_max), pad(3*md_max), pac(3*mc_max), prim(3*1*mc_max*md_max), scale
15872 
15873  INTEGER :: ma, mb, mc, md, p_index
15874  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
15875 
15876  kbd(1:1*md_max) = 0.0_dp
15877  kbc(1:1*mc_max) = 0.0_dp
15878  kad(1:3*md_max) = 0.0_dp
15879  kac(1:3*mc_max) = 0.0_dp
15880  p_index = 0
15881  DO md = 1, md_max
15882  DO mc = 1, mc_max
15883  DO mb = 1, 1
15884  ks_bd = 0.0_dp
15885  ks_bc = 0.0_dp
15886  p_bd = pbd((md - 1)*1 + mb)
15887  p_bc = pbc((mc - 1)*1 + mb)
15888  DO ma = 1, 3
15889  p_index = p_index + 1
15890  tmp = scale*prim(p_index)
15891  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
15892  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
15893  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
15894  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
15895  END DO
15896  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
15897  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
15898  END DO
15899  END DO
15900  END DO
15901  END SUBROUTINE block_3_1
15902 ! **************************************************************************************************
15903 !> \brief ...
15904 !> \param kbd ...
15905 !> \param kbc ...
15906 !> \param kad ...
15907 !> \param kac ...
15908 !> \param pbd ...
15909 !> \param pbc ...
15910 !> \param pad ...
15911 !> \param pac ...
15912 !> \param prim ...
15913 !> \param scale ...
15914 ! **************************************************************************************************
15915  SUBROUTINE block_3_2_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
15916  REAL(kind=dp) :: kbd(2*1), kbc(2*1), kad(3*1), kac(3*1), &
15917  pbd(2*1), pbc(2*1), pad(3*1), &
15918  pac(3*1), prim(3*2*1*1), scale
15919 
15920  INTEGER :: ma, mb, mc, md, p_index
15921  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
15922 
15923  kbd(1:2*1) = 0.0_dp
15924  kbc(1:2*1) = 0.0_dp
15925  kad(1:3*1) = 0.0_dp
15926  kac(1:3*1) = 0.0_dp
15927  p_index = 0
15928  DO md = 1, 1
15929  DO mc = 1, 1
15930  DO mb = 1, 2
15931  ks_bd = 0.0_dp
15932  ks_bc = 0.0_dp
15933  p_bd = pbd((md - 1)*2 + mb)
15934  p_bc = pbc((mc - 1)*2 + mb)
15935  DO ma = 1, 3
15936  p_index = p_index + 1
15937  tmp = scale*prim(p_index)
15938  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
15939  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
15940  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
15941  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
15942  END DO
15943  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
15944  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
15945  END DO
15946  END DO
15947  END DO
15948  END SUBROUTINE block_3_2_1_1
15949 ! **************************************************************************************************
15950 !> \brief ...
15951 !> \param kbd ...
15952 !> \param kbc ...
15953 !> \param kad ...
15954 !> \param kac ...
15955 !> \param pbd ...
15956 !> \param pbc ...
15957 !> \param pad ...
15958 !> \param pac ...
15959 !> \param prim ...
15960 !> \param scale ...
15961 ! **************************************************************************************************
15962  SUBROUTINE block_3_2_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
15963  REAL(kind=dp) :: kbd(2*2), kbc(2*1), kad(3*2), kac(3*1), &
15964  pbd(2*2), pbc(2*1), pad(3*2), &
15965  pac(3*1), prim(3*2*1*2), scale
15966 
15967  INTEGER :: ma, mb, mc, md, p_index
15968  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
15969 
15970  kbd(1:2*2) = 0.0_dp
15971  kbc(1:2*1) = 0.0_dp
15972  kad(1:3*2) = 0.0_dp
15973  kac(1:3*1) = 0.0_dp
15974  p_index = 0
15975  DO md = 1, 2
15976  DO mc = 1, 1
15977  DO mb = 1, 2
15978  ks_bd = 0.0_dp
15979  ks_bc = 0.0_dp
15980  p_bd = pbd((md - 1)*2 + mb)
15981  p_bc = pbc((mc - 1)*2 + mb)
15982  DO ma = 1, 3
15983  p_index = p_index + 1
15984  tmp = scale*prim(p_index)
15985  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
15986  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
15987  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
15988  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
15989  END DO
15990  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
15991  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
15992  END DO
15993  END DO
15994  END DO
15995  END SUBROUTINE block_3_2_1_2
15996 ! **************************************************************************************************
15997 !> \brief ...
15998 !> \param kbd ...
15999 !> \param kbc ...
16000 !> \param kad ...
16001 !> \param kac ...
16002 !> \param pbd ...
16003 !> \param pbc ...
16004 !> \param pad ...
16005 !> \param pac ...
16006 !> \param prim ...
16007 !> \param scale ...
16008 ! **************************************************************************************************
16009  SUBROUTINE block_3_2_1_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
16010  REAL(kind=dp) :: kbd(2*3), kbc(2*1), kad(3*3), kac(3*1), &
16011  pbd(2*3), pbc(2*1), pad(3*3), &
16012  pac(3*1), prim(3*2*1*3), scale
16013 
16014  INTEGER :: ma, mb, mc, md, p_index
16015  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
16016 
16017  kbd(1:2*3) = 0.0_dp
16018  kbc(1:2*1) = 0.0_dp
16019  kad(1:3*3) = 0.0_dp
16020  kac(1:3*1) = 0.0_dp
16021  p_index = 0
16022  DO md = 1, 3
16023  DO mc = 1, 1
16024  DO mb = 1, 2
16025  ks_bd = 0.0_dp
16026  ks_bc = 0.0_dp
16027  p_bd = pbd((md - 1)*2 + mb)
16028  p_bc = pbc((mc - 1)*2 + mb)
16029  DO ma = 1, 3
16030  p_index = p_index + 1
16031  tmp = scale*prim(p_index)
16032  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
16033  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
16034  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
16035  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
16036  END DO
16037  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
16038  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
16039  END DO
16040  END DO
16041  END DO
16042  END SUBROUTINE block_3_2_1_3
16043 ! **************************************************************************************************
16044 !> \brief ...
16045 !> \param md_max ...
16046 !> \param kbd ...
16047 !> \param kbc ...
16048 !> \param kad ...
16049 !> \param kac ...
16050 !> \param pbd ...
16051 !> \param pbc ...
16052 !> \param pad ...
16053 !> \param pac ...
16054 !> \param prim ...
16055 !> \param scale ...
16056 ! **************************************************************************************************
16057  SUBROUTINE block_3_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
16058  INTEGER :: md_max
16059  REAL(kind=dp) :: kbd(2*md_max), kbc(2*1), kad(3*md_max), kac(3*1), pbd(2*md_max), pbc(2*1), &
16060  pad(3*md_max), pac(3*1), prim(3*2*1*md_max), scale
16061 
16062  INTEGER :: ma, mb, mc, md, p_index
16063  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
16064 
16065  kbd(1:2*md_max) = 0.0_dp
16066  kbc(1:2*1) = 0.0_dp
16067  kad(1:3*md_max) = 0.0_dp
16068  kac(1:3*1) = 0.0_dp
16069  p_index = 0
16070  DO md = 1, md_max
16071  DO mc = 1, 1
16072  DO mb = 1, 2
16073  ks_bd = 0.0_dp
16074  ks_bc = 0.0_dp
16075  p_bd = pbd((md - 1)*2 + mb)
16076  p_bc = pbc((mc - 1)*2 + mb)
16077  DO ma = 1, 3
16078  p_index = p_index + 1
16079  tmp = scale*prim(p_index)
16080  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
16081  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
16082  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
16083  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
16084  END DO
16085  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
16086  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
16087  END DO
16088  END DO
16089  END DO
16090  END SUBROUTINE block_3_2_1
16091 ! **************************************************************************************************
16092 !> \brief ...
16093 !> \param kbd ...
16094 !> \param kbc ...
16095 !> \param kad ...
16096 !> \param kac ...
16097 !> \param pbd ...
16098 !> \param pbc ...
16099 !> \param pad ...
16100 !> \param pac ...
16101 !> \param prim ...
16102 !> \param scale ...
16103 ! **************************************************************************************************
16104  SUBROUTINE block_3_2_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
16105  REAL(kind=dp) :: kbd(2*1), kbc(2*2), kad(3*1), kac(3*2), &
16106  pbd(2*1), pbc(2*2), pad(3*1), &
16107  pac(3*2), prim(3*2*2*1), scale
16108 
16109  INTEGER :: ma, mb, mc, md, p_index
16110  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
16111 
16112  kbd(1:2*1) = 0.0_dp
16113  kbc(1:2*2) = 0.0_dp
16114  kad(1:3*1) = 0.0_dp
16115  kac(1:3*2) = 0.0_dp
16116  p_index = 0
16117  DO md = 1, 1
16118  DO mc = 1, 2
16119  DO mb = 1, 2
16120  ks_bd = 0.0_dp
16121  ks_bc = 0.0_dp
16122  p_bd = pbd((md - 1)*2 + mb)
16123  p_bc = pbc((mc - 1)*2 + mb)
16124  DO ma = 1, 3
16125  p_index = p_index + 1
16126  tmp = scale*prim(p_index)
16127  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
16128  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
16129  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
16130  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
16131  END DO
16132  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
16133  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
16134  END DO
16135  END DO
16136  END DO
16137  END SUBROUTINE block_3_2_2_1
16138 ! **************************************************************************************************
16139 !> \brief ...
16140 !> \param md_max ...
16141 !> \param kbd ...
16142 !> \param kbc ...
16143 !> \param kad ...
16144 !> \param kac ...
16145 !> \param pbd ...
16146 !> \param pbc ...
16147 !> \param pad ...
16148 !> \param pac ...
16149 !> \param prim ...
16150 !> \param scale ...
16151 ! **************************************************************************************************
16152  SUBROUTINE block_3_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
16153  INTEGER :: md_max
16154  REAL(kind=dp) :: kbd(2*md_max), kbc(2*2), kad(3*md_max), kac(3*2), pbd(2*md_max), pbc(2*2), &
16155  pad(3*md_max), pac(3*2), prim(3*2*2*md_max), scale
16156 
16157  INTEGER :: ma, mb, mc, md, p_index
16158  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
16159 
16160  kbd(1:2*md_max) = 0.0_dp
16161  kbc(1:2*2) = 0.0_dp
16162  kad(1:3*md_max) = 0.0_dp
16163  kac(1:3*2) = 0.0_dp
16164  p_index = 0
16165  DO md = 1, md_max
16166  DO mc = 1, 2
16167  DO mb = 1, 2
16168  ks_bd = 0.0_dp
16169  ks_bc = 0.0_dp
16170  p_bd = pbd((md - 1)*2 + mb)
16171  p_bc = pbc((mc - 1)*2 + mb)
16172  DO ma = 1, 3
16173  p_index = p_index + 1
16174  tmp = scale*prim(p_index)
16175  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
16176  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
16177  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
16178  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
16179  END DO
16180  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
16181  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
16182  END DO
16183  END DO
16184  END DO
16185  END SUBROUTINE block_3_2_2
16186 ! **************************************************************************************************
16187 !> \brief ...
16188 !> \param kbd ...
16189 !> \param kbc ...
16190 !> \param kad ...
16191 !> \param kac ...
16192 !> \param pbd ...
16193 !> \param pbc ...
16194 !> \param pad ...
16195 !> \param pac ...
16196 !> \param prim ...
16197 !> \param scale ...
16198 ! **************************************************************************************************
16199  SUBROUTINE block_3_2_3_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
16200  REAL(kind=dp) :: kbd(2*1), kbc(2*3), kad(3*1), kac(3*3), &
16201  pbd(2*1), pbc(2*3), pad(3*1), &
16202  pac(3*3), prim(3*2*3*1), scale
16203 
16204  INTEGER :: ma, mb, mc, md, p_index
16205  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
16206 
16207  kbd(1:2*1) = 0.0_dp
16208  kbc(1:2*3) = 0.0_dp
16209  kad(1:3*1) = 0.0_dp
16210  kac(1:3*3) = 0.0_dp
16211  p_index = 0
16212  DO md = 1, 1
16213  DO mc = 1, 3
16214  DO mb = 1, 2
16215  ks_bd = 0.0_dp
16216  ks_bc = 0.0_dp
16217  p_bd = pbd((md - 1)*2 + mb)
16218  p_bc = pbc((mc - 1)*2 + mb)
16219  DO ma = 1, 3
16220  p_index = p_index + 1
16221  tmp = scale*prim(p_index)
16222  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
16223  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
16224  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
16225  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
16226  END DO
16227  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
16228  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
16229  END DO
16230  END DO
16231  END DO
16232  END SUBROUTINE block_3_2_3_1
16233 ! **************************************************************************************************
16234 !> \brief ...
16235 !> \param md_max ...
16236 !> \param kbd ...
16237 !> \param kbc ...
16238 !> \param kad ...
16239 !> \param kac ...
16240 !> \param pbd ...
16241 !> \param pbc ...
16242 !> \param pad ...
16243 !> \param pac ...
16244 !> \param prim ...
16245 !> \param scale ...
16246 ! **************************************************************************************************
16247  SUBROUTINE block_3_2_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
16248  INTEGER :: md_max
16249  REAL(kind=dp) :: kbd(2*md_max), kbc(2*3), kad(3*md_max), kac(3*3), pbd(2*md_max), pbc(2*3), &
16250  pad(3*md_max), pac(3*3), prim(3*2*3*md_max), scale
16251 
16252  INTEGER :: ma, mb, mc, md, p_index
16253  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
16254 
16255  kbd(1:2*md_max) = 0.0_dp
16256  kbc(1:2*3) = 0.0_dp
16257  kad(1:3*md_max) = 0.0_dp
16258  kac(1:3*3) = 0.0_dp
16259  p_index = 0
16260  DO md = 1, md_max
16261  DO mc = 1, 3
16262  DO mb = 1, 2
16263  ks_bd = 0.0_dp
16264  ks_bc = 0.0_dp
16265  p_bd = pbd((md - 1)*2 + mb)
16266  p_bc = pbc((mc - 1)*2 + mb)
16267  DO ma = 1, 3
16268  p_index = p_index + 1
16269  tmp = scale*prim(p_index)
16270  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
16271  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
16272  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
16273  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
16274  END DO
16275  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
16276  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
16277  END DO
16278  END DO
16279  END DO
16280  END SUBROUTINE block_3_2_3
16281 ! **************************************************************************************************
16282 !> \brief ...
16283 !> \param mc_max ...
16284 !> \param md_max ...
16285 !> \param kbd ...
16286 !> \param kbc ...
16287 !> \param kad ...
16288 !> \param kac ...
16289 !> \param pbd ...
16290 !> \param pbc ...
16291 !> \param pad ...
16292 !> \param pac ...
16293 !> \param prim ...
16294 !> \param scale ...
16295 ! **************************************************************************************************
16296  SUBROUTINE block_3_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
16297  INTEGER :: mc_max, md_max
16298  REAL(kind=dp) :: kbd(2*md_max), kbc(2*mc_max), kad(3*md_max), kac(3*mc_max), pbd(2*md_max), &
16299  pbc(2*mc_max), pad(3*md_max), pac(3*mc_max), prim(3*2*mc_max*md_max), scale
16300 
16301  INTEGER :: ma, mb, mc, md, p_index
16302  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
16303 
16304  kbd(1:2*md_max) = 0.0_dp
16305  kbc(1:2*mc_max) = 0.0_dp
16306  kad(1:3*md_max) = 0.0_dp
16307  kac(1:3*mc_max) = 0.0_dp
16308  p_index = 0
16309  DO md = 1, md_max
16310  DO mc = 1, mc_max
16311  DO mb = 1, 2
16312  ks_bd = 0.0_dp
16313  ks_bc = 0.0_dp
16314  p_bd = pbd((md - 1)*2 + mb)
16315  p_bc = pbc((mc - 1)*2 + mb)
16316  DO ma = 1, 3
16317  p_index = p_index + 1
16318  tmp = scale*prim(p_index)
16319  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
16320  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
16321  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
16322  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
16323  END DO
16324  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
16325  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
16326  END DO
16327  END DO
16328  END DO
16329  END SUBROUTINE block_3_2
16330 ! **************************************************************************************************
16331 !> \brief ...
16332 !> \param kbd ...
16333 !> \param kbc ...
16334 !> \param kad ...
16335 !> \param kac ...
16336 !> \param pbd ...
16337 !> \param pbc ...
16338 !> \param pad ...
16339 !> \param pac ...
16340 !> \param prim ...
16341 !> \param scale ...
16342 ! **************************************************************************************************
16343  SUBROUTINE block_3_3_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
16344  REAL(kind=dp) :: kbd(3*1), kbc(3*1), kad(3*1), kac(3*1), &
16345  pbd(3*1), pbc(3*1), pad(3*1), &
16346  pac(3*1), prim(3*3*1*1), scale
16347 
16348  INTEGER :: ma, mb, mc, md, p_index
16349  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
16350 
16351  kbd(1:3*1) = 0.0_dp
16352  kbc(1:3*1) = 0.0_dp
16353  kad(1:3*1) = 0.0_dp
16354  kac(1:3*1) = 0.0_dp
16355  p_index = 0
16356  DO md = 1, 1
16357  DO mc = 1, 1
16358  DO mb = 1, 3
16359  ks_bd = 0.0_dp
16360  ks_bc = 0.0_dp
16361  p_bd = pbd((md - 1)*3 + mb)
16362  p_bc = pbc((mc - 1)*3 + mb)
16363  DO ma = 1, 3
16364  p_index = p_index + 1
16365  tmp = scale*prim(p_index)
16366  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
16367  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
16368  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
16369  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
16370  END DO
16371  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
16372  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
16373  END DO
16374  END DO
16375  END DO
16376  END SUBROUTINE block_3_3_1_1
16377 ! **************************************************************************************************
16378 !> \brief ...
16379 !> \param kbd ...
16380 !> \param kbc ...
16381 !> \param kad ...
16382 !> \param kac ...
16383 !> \param pbd ...
16384 !> \param pbc ...
16385 !> \param pad ...
16386 !> \param pac ...
16387 !> \param prim ...
16388 !> \param scale ...
16389 ! **************************************************************************************************
16390  SUBROUTINE block_3_3_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
16391  REAL(kind=dp) :: kbd(3*2), kbc(3*1), kad(3*2), kac(3*1), &
16392  pbd(3*2), pbc(3*1), pad(3*2), &
16393  pac(3*1), prim(3*3*1*2), scale
16394 
16395  INTEGER :: ma, mb, mc, md, p_index
16396  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
16397 
16398  kbd(1:3*2) = 0.0_dp
16399  kbc(1:3*1) = 0.0_dp
16400  kad(1:3*2) = 0.0_dp
16401  kac(1:3*1) = 0.0_dp
16402  p_index = 0
16403  DO md = 1, 2
16404  DO mc = 1, 1
16405  DO mb = 1, 3
16406  ks_bd = 0.0_dp
16407  ks_bc = 0.0_dp
16408  p_bd = pbd((md - 1)*3 + mb)
16409  p_bc = pbc((mc - 1)*3 + mb)
16410  DO ma = 1, 3
16411  p_index = p_index + 1
16412  tmp = scale*prim(p_index)
16413  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
16414  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
16415  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
16416  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
16417  END DO
16418  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
16419  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
16420  END DO
16421  END DO
16422  END DO
16423  END SUBROUTINE block_3_3_1_2
16424 ! **************************************************************************************************
16425 !> \brief ...
16426 !> \param md_max ...
16427 !> \param kbd ...
16428 !> \param kbc ...
16429 !> \param kad ...
16430 !> \param kac ...
16431 !> \param pbd ...
16432 !> \param pbc ...
16433 !> \param pad ...
16434 !> \param pac ...
16435 !> \param prim ...
16436 !> \param scale ...
16437 ! **************************************************************************************************
16438  SUBROUTINE block_3_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
16439  INTEGER :: md_max
16440  REAL(kind=dp) :: kbd(3*md_max), kbc(3*1), kad(3*md_max), kac(3*1), pbd(3*md_max), pbc(3*1), &
16441  pad(3*md_max), pac(3*1), prim(3*3*1*md_max), scale
16442 
16443  INTEGER :: ma, mb, mc, md, p_index
16444  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
16445 
16446  kbd(1:3*md_max) = 0.0_dp
16447  kbc(1:3*1) = 0.0_dp
16448  kad(1:3*md_max) = 0.0_dp
16449  kac(1:3*1) = 0.0_dp
16450  p_index = 0
16451  DO md = 1, md_max
16452  DO mc = 1, 1
16453  DO mb = 1, 3
16454  ks_bd = 0.0_dp
16455  ks_bc = 0.0_dp
16456  p_bd = pbd((md - 1)*3 + mb)
16457  p_bc = pbc((mc - 1)*3 + mb)
16458  DO ma = 1, 3
16459  p_index = p_index + 1
16460  tmp = scale*prim(p_index)
16461  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
16462  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
16463  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
16464  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
16465  END DO
16466  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
16467  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
16468  END DO
16469  END DO
16470  END DO
16471  END SUBROUTINE block_3_3_1
16472 ! **************************************************************************************************
16473 !> \brief ...
16474 !> \param kbd ...
16475 !> \param kbc ...
16476 !> \param kad ...
16477 !> \param kac ...
16478 !> \param pbd ...
16479 !> \param pbc ...
16480 !> \param pad ...
16481 !> \param pac ...
16482 !> \param prim ...
16483 !> \param scale ...
16484 ! **************************************************************************************************
16485  SUBROUTINE block_3_3_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
16486  REAL(kind=dp) :: kbd(3*1), kbc(3*2), kad(3*1), kac(3*2), &
16487  pbd(3*1), pbc(3*2), pad(3*1), &
16488  pac(3*2), prim(3*3*2*1), scale
16489 
16490  INTEGER :: ma, mb, mc, md, p_index
16491  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
16492 
16493  kbd(1:3*1) = 0.0_dp
16494  kbc(1:3*2) = 0.0_dp
16495  kad(1:3*1) = 0.0_dp
16496  kac(1:3*2) = 0.0_dp
16497  p_index = 0
16498  DO md = 1, 1
16499  DO mc = 1, 2
16500  DO mb = 1, 3
16501  ks_bd = 0.0_dp
16502  ks_bc = 0.0_dp
16503  p_bd = pbd((md - 1)*3 + mb)
16504  p_bc = pbc((mc - 1)*3 + mb)
16505  DO ma = 1, 3
16506  p_index = p_index + 1
16507  tmp = scale*prim(p_index)
16508  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
16509  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
16510  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
16511  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
16512  END DO
16513  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
16514  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
16515  END DO
16516  END DO
16517  END DO
16518  END SUBROUTINE block_3_3_2_1
16519 ! **************************************************************************************************
16520 !> \brief ...
16521 !> \param md_max ...
16522 !> \param kbd ...
16523 !> \param kbc ...
16524 !> \param kad ...
16525 !> \param kac ...
16526 !> \param pbd ...
16527 !> \param pbc ...
16528 !> \param pad ...
16529 !> \param pac ...
16530 !> \param prim ...
16531 !> \param scale ...
16532 ! **************************************************************************************************
16533  SUBROUTINE block_3_3_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
16534  INTEGER :: md_max
16535  REAL(kind=dp) :: kbd(3*md_max), kbc(3*2), kad(3*md_max), kac(3*2), pbd(3*md_max), pbc(3*2), &
16536  pad(3*md_max), pac(3*2), prim(3*3*2*md_max), scale
16537 
16538  INTEGER :: ma, mb, mc, md, p_index
16539  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
16540 
16541  kbd(1:3*md_max) = 0.0_dp
16542  kbc(1:3*2) = 0.0_dp
16543  kad(1:3*md_max) = 0.0_dp
16544  kac(1:3*2) = 0.0_dp
16545  p_index = 0
16546  DO md = 1, md_max
16547  DO mc = 1, 2
16548  DO mb = 1, 3
16549  ks_bd = 0.0_dp
16550  ks_bc = 0.0_dp
16551  p_bd = pbd((md - 1)*3 + mb)
16552  p_bc = pbc((mc - 1)*3 + mb)
16553  DO ma = 1, 3
16554  p_index = p_index + 1
16555  tmp = scale*prim(p_index)
16556  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
16557  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
16558  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
16559  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
16560  END DO
16561  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
16562  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
16563  END DO
16564  END DO
16565  END DO
16566  END SUBROUTINE block_3_3_2
16567 ! **************************************************************************************************
16568 !> \brief ...
16569 !> \param mc_max ...
16570 !> \param md_max ...
16571 !> \param kbd ...
16572 !> \param kbc ...
16573 !> \param kad ...
16574 !> \param kac ...
16575 !> \param pbd ...
16576 !> \param pbc ...
16577 !> \param pad ...
16578 !> \param pac ...
16579 !> \param prim ...
16580 !> \param scale ...
16581 ! **************************************************************************************************
16582  SUBROUTINE block_3_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
16583  INTEGER :: mc_max, md_max
16584  REAL(kind=dp) :: kbd(3*md_max), kbc(3*mc_max), kad(3*md_max), kac(3*mc_max), pbd(3*md_max), &
16585  pbc(3*mc_max), pad(3*md_max), pac(3*mc_max), prim(3*3*mc_max*md_max), scale
16586 
16587  INTEGER :: ma, mb, mc, md, p_index
16588  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
16589 
16590  kbd(1:3*md_max) = 0.0_dp
16591  kbc(1:3*mc_max) = 0.0_dp
16592  kad(1:3*md_max) = 0.0_dp
16593  kac(1:3*mc_max) = 0.0_dp
16594  p_index = 0
16595  DO md = 1, md_max
16596  DO mc = 1, mc_max
16597  DO mb = 1, 3
16598  ks_bd = 0.0_dp
16599  ks_bc = 0.0_dp
16600  p_bd = pbd((md - 1)*3 + mb)
16601  p_bc = pbc((mc - 1)*3 + mb)
16602  DO ma = 1, 3
16603  p_index = p_index + 1
16604  tmp = scale*prim(p_index)
16605  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
16606  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
16607  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
16608  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
16609  END DO
16610  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
16611  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
16612  END DO
16613  END DO
16614  END DO
16615  END SUBROUTINE block_3_3
16616 ! **************************************************************************************************
16617 !> \brief ...
16618 !> \param kbd ...
16619 !> \param kbc ...
16620 !> \param kad ...
16621 !> \param kac ...
16622 !> \param pbd ...
16623 !> \param pbc ...
16624 !> \param pad ...
16625 !> \param pac ...
16626 !> \param prim ...
16627 !> \param scale ...
16628 ! **************************************************************************************************
16629  SUBROUTINE block_3_4_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
16630  REAL(kind=dp) :: kbd(4*1), kbc(4*1), kad(3*1), kac(3*1), &
16631  pbd(4*1), pbc(4*1), pad(3*1), &
16632  pac(3*1), prim(3*4*1*1), scale
16633 
16634  INTEGER :: ma, mb, mc, md, p_index
16635  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
16636 
16637  kbd(1:4*1) = 0.0_dp
16638  kbc(1:4*1) = 0.0_dp
16639  kad(1:3*1) = 0.0_dp
16640  kac(1:3*1) = 0.0_dp
16641  p_index = 0
16642  DO md = 1, 1
16643  DO mc = 1, 1
16644  DO mb = 1, 4
16645  ks_bd = 0.0_dp
16646  ks_bc = 0.0_dp
16647  p_bd = pbd((md - 1)*4 + mb)
16648  p_bc = pbc((mc - 1)*4 + mb)
16649  DO ma = 1, 3
16650  p_index = p_index + 1
16651  tmp = scale*prim(p_index)
16652  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
16653  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
16654  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
16655  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
16656  END DO
16657  kbd((md - 1)*4 + mb) = kbd((md - 1)*4 + mb) - ks_bd
16658  kbc((mc - 1)*4 + mb) = kbc((mc - 1)*4 + mb) - ks_bc
16659  END DO
16660  END DO
16661  END DO
16662  END SUBROUTINE block_3_4_1_1
16663 ! **************************************************************************************************
16664 !> \brief ...
16665 !> \param md_max ...
16666 !> \param kbd ...
16667 !> \param kbc ...
16668 !> \param kad ...
16669 !> \param kac ...
16670 !> \param pbd ...
16671 !> \param pbc ...
16672 !> \param pad ...
16673 !> \param pac ...
16674 !> \param prim ...
16675 !> \param scale ...
16676 ! **************************************************************************************************
16677  SUBROUTINE block_3_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
16678  INTEGER :: md_max
16679  REAL(kind=dp) :: kbd(4*md_max), kbc(4*1), kad(3*md_max), kac(3*1), pbd(4*md_max), pbc(4*1), &
16680  pad(3*md_max), pac(3*1), prim(3*4*1*md_max), scale
16681 
16682  INTEGER :: ma, mb, mc, md, p_index
16683  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
16684 
16685  kbd(1:4*md_max) = 0.0_dp
16686  kbc(1:4*1) = 0.0_dp
16687  kad(1:3*md_max) = 0.0_dp
16688  kac(1:3*1) = 0.0_dp
16689  p_index = 0
16690  DO md = 1, md_max
16691  DO mc = 1, 1
16692  DO mb = 1, 4
16693  ks_bd = 0.0_dp
16694  ks_bc = 0.0_dp
16695  p_bd = pbd((md - 1)*4 + mb)
16696  p_bc = pbc((mc - 1)*4 + mb)
16697  DO ma = 1, 3
16698  p_index = p_index + 1
16699  tmp = scale*prim(p_index)
16700  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
16701  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
16702  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
16703  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
16704  END DO
16705  kbd((md - 1)*4 + mb) = kbd((md - 1)*4 + mb) - ks_bd
16706  kbc((mc - 1)*4 + mb) = kbc((mc - 1)*4 + mb) - ks_bc
16707  END DO
16708  END DO
16709  END DO
16710  END SUBROUTINE block_3_4_1
16711 ! **************************************************************************************************
16712 !> \brief ...
16713 !> \param mc_max ...
16714 !> \param md_max ...
16715 !> \param kbd ...
16716 !> \param kbc ...
16717 !> \param kad ...
16718 !> \param kac ...
16719 !> \param pbd ...
16720 !> \param pbc ...
16721 !> \param pad ...
16722 !> \param pac ...
16723 !> \param prim ...
16724 !> \param scale ...
16725 ! **************************************************************************************************
16726  SUBROUTINE block_3_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
16727  INTEGER :: mc_max, md_max
16728  REAL(kind=dp) :: kbd(4*md_max), kbc(4*mc_max), kad(3*md_max), kac(3*mc_max), pbd(4*md_max), &
16729  pbc(4*mc_max), pad(3*md_max), pac(3*mc_max), prim(3*4*mc_max*md_max), scale
16730 
16731  INTEGER :: ma, mb, mc, md, p_index
16732  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
16733 
16734  kbd(1:4*md_max) = 0.0_dp
16735  kbc(1:4*mc_max) = 0.0_dp
16736  kad(1:3*md_max) = 0.0_dp
16737  kac(1:3*mc_max) = 0.0_dp
16738  p_index = 0
16739  DO md = 1, md_max
16740  DO mc = 1, mc_max
16741  DO mb = 1, 4
16742  ks_bd = 0.0_dp
16743  ks_bc = 0.0_dp
16744  p_bd = pbd((md - 1)*4 + mb)
16745  p_bc = pbc((mc - 1)*4 + mb)
16746  DO ma = 1, 3
16747  p_index = p_index + 1
16748  tmp = scale*prim(p_index)
16749  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
16750  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
16751  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
16752  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
16753  END DO
16754  kbd((md - 1)*4 + mb) = kbd((md - 1)*4 + mb) - ks_bd
16755  kbc((mc - 1)*4 + mb) = kbc((mc - 1)*4 + mb) - ks_bc
16756  END DO
16757  END DO
16758  END DO
16759  END SUBROUTINE block_3_4
16760 ! **************************************************************************************************
16761 !> \brief ...
16762 !> \param kbd ...
16763 !> \param kbc ...
16764 !> \param kad ...
16765 !> \param kac ...
16766 !> \param pbd ...
16767 !> \param pbc ...
16768 !> \param pad ...
16769 !> \param pac ...
16770 !> \param prim ...
16771 !> \param scale ...
16772 ! **************************************************************************************************
16773  SUBROUTINE block_3_5_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
16774  REAL(kind=dp) :: kbd(5*1), kbc(5*1), kad(3*1), kac(3*1), &
16775  pbd(5*1), pbc(5*1), pad(3*1), &
16776  pac(3*1), prim(3*5*1*1), scale
16777 
16778  INTEGER :: ma, mb, mc, md, p_index
16779  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
16780 
16781  kbd(1:5*1) = 0.0_dp
16782  kbc(1:5*1) = 0.0_dp
16783  kad(1:3*1) = 0.0_dp
16784  kac(1:3*1) = 0.0_dp
16785  p_index = 0
16786  DO md = 1, 1
16787  DO mc = 1, 1
16788  DO mb = 1, 5
16789  ks_bd = 0.0_dp
16790  ks_bc = 0.0_dp
16791  p_bd = pbd((md - 1)*5 + mb)
16792  p_bc = pbc((mc - 1)*5 + mb)
16793  DO ma = 1, 3
16794  p_index = p_index + 1
16795  tmp = scale*prim(p_index)
16796  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
16797  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
16798  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
16799  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
16800  END DO
16801  kbd((md - 1)*5 + mb) = kbd((md - 1)*5 + mb) - ks_bd
16802  kbc((mc - 1)*5 + mb) = kbc((mc - 1)*5 + mb) - ks_bc
16803  END DO
16804  END DO
16805  END DO
16806  END SUBROUTINE block_3_5_1_1
16807 ! **************************************************************************************************
16808 !> \brief ...
16809 !> \param md_max ...
16810 !> \param kbd ...
16811 !> \param kbc ...
16812 !> \param kad ...
16813 !> \param kac ...
16814 !> \param pbd ...
16815 !> \param pbc ...
16816 !> \param pad ...
16817 !> \param pac ...
16818 !> \param prim ...
16819 !> \param scale ...
16820 ! **************************************************************************************************
16821  SUBROUTINE block_3_5_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
16822  INTEGER :: md_max
16823  REAL(kind=dp) :: kbd(5*md_max), kbc(5*1), kad(3*md_max), kac(3*1), pbd(5*md_max), pbc(5*1), &
16824  pad(3*md_max), pac(3*1), prim(3*5*1*md_max), scale
16825 
16826  INTEGER :: ma, mb, mc, md, p_index
16827  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
16828 
16829  kbd(1:5*md_max) = 0.0_dp
16830  kbc(1:5*1) = 0.0_dp
16831  kad(1:3*md_max) = 0.0_dp
16832  kac(1:3*1) = 0.0_dp
16833  p_index = 0
16834  DO md = 1, md_max
16835  DO mc = 1, 1
16836  DO mb = 1, 5
16837  ks_bd = 0.0_dp
16838  ks_bc = 0.0_dp
16839  p_bd = pbd((md - 1)*5 + mb)
16840  p_bc = pbc((mc - 1)*5 + mb)
16841  DO ma = 1, 3
16842  p_index = p_index + 1
16843  tmp = scale*prim(p_index)
16844  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
16845  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
16846  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
16847  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
16848  END DO
16849  kbd((md - 1)*5 + mb) = kbd((md - 1)*5 + mb) - ks_bd
16850  kbc((mc - 1)*5 + mb) = kbc((mc - 1)*5 + mb) - ks_bc
16851  END DO
16852  END DO
16853  END DO
16854  END SUBROUTINE block_3_5_1
16855 ! **************************************************************************************************
16856 !> \brief ...
16857 !> \param mc_max ...
16858 !> \param md_max ...
16859 !> \param kbd ...
16860 !> \param kbc ...
16861 !> \param kad ...
16862 !> \param kac ...
16863 !> \param pbd ...
16864 !> \param pbc ...
16865 !> \param pad ...
16866 !> \param pac ...
16867 !> \param prim ...
16868 !> \param scale ...
16869 ! **************************************************************************************************
16870  SUBROUTINE block_3_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
16871  INTEGER :: mc_max, md_max
16872  REAL(kind=dp) :: kbd(5*md_max), kbc(5*mc_max), kad(3*md_max), kac(3*mc_max), pbd(5*md_max), &
16873  pbc(5*mc_max), pad(3*md_max), pac(3*mc_max), prim(3*5*mc_max*md_max), scale
16874 
16875  INTEGER :: ma, mb, mc, md, p_index
16876  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
16877 
16878  kbd(1:5*md_max) = 0.0_dp
16879  kbc(1:5*mc_max) = 0.0_dp
16880  kad(1:3*md_max) = 0.0_dp
16881  kac(1:3*mc_max) = 0.0_dp
16882  p_index = 0
16883  DO md = 1, md_max
16884  DO mc = 1, mc_max
16885  DO mb = 1, 5
16886  ks_bd = 0.0_dp
16887  ks_bc = 0.0_dp
16888  p_bd = pbd((md - 1)*5 + mb)
16889  p_bc = pbc((mc - 1)*5 + mb)
16890  DO ma = 1, 3
16891  p_index = p_index + 1
16892  tmp = scale*prim(p_index)
16893  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
16894  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
16895  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
16896  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
16897  END DO
16898  kbd((md - 1)*5 + mb) = kbd((md - 1)*5 + mb) - ks_bd
16899  kbc((mc - 1)*5 + mb) = kbc((mc - 1)*5 + mb) - ks_bc
16900  END DO
16901  END DO
16902  END DO
16903  END SUBROUTINE block_3_5
16904 ! **************************************************************************************************
16905 !> \brief ...
16906 !> \param kbd ...
16907 !> \param kbc ...
16908 !> \param kad ...
16909 !> \param kac ...
16910 !> \param pbd ...
16911 !> \param pbc ...
16912 !> \param pad ...
16913 !> \param pac ...
16914 !> \param prim ...
16915 !> \param scale ...
16916 ! **************************************************************************************************
16917  SUBROUTINE block_3_6_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
16918  REAL(kind=dp) :: kbd(6*1), kbc(6*1), kad(3*1), kac(3*1), &
16919  pbd(6*1), pbc(6*1), pad(3*1), &
16920  pac(3*1), prim(3*6*1*1), scale
16921 
16922  INTEGER :: ma, mb, mc, md, p_index
16923  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
16924 
16925  kbd(1:6*1) = 0.0_dp
16926  kbc(1:6*1) = 0.0_dp
16927  kad(1:3*1) = 0.0_dp
16928  kac(1:3*1) = 0.0_dp
16929  p_index = 0
16930  DO md = 1, 1
16931  DO mc = 1, 1
16932  DO mb = 1, 6
16933  ks_bd = 0.0_dp
16934  ks_bc = 0.0_dp
16935  p_bd = pbd((md - 1)*6 + mb)
16936  p_bc = pbc((mc - 1)*6 + mb)
16937  DO ma = 1, 3
16938  p_index = p_index + 1
16939  tmp = scale*prim(p_index)
16940  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
16941  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
16942  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
16943  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
16944  END DO
16945  kbd((md - 1)*6 + mb) = kbd((md - 1)*6 + mb) - ks_bd
16946  kbc((mc - 1)*6 + mb) = kbc((mc - 1)*6 + mb) - ks_bc
16947  END DO
16948  END DO
16949  END DO
16950  END SUBROUTINE block_3_6_1_1
16951 ! **************************************************************************************************
16952 !> \brief ...
16953 !> \param md_max ...
16954 !> \param kbd ...
16955 !> \param kbc ...
16956 !> \param kad ...
16957 !> \param kac ...
16958 !> \param pbd ...
16959 !> \param pbc ...
16960 !> \param pad ...
16961 !> \param pac ...
16962 !> \param prim ...
16963 !> \param scale ...
16964 ! **************************************************************************************************
16965  SUBROUTINE block_3_6_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
16966  INTEGER :: md_max
16967  REAL(kind=dp) :: kbd(6*md_max), kbc(6*1), kad(3*md_max), kac(3*1), pbd(6*md_max), pbc(6*1), &
16968  pad(3*md_max), pac(3*1), prim(3*6*1*md_max), scale
16969 
16970  INTEGER :: ma, mb, mc, md, p_index
16971  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
16972 
16973  kbd(1:6*md_max) = 0.0_dp
16974  kbc(1:6*1) = 0.0_dp
16975  kad(1:3*md_max) = 0.0_dp
16976  kac(1:3*1) = 0.0_dp
16977  p_index = 0
16978  DO md = 1, md_max
16979  DO mc = 1, 1
16980  DO mb = 1, 6
16981  ks_bd = 0.0_dp
16982  ks_bc = 0.0_dp
16983  p_bd = pbd((md - 1)*6 + mb)
16984  p_bc = pbc((mc - 1)*6 + mb)
16985  DO ma = 1, 3
16986  p_index = p_index + 1
16987  tmp = scale*prim(p_index)
16988  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
16989  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
16990  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
16991  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
16992  END DO
16993  kbd((md - 1)*6 + mb) = kbd((md - 1)*6 + mb) - ks_bd
16994  kbc((mc - 1)*6 + mb) = kbc((mc - 1)*6 + mb) - ks_bc
16995  END DO
16996  END DO
16997  END DO
16998  END SUBROUTINE block_3_6_1
16999 ! **************************************************************************************************
17000 !> \brief ...
17001 !> \param mc_max ...
17002 !> \param md_max ...
17003 !> \param kbd ...
17004 !> \param kbc ...
17005 !> \param kad ...
17006 !> \param kac ...
17007 !> \param pbd ...
17008 !> \param pbc ...
17009 !> \param pad ...
17010 !> \param pac ...
17011 !> \param prim ...
17012 !> \param scale ...
17013 ! **************************************************************************************************
17014  SUBROUTINE block_3_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
17015  INTEGER :: mc_max, md_max
17016  REAL(kind=dp) :: kbd(6*md_max), kbc(6*mc_max), kad(3*md_max), kac(3*mc_max), pbd(6*md_max), &
17017  pbc(6*mc_max), pad(3*md_max), pac(3*mc_max), prim(3*6*mc_max*md_max), scale
17018 
17019  INTEGER :: ma, mb, mc, md, p_index
17020  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
17021 
17022  kbd(1:6*md_max) = 0.0_dp
17023  kbc(1:6*mc_max) = 0.0_dp
17024  kad(1:3*md_max) = 0.0_dp
17025  kac(1:3*mc_max) = 0.0_dp
17026  p_index = 0
17027  DO md = 1, md_max
17028  DO mc = 1, mc_max
17029  DO mb = 1, 6
17030  ks_bd = 0.0_dp
17031  ks_bc = 0.0_dp
17032  p_bd = pbd((md - 1)*6 + mb)
17033  p_bc = pbc((mc - 1)*6 + mb)
17034  DO ma = 1, 3
17035  p_index = p_index + 1
17036  tmp = scale*prim(p_index)
17037  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
17038  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
17039  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
17040  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
17041  END DO
17042  kbd((md - 1)*6 + mb) = kbd((md - 1)*6 + mb) - ks_bd
17043  kbc((mc - 1)*6 + mb) = kbc((mc - 1)*6 + mb) - ks_bc
17044  END DO
17045  END DO
17046  END DO
17047  END SUBROUTINE block_3_6
17048 ! **************************************************************************************************
17049 !> \brief ...
17050 !> \param mc_max ...
17051 !> \param md_max ...
17052 !> \param kbd ...
17053 !> \param kbc ...
17054 !> \param kad ...
17055 !> \param kac ...
17056 !> \param pbd ...
17057 !> \param pbc ...
17058 !> \param pad ...
17059 !> \param pac ...
17060 !> \param prim ...
17061 !> \param scale ...
17062 ! **************************************************************************************************
17063  SUBROUTINE block_3_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
17064  INTEGER :: mc_max, md_max
17065  REAL(kind=dp) :: kbd(7*md_max), kbc(7*mc_max), kad(3*md_max), kac(3*mc_max), pbd(7*md_max), &
17066  pbc(7*mc_max), pad(3*md_max), pac(3*mc_max), prim(3*7*mc_max*md_max), scale
17067 
17068  INTEGER :: ma, mb, mc, md, p_index
17069  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
17070 
17071  kbd(1:7*md_max) = 0.0_dp
17072  kbc(1:7*mc_max) = 0.0_dp
17073  kad(1:3*md_max) = 0.0_dp
17074  kac(1:3*mc_max) = 0.0_dp
17075  p_index = 0
17076  DO md = 1, md_max
17077  DO mc = 1, mc_max
17078  DO mb = 1, 7
17079  ks_bd = 0.0_dp
17080  ks_bc = 0.0_dp
17081  p_bd = pbd((md - 1)*7 + mb)
17082  p_bc = pbc((mc - 1)*7 + mb)
17083  DO ma = 1, 3
17084  p_index = p_index + 1
17085  tmp = scale*prim(p_index)
17086  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
17087  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
17088  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
17089  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
17090  END DO
17091  kbd((md - 1)*7 + mb) = kbd((md - 1)*7 + mb) - ks_bd
17092  kbc((mc - 1)*7 + mb) = kbc((mc - 1)*7 + mb) - ks_bc
17093  END DO
17094  END DO
17095  END DO
17096  END SUBROUTINE block_3_7
17097 ! **************************************************************************************************
17098 !> \brief ...
17099 !> \param mc_max ...
17100 !> \param md_max ...
17101 !> \param kbd ...
17102 !> \param kbc ...
17103 !> \param kad ...
17104 !> \param kac ...
17105 !> \param pbd ...
17106 !> \param pbc ...
17107 !> \param pad ...
17108 !> \param pac ...
17109 !> \param prim ...
17110 !> \param scale ...
17111 ! **************************************************************************************************
17112  SUBROUTINE block_3_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
17113  INTEGER :: mc_max, md_max
17114  REAL(kind=dp) :: kbd(9*md_max), kbc(9*mc_max), kad(3*md_max), kac(3*mc_max), pbd(9*md_max), &
17115  pbc(9*mc_max), pad(3*md_max), pac(3*mc_max), prim(3*9*mc_max*md_max), scale
17116 
17117  INTEGER :: ma, mb, mc, md, p_index
17118  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
17119 
17120  kbd(1:9*md_max) = 0.0_dp
17121  kbc(1:9*mc_max) = 0.0_dp
17122  kad(1:3*md_max) = 0.0_dp
17123  kac(1:3*mc_max) = 0.0_dp
17124  p_index = 0
17125  DO md = 1, md_max
17126  DO mc = 1, mc_max
17127  DO mb = 1, 9
17128  ks_bd = 0.0_dp
17129  ks_bc = 0.0_dp
17130  p_bd = pbd((md - 1)*9 + mb)
17131  p_bc = pbc((mc - 1)*9 + mb)
17132  DO ma = 1, 3
17133  p_index = p_index + 1
17134  tmp = scale*prim(p_index)
17135  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
17136  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
17137  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
17138  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
17139  END DO
17140  kbd((md - 1)*9 + mb) = kbd((md - 1)*9 + mb) - ks_bd
17141  kbc((mc - 1)*9 + mb) = kbc((mc - 1)*9 + mb) - ks_bc
17142  END DO
17143  END DO
17144  END DO
17145  END SUBROUTINE block_3_9
17146 ! **************************************************************************************************
17147 !> \brief ...
17148 !> \param mc_max ...
17149 !> \param md_max ...
17150 !> \param kbd ...
17151 !> \param kbc ...
17152 !> \param kad ...
17153 !> \param kac ...
17154 !> \param pbd ...
17155 !> \param pbc ...
17156 !> \param pad ...
17157 !> \param pac ...
17158 !> \param prim ...
17159 !> \param scale ...
17160 ! **************************************************************************************************
17161  SUBROUTINE block_3_10(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
17162  INTEGER :: mc_max, md_max
17163  REAL(kind=dp) :: kbd(10*md_max), kbc(10*mc_max), kad(3*md_max), kac(3*mc_max), &
17164  pbd(10*md_max), pbc(10*mc_max), pad(3*md_max), pac(3*mc_max), prim(3*10*mc_max*md_max), &
17165  scale
17166 
17167  INTEGER :: ma, mb, mc, md, p_index
17168  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
17169 
17170  kbd(1:10*md_max) = 0.0_dp
17171  kbc(1:10*mc_max) = 0.0_dp
17172  kad(1:3*md_max) = 0.0_dp
17173  kac(1:3*mc_max) = 0.0_dp
17174  p_index = 0
17175  DO md = 1, md_max
17176  DO mc = 1, mc_max
17177  DO mb = 1, 10
17178  ks_bd = 0.0_dp
17179  ks_bc = 0.0_dp
17180  p_bd = pbd((md - 1)*10 + mb)
17181  p_bc = pbc((mc - 1)*10 + mb)
17182  DO ma = 1, 3
17183  p_index = p_index + 1
17184  tmp = scale*prim(p_index)
17185  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
17186  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
17187  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
17188  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
17189  END DO
17190  kbd((md - 1)*10 + mb) = kbd((md - 1)*10 + mb) - ks_bd
17191  kbc((mc - 1)*10 + mb) = kbc((mc - 1)*10 + mb) - ks_bc
17192  END DO
17193  END DO
17194  END DO
17195  END SUBROUTINE block_3_10
17196 ! **************************************************************************************************
17197 !> \brief ...
17198 !> \param mc_max ...
17199 !> \param md_max ...
17200 !> \param kbd ...
17201 !> \param kbc ...
17202 !> \param kad ...
17203 !> \param kac ...
17204 !> \param pbd ...
17205 !> \param pbc ...
17206 !> \param pad ...
17207 !> \param pac ...
17208 !> \param prim ...
17209 !> \param scale ...
17210 ! **************************************************************************************************
17211  SUBROUTINE block_3_11(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
17212  INTEGER :: mc_max, md_max
17213  REAL(kind=dp) :: kbd(11*md_max), kbc(11*mc_max), kad(3*md_max), kac(3*mc_max), &
17214  pbd(11*md_max), pbc(11*mc_max), pad(3*md_max), pac(3*mc_max), prim(3*11*mc_max*md_max), &
17215  scale
17216 
17217  INTEGER :: ma, mb, mc, md, p_index
17218  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
17219 
17220  kbd(1:11*md_max) = 0.0_dp
17221  kbc(1:11*mc_max) = 0.0_dp
17222  kad(1:3*md_max) = 0.0_dp
17223  kac(1:3*mc_max) = 0.0_dp
17224  p_index = 0
17225  DO md = 1, md_max
17226  DO mc = 1, mc_max
17227  DO mb = 1, 11
17228  ks_bd = 0.0_dp
17229  ks_bc = 0.0_dp
17230  p_bd = pbd((md - 1)*11 + mb)
17231  p_bc = pbc((mc - 1)*11 + mb)
17232  DO ma = 1, 3
17233  p_index = p_index + 1
17234  tmp = scale*prim(p_index)
17235  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
17236  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
17237  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
17238  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
17239  END DO
17240  kbd((md - 1)*11 + mb) = kbd((md - 1)*11 + mb) - ks_bd
17241  kbc((mc - 1)*11 + mb) = kbc((mc - 1)*11 + mb) - ks_bc
17242  END DO
17243  END DO
17244  END DO
17245  END SUBROUTINE block_3_11
17246 ! **************************************************************************************************
17247 !> \brief ...
17248 !> \param mc_max ...
17249 !> \param md_max ...
17250 !> \param kbd ...
17251 !> \param kbc ...
17252 !> \param kad ...
17253 !> \param kac ...
17254 !> \param pbd ...
17255 !> \param pbc ...
17256 !> \param pad ...
17257 !> \param pac ...
17258 !> \param prim ...
17259 !> \param scale ...
17260 ! **************************************************************************************************
17261  SUBROUTINE block_3_15(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
17262  INTEGER :: mc_max, md_max
17263  REAL(kind=dp) :: kbd(15*md_max), kbc(15*mc_max), kad(3*md_max), kac(3*mc_max), &
17264  pbd(15*md_max), pbc(15*mc_max), pad(3*md_max), pac(3*mc_max), prim(3*15*mc_max*md_max), &
17265  scale
17266 
17267  INTEGER :: ma, mb, mc, md, p_index
17268  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
17269 
17270  kbd(1:15*md_max) = 0.0_dp
17271  kbc(1:15*mc_max) = 0.0_dp
17272  kad(1:3*md_max) = 0.0_dp
17273  kac(1:3*mc_max) = 0.0_dp
17274  p_index = 0
17275  DO md = 1, md_max
17276  DO mc = 1, mc_max
17277  DO mb = 1, 15
17278  ks_bd = 0.0_dp
17279  ks_bc = 0.0_dp
17280  p_bd = pbd((md - 1)*15 + mb)
17281  p_bc = pbc((mc - 1)*15 + mb)
17282  DO ma = 1, 3
17283  p_index = p_index + 1
17284  tmp = scale*prim(p_index)
17285  ks_bc = ks_bc + tmp*pad((md - 1)*3 + ma)
17286  ks_bd = ks_bd + tmp*pac((mc - 1)*3 + ma)
17287  kad((md - 1)*3 + ma) = kad((md - 1)*3 + ma) - tmp*p_bc
17288  kac((mc - 1)*3 + ma) = kac((mc - 1)*3 + ma) - tmp*p_bd
17289  END DO
17290  kbd((md - 1)*15 + mb) = kbd((md - 1)*15 + mb) - ks_bd
17291  kbc((mc - 1)*15 + mb) = kbc((mc - 1)*15 + mb) - ks_bc
17292  END DO
17293  END DO
17294  END DO
17295  END SUBROUTINE block_3_15
17296 ! **************************************************************************************************
17297 !> \brief ...
17298 !> \param kbd ...
17299 !> \param kbc ...
17300 !> \param kad ...
17301 !> \param kac ...
17302 !> \param pbd ...
17303 !> \param pbc ...
17304 !> \param pad ...
17305 !> \param pac ...
17306 !> \param prim ...
17307 !> \param scale ...
17308 ! **************************************************************************************************
17309  SUBROUTINE block_4_1_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
17310  REAL(kind=dp) :: kbd(1*1), kbc(1*1), kad(4*1), kac(4*1), &
17311  pbd(1*1), pbc(1*1), pad(4*1), &
17312  pac(4*1), prim(4*1*1*1), scale
17313 
17314  INTEGER :: ma, mb, mc, md, p_index
17315  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
17316 
17317  kbd(1:1*1) = 0.0_dp
17318  kbc(1:1*1) = 0.0_dp
17319  kad(1:4*1) = 0.0_dp
17320  kac(1:4*1) = 0.0_dp
17321  p_index = 0
17322  DO md = 1, 1
17323  DO mc = 1, 1
17324  DO mb = 1, 1
17325  ks_bd = 0.0_dp
17326  ks_bc = 0.0_dp
17327  p_bd = pbd((md - 1)*1 + mb)
17328  p_bc = pbc((mc - 1)*1 + mb)
17329  DO ma = 1, 4
17330  p_index = p_index + 1
17331  tmp = scale*prim(p_index)
17332  ks_bc = ks_bc + tmp*pad((md - 1)*4 + ma)
17333  ks_bd = ks_bd + tmp*pac((mc - 1)*4 + ma)
17334  kad((md - 1)*4 + ma) = kad((md - 1)*4 + ma) - tmp*p_bc
17335  kac((mc - 1)*4 + ma) = kac((mc - 1)*4 + ma) - tmp*p_bd
17336  END DO
17337  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
17338  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
17339  END DO
17340  END DO
17341  END DO
17342  END SUBROUTINE block_4_1_1_1
17343 ! **************************************************************************************************
17344 !> \brief ...
17345 !> \param kbd ...
17346 !> \param kbc ...
17347 !> \param kad ...
17348 !> \param kac ...
17349 !> \param pbd ...
17350 !> \param pbc ...
17351 !> \param pad ...
17352 !> \param pac ...
17353 !> \param prim ...
17354 !> \param scale ...
17355 ! **************************************************************************************************
17356  SUBROUTINE block_4_1_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
17357  REAL(kind=dp) :: kbd(1*2), kbc(1*1), kad(4*2), kac(4*1), &
17358  pbd(1*2), pbc(1*1), pad(4*2), &
17359  pac(4*1), prim(4*1*1*2), scale
17360 
17361  INTEGER :: ma, mb, mc, md, p_index
17362  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
17363 
17364  kbd(1:1*2) = 0.0_dp
17365  kbc(1:1*1) = 0.0_dp
17366  kad(1:4*2) = 0.0_dp
17367  kac(1:4*1) = 0.0_dp
17368  p_index = 0
17369  DO md = 1, 2
17370  DO mc = 1, 1
17371  DO mb = 1, 1
17372  ks_bd = 0.0_dp
17373  ks_bc = 0.0_dp
17374  p_bd = pbd((md - 1)*1 + mb)
17375  p_bc = pbc((mc - 1)*1 + mb)
17376  DO ma = 1, 4
17377  p_index = p_index + 1
17378  tmp = scale*prim(p_index)
17379  ks_bc = ks_bc + tmp*pad((md - 1)*4 + ma)
17380  ks_bd = ks_bd + tmp*pac((mc - 1)*4 + ma)
17381  kad((md - 1)*4 + ma) = kad((md - 1)*4 + ma) - tmp*p_bc
17382  kac((mc - 1)*4 + ma) = kac((mc - 1)*4 + ma) - tmp*p_bd
17383  END DO
17384  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
17385  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
17386  END DO
17387  END DO
17388  END DO
17389  END SUBROUTINE block_4_1_1_2
17390 ! **************************************************************************************************
17391 !> \brief ...
17392 !> \param kbd ...
17393 !> \param kbc ...
17394 !> \param kad ...
17395 !> \param kac ...
17396 !> \param pbd ...
17397 !> \param pbc ...
17398 !> \param pad ...
17399 !> \param pac ...
17400 !> \param prim ...
17401 !> \param scale ...
17402 ! **************************************************************************************************
17403  SUBROUTINE block_4_1_1_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
17404  REAL(kind=dp) :: kbd(1*3), kbc(1*1), kad(4*3), kac(4*1), &
17405  pbd(1*3), pbc(1*1), pad(4*3), &
17406  pac(4*1), prim(4*1*1*3), scale
17407 
17408  INTEGER :: ma, mb, mc, md, p_index
17409  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
17410 
17411  kbd(1:1*3) = 0.0_dp
17412  kbc(1:1*1) = 0.0_dp
17413  kad(1:4*3) = 0.0_dp
17414  kac(1:4*1) = 0.0_dp
17415  p_index = 0
17416  DO md = 1, 3
17417  DO mc = 1, 1
17418  DO mb = 1, 1
17419  ks_bd = 0.0_dp
17420  ks_bc = 0.0_dp
17421  p_bd = pbd((md - 1)*1 + mb)
17422  p_bc = pbc((mc - 1)*1 + mb)
17423  DO ma = 1, 4
17424  p_index = p_index + 1
17425  tmp = scale*prim(p_index)
17426  ks_bc = ks_bc + tmp*pad((md - 1)*4 + ma)
17427  ks_bd = ks_bd + tmp*pac((mc - 1)*4 + ma)
17428  kad((md - 1)*4 + ma) = kad((md - 1)*4 + ma) - tmp*p_bc
17429  kac((mc - 1)*4 + ma) = kac((mc - 1)*4 + ma) - tmp*p_bd
17430  END DO
17431  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
17432  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
17433  END DO
17434  END DO
17435  END DO
17436  END SUBROUTINE block_4_1_1_3
17437 ! **************************************************************************************************
17438 !> \brief ...
17439 !> \param kbd ...
17440 !> \param kbc ...
17441 !> \param kad ...
17442 !> \param kac ...
17443 !> \param pbd ...
17444 !> \param pbc ...
17445 !> \param pad ...
17446 !> \param pac ...
17447 !> \param prim ...
17448 !> \param scale ...
17449 ! **************************************************************************************************
17450  SUBROUTINE block_4_1_1_4(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
17451  REAL(kind=dp) :: kbd(1*4), kbc(1*1), kad(4*4), kac(4*1), &
17452  pbd(1*4), pbc(1*1), pad(4*4), &
17453  pac(4*1), prim(4*1*1*4), scale
17454 
17455  INTEGER :: ma, mb, mc, md, p_index
17456  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
17457 
17458  kbd(1:1*4) = 0.0_dp
17459  kbc(1:1*1) = 0.0_dp
17460  kad(1:4*4) = 0.0_dp
17461  kac(1:4*1) = 0.0_dp
17462  p_index = 0
17463  DO md = 1, 4
17464  DO mc = 1, 1
17465  DO mb = 1, 1
17466  ks_bd = 0.0_dp
17467  ks_bc = 0.0_dp
17468  p_bd = pbd((md - 1)*1 + mb)
17469  p_bc = pbc((mc - 1)*1 + mb)
17470  DO ma = 1, 4
17471  p_index = p_index + 1
17472  tmp = scale*prim(p_index)
17473  ks_bc = ks_bc + tmp*pad((md - 1)*4 + ma)
17474  ks_bd = ks_bd + tmp*pac((mc - 1)*4 + ma)
17475  kad((md - 1)*4 + ma) = kad((md - 1)*4 + ma) - tmp*p_bc
17476  kac((mc - 1)*4 + ma) = kac((mc - 1)*4 + ma) - tmp*p_bd
17477  END DO
17478  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
17479  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
17480  END DO
17481  END DO
17482  END DO
17483  END SUBROUTINE block_4_1_1_4
17484 ! **************************************************************************************************
17485 !> \brief ...
17486 !> \param md_max ...
17487 !> \param kbd ...
17488 !> \param kbc ...
17489 !> \param kad ...
17490 !> \param kac ...
17491 !> \param pbd ...
17492 !> \param pbc ...
17493 !> \param pad ...
17494 !> \param pac ...
17495 !> \param prim ...
17496 !> \param scale ...
17497 ! **************************************************************************************************
17498  SUBROUTINE block_4_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
17499  INTEGER :: md_max
17500  REAL(kind=dp) :: kbd(1*md_max), kbc(1*1), kad(4*md_max), kac(4*1), pbd(1*md_max), pbc(1*1), &
17501  pad(4*md_max), pac(4*1), prim(4*1*1*md_max), scale
17502 
17503  INTEGER :: ma, mb, mc, md, p_index
17504  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
17505 
17506  kbd(1:1*md_max) = 0.0_dp
17507  kbc(1:1*1) = 0.0_dp
17508  kad(1:4*md_max) = 0.0_dp
17509  kac(1:4*1) = 0.0_dp
17510  p_index = 0
17511  DO md = 1, md_max
17512  DO mc = 1, 1
17513  DO mb = 1, 1
17514  ks_bd = 0.0_dp
17515  ks_bc = 0.0_dp
17516  p_bd = pbd((md - 1)*1 + mb)
17517  p_bc = pbc((mc - 1)*1 + mb)
17518  DO ma = 1, 4
17519  p_index = p_index + 1
17520  tmp = scale*prim(p_index)
17521  ks_bc = ks_bc + tmp*pad((md - 1)*4 + ma)
17522  ks_bd = ks_bd + tmp*pac((mc - 1)*4 + ma)
17523  kad((md - 1)*4 + ma) = kad((md - 1)*4 + ma) - tmp*p_bc
17524  kac((mc - 1)*4 + ma) = kac((mc - 1)*4 + ma) - tmp*p_bd
17525  END DO
17526  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
17527  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
17528  END DO
17529  END DO
17530  END DO
17531  END SUBROUTINE block_4_1_1
17532 ! **************************************************************************************************
17533 !> \brief ...
17534 !> \param kbd ...
17535 !> \param kbc ...
17536 !> \param kad ...
17537 !> \param kac ...
17538 !> \param pbd ...
17539 !> \param pbc ...
17540 !> \param pad ...
17541 !> \param pac ...
17542 !> \param prim ...
17543 !> \param scale ...
17544 ! **************************************************************************************************
17545  SUBROUTINE block_4_1_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
17546  REAL(kind=dp) :: kbd(1*1), kbc(1*2), kad(4*1), kac(4*2), &
17547  pbd(1*1), pbc(1*2), pad(4*1), &
17548  pac(4*2), prim(4*1*2*1), scale
17549 
17550  INTEGER :: ma, mb, mc, md, p_index
17551  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
17552 
17553  kbd(1:1*1) = 0.0_dp
17554  kbc(1:1*2) = 0.0_dp
17555  kad(1:4*1) = 0.0_dp
17556  kac(1:4*2) = 0.0_dp
17557  p_index = 0
17558  DO md = 1, 1
17559  DO mc = 1, 2
17560  DO mb = 1, 1
17561  ks_bd = 0.0_dp
17562  ks_bc = 0.0_dp
17563  p_bd = pbd((md - 1)*1 + mb)
17564  p_bc = pbc((mc - 1)*1 + mb)
17565  DO ma = 1, 4
17566  p_index = p_index + 1
17567  tmp = scale*prim(p_index)
17568  ks_bc = ks_bc + tmp*pad((md - 1)*4 + ma)
17569  ks_bd = ks_bd + tmp*pac((mc - 1)*4 + ma)
17570  kad((md - 1)*4 + ma) = kad((md - 1)*4 + ma) - tmp*p_bc
17571  kac((mc - 1)*4 + ma) = kac((mc - 1)*4 + ma) - tmp*p_bd
17572  END DO
17573  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
17574  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
17575  END DO
17576  END DO
17577  END DO
17578  END SUBROUTINE block_4_1_2_1
17579 ! **************************************************************************************************
17580 !> \brief ...
17581 !> \param kbd ...
17582 !> \param kbc ...
17583 !> \param kad ...
17584 !> \param kac ...
17585 !> \param pbd ...
17586 !> \param pbc ...
17587 !> \param pad ...
17588 !> \param pac ...
17589 !> \param prim ...
17590 !> \param scale ...
17591 ! **************************************************************************************************
17592  SUBROUTINE block_4_1_2_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
17593  REAL(kind=dp) :: kbd(1*2), kbc(1*2), kad(4*2), kac(4*2), &
17594  pbd(1*2), pbc(1*2), pad(4*2), &
17595  pac(4*2), prim(4*1*2*2), scale
17596 
17597  INTEGER :: ma, mb, mc, md, p_index
17598  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
17599 
17600  kbd(1:1*2) = 0.0_dp
17601  kbc(1:1*2) = 0.0_dp
17602  kad(1:4*2) = 0.0_dp
17603  kac(1:4*2) = 0.0_dp
17604  p_index = 0
17605  DO md = 1, 2
17606  DO mc = 1, 2
17607  DO mb = 1, 1
17608  ks_bd = 0.0_dp
17609  ks_bc = 0.0_dp
17610  p_bd = pbd((md - 1)*1 + mb)
17611  p_bc = pbc((mc - 1)*1 + mb)
17612  DO ma = 1, 4
17613  p_index = p_index + 1
17614  tmp = scale*prim(p_index)
17615  ks_bc = ks_bc + tmp*pad((md - 1)*4 + ma)
17616  ks_bd = ks_bd + tmp*pac((mc - 1)*4 + ma)
17617  kad((md - 1)*4 + ma) = kad((md - 1)*4 + ma) - tmp*p_bc
17618  kac((mc - 1)*4 + ma) = kac((mc - 1)*4 + ma) - tmp*p_bd
17619  END DO
17620  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
17621  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
17622  END DO
17623  END DO
17624  END DO
17625  END SUBROUTINE block_4_1_2_2
17626 ! **************************************************************************************************
17627 !> \brief ...
17628 !> \param md_max ...
17629 !> \param kbd ...
17630 !> \param kbc ...
17631 !> \param kad ...
17632 !> \param kac ...
17633 !> \param pbd ...
17634 !> \param pbc ...
17635 !> \param pad ...
17636 !> \param pac ...
17637 !> \param prim ...
17638 !> \param scale ...
17639 ! **************************************************************************************************
17640  SUBROUTINE block_4_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
17641  INTEGER :: md_max
17642  REAL(kind=dp) :: kbd(1*md_max), kbc(1*2), kad(4*md_max), kac(4*2), pbd(1*md_max), pbc(1*2), &
17643  pad(4*md_max), pac(4*2), prim(4*1*2*md_max), scale
17644 
17645  INTEGER :: ma, mb, mc, md, p_index
17646  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
17647 
17648  kbd(1:1*md_max) = 0.0_dp
17649  kbc(1:1*2) = 0.0_dp
17650  kad(1:4*md_max) = 0.0_dp
17651  kac(1:4*2) = 0.0_dp
17652  p_index = 0
17653  DO md = 1, md_max
17654  DO mc = 1, 2
17655  DO mb = 1, 1
17656  ks_bd = 0.0_dp
17657  ks_bc = 0.0_dp
17658  p_bd = pbd((md - 1)*1 + mb)
17659  p_bc = pbc((mc - 1)*1 + mb)
17660  DO ma = 1, 4
17661  p_index = p_index + 1
17662  tmp = scale*prim(p_index)
17663  ks_bc = ks_bc + tmp*pad((md - 1)*4 + ma)
17664  ks_bd = ks_bd + tmp*pac((mc - 1)*4 + ma)
17665  kad((md - 1)*4 + ma) = kad((md - 1)*4 + ma) - tmp*p_bc
17666  kac((mc - 1)*4 + ma) = kac((mc - 1)*4 + ma) - tmp*p_bd
17667  END DO
17668  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
17669  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
17670  END DO
17671  END DO
17672  END DO
17673  END SUBROUTINE block_4_1_2
17674 ! **************************************************************************************************
17675 !> \brief ...
17676 !> \param kbd ...
17677 !> \param kbc ...
17678 !> \param kad ...
17679 !> \param kac ...
17680 !> \param pbd ...
17681 !> \param pbc ...
17682 !> \param pad ...
17683 !> \param pac ...
17684 !> \param prim ...
17685 !> \param scale ...
17686 ! **************************************************************************************************
17687  SUBROUTINE block_4_1_3_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
17688  REAL(kind=dp) :: kbd(1*1), kbc(1*3), kad(4*1), kac(4*3), &
17689  pbd(1*1), pbc(1*3), pad(4*1), &
17690  pac(4*3), prim(4*1*3*1), scale
17691 
17692  INTEGER :: ma, mb, mc, md, p_index
17693  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
17694 
17695  kbd(1:1*1) = 0.0_dp
17696  kbc(1:1*3) = 0.0_dp
17697  kad(1:4*1) = 0.0_dp
17698  kac(1:4*3) = 0.0_dp
17699  p_index = 0
17700  DO md = 1, 1
17701  DO mc = 1, 3
17702  DO mb = 1, 1
17703  ks_bd = 0.0_dp
17704  ks_bc = 0.0_dp
17705  p_bd = pbd((md - 1)*1 + mb)
17706  p_bc = pbc((mc - 1)*1 + mb)
17707  DO ma = 1, 4
17708  p_index = p_index + 1
17709  tmp = scale*prim(p_index)
17710  ks_bc = ks_bc + tmp*pad((md - 1)*4 + ma)
17711  ks_bd = ks_bd + tmp*pac((mc - 1)*4 + ma)
17712  kad((md - 1)*4 + ma) = kad((md - 1)*4 + ma) - tmp*p_bc
17713  kac((mc - 1)*4 + ma) = kac((mc - 1)*4 + ma) - tmp*p_bd
17714  END DO
17715  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
17716  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
17717  END DO
17718  END DO
17719  END DO
17720  END SUBROUTINE block_4_1_3_1
17721 ! **************************************************************************************************
17722 !> \brief ...
17723 !> \param md_max ...
17724 !> \param kbd ...
17725 !> \param kbc ...
17726 !> \param kad ...
17727 !> \param kac ...
17728 !> \param pbd ...
17729 !> \param pbc ...
17730 !> \param pad ...
17731 !> \param pac ...
17732 !> \param prim ...
17733 !> \param scale ...
17734 ! **************************************************************************************************
17735  SUBROUTINE block_4_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
17736  INTEGER :: md_max
17737  REAL(kind=dp) :: kbd(1*md_max), kbc(1*3), kad(4*md_max), kac(4*3), pbd(1*md_max), pbc(1*3), &
17738  pad(4*md_max), pac(4*3), prim(4*1*3*md_max), scale
17739 
17740  INTEGER :: ma, mb, mc, md, p_index
17741  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
17742 
17743  kbd(1:1*md_max) = 0.0_dp
17744  kbc(1:1*3) = 0.0_dp
17745  kad(1:4*md_max) = 0.0_dp
17746  kac(1:4*3) = 0.0_dp
17747  p_index = 0
17748  DO md = 1, md_max
17749  DO mc = 1, 3
17750  DO mb = 1, 1
17751  ks_bd = 0.0_dp
17752  ks_bc = 0.0_dp
17753  p_bd = pbd((md - 1)*1 + mb)
17754  p_bc = pbc((mc - 1)*1 + mb)
17755  DO ma = 1, 4
17756  p_index = p_index + 1
17757  tmp = scale*prim(p_index)
17758  ks_bc = ks_bc + tmp*pad((md - 1)*4 + ma)
17759  ks_bd = ks_bd + tmp*pac((mc - 1)*4 + ma)
17760  kad((md - 1)*4 + ma) = kad((md - 1)*4 + ma) - tmp*p_bc
17761  kac((mc - 1)*4 + ma) = kac((mc - 1)*4 + ma) - tmp*p_bd
17762  END DO
17763  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
17764  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
17765  END DO
17766  END DO
17767  END DO
17768  END SUBROUTINE block_4_1_3
17769 ! **************************************************************************************************
17770 !> \brief ...
17771 !> \param kbd ...
17772 !> \param kbc ...
17773 !> \param kad ...
17774 !> \param kac ...
17775 !> \param pbd ...
17776 !> \param pbc ...
17777 !> \param pad ...
17778 !> \param pac ...
17779 !> \param prim ...
17780 !> \param scale ...
17781 ! **************************************************************************************************
17782  SUBROUTINE block_4_1_4_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
17783  REAL(kind=dp) :: kbd(1*1), kbc(1*4), kad(4*1), kac(4*4), &
17784  pbd(1*1), pbc(1*4), pad(4*1), &
17785  pac(4*4), prim(4*1*4*1), scale
17786 
17787  INTEGER :: ma, mb, mc, md, p_index
17788  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
17789 
17790  kbd(1:1*1) = 0.0_dp
17791  kbc(1:1*4) = 0.0_dp
17792  kad(1:4*1) = 0.0_dp
17793  kac(1:4*4) = 0.0_dp
17794  p_index = 0
17795  DO md = 1, 1
17796  DO mc = 1, 4
17797  DO mb = 1, 1
17798  ks_bd = 0.0_dp
17799  ks_bc = 0.0_dp
17800  p_bd = pbd((md - 1)*1 + mb)
17801  p_bc = pbc((mc - 1)*1 + mb)
17802  DO ma = 1, 4
17803  p_index = p_index + 1
17804  tmp = scale*prim(p_index)
17805  ks_bc = ks_bc + tmp*pad((md - 1)*4 + ma)
17806  ks_bd = ks_bd + tmp*pac((mc - 1)*4 + ma)
17807  kad((md - 1)*4 + ma) = kad((md - 1)*4 + ma) - tmp*p_bc
17808  kac((mc - 1)*4 + ma) = kac((mc - 1)*4 + ma) - tmp*p_bd
17809  END DO
17810  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
17811  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
17812  END DO
17813  END DO
17814  END DO
17815  END SUBROUTINE block_4_1_4_1
17816 ! **************************************************************************************************
17817 !> \brief ...
17818 !> \param md_max ...
17819 !> \param kbd ...
17820 !> \param kbc ...
17821 !> \param kad ...
17822 !> \param kac ...
17823 !> \param pbd ...
17824 !> \param pbc ...
17825 !> \param pad ...
17826 !> \param pac ...
17827 !> \param prim ...
17828 !> \param scale ...
17829 ! **************************************************************************************************
17830  SUBROUTINE block_4_1_4(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
17831  INTEGER :: md_max
17832  REAL(kind=dp) :: kbd(1*md_max), kbc(1*4), kad(4*md_max), kac(4*4), pbd(1*md_max), pbc(1*4), &
17833  pad(4*md_max), pac(4*4), prim(4*1*4*md_max), scale
17834 
17835  INTEGER :: ma, mb, mc, md, p_index
17836  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
17837 
17838  kbd(1:1*md_max) = 0.0_dp
17839  kbc(1:1*4) = 0.0_dp
17840  kad(1:4*md_max) = 0.0_dp
17841  kac(1:4*4) = 0.0_dp
17842  p_index = 0
17843  DO md = 1, md_max
17844  DO mc = 1, 4
17845  DO mb = 1, 1
17846  ks_bd = 0.0_dp
17847  ks_bc = 0.0_dp
17848  p_bd = pbd((md - 1)*1 + mb)
17849  p_bc = pbc((mc - 1)*1 + mb)
17850  DO ma = 1, 4
17851  p_index = p_index + 1
17852  tmp = scale*prim(p_index)
17853  ks_bc = ks_bc + tmp*pad((md - 1)*4 + ma)
17854  ks_bd = ks_bd + tmp*pac((mc - 1)*4 + ma)
17855  kad((md - 1)*4 + ma) = kad((md - 1)*4 + ma) - tmp*p_bc
17856  kac((mc - 1)*4 + ma) = kac((mc - 1)*4 + ma) - tmp*p_bd
17857  END DO
17858  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
17859  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
17860  END DO
17861  END DO
17862  END DO
17863  END SUBROUTINE block_4_1_4
17864 ! **************************************************************************************************
17865 !> \brief ...
17866 !> \param mc_max ...
17867 !> \param md_max ...
17868 !> \param kbd ...
17869 !> \param kbc ...
17870 !> \param kad ...
17871 !> \param kac ...
17872 !> \param pbd ...
17873 !> \param pbc ...
17874 !> \param pad ...
17875 !> \param pac ...
17876 !> \param prim ...
17877 !> \param scale ...
17878 ! **************************************************************************************************
17879  SUBROUTINE block_4_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
17880  INTEGER :: mc_max, md_max
17881  REAL(kind=dp) :: kbd(1*md_max), kbc(1*mc_max), kad(4*md_max), kac(4*mc_max), pbd(1*md_max), &
17882  pbc(1*mc_max), pad(4*md_max), pac(4*mc_max), prim(4*1*mc_max*md_max), scale
17883 
17884  INTEGER :: ma, mb, mc, md, p_index
17885  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
17886 
17887  kbd(1:1*md_max) = 0.0_dp
17888  kbc(1:1*mc_max) = 0.0_dp
17889  kad(1:4*md_max) = 0.0_dp
17890  kac(1:4*mc_max) = 0.0_dp
17891  p_index = 0
17892  DO md = 1, md_max
17893  DO mc = 1, mc_max
17894  DO mb = 1, 1
17895  ks_bd = 0.0_dp
17896  ks_bc = 0.0_dp
17897  p_bd = pbd((md - 1)*1 + mb)
17898  p_bc = pbc((mc - 1)*1 + mb)
17899  DO ma = 1, 4
17900  p_index = p_index + 1
17901  tmp = scale*prim(p_index)
17902  ks_bc = ks_bc + tmp*pad((md - 1)*4 + ma)
17903  ks_bd = ks_bd + tmp*pac((mc - 1)*4 + ma)
17904  kad((md - 1)*4 + ma) = kad((md - 1)*4 + ma) - tmp*p_bc
17905  kac((mc - 1)*4 + ma) = kac((mc - 1)*4 + ma) - tmp*p_bd
17906  END DO
17907  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
17908  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
17909  END DO
17910  END DO
17911  END DO
17912  END SUBROUTINE block_4_1
17913 ! **************************************************************************************************
17914 !> \brief ...
17915 !> \param kbd ...
17916 !> \param kbc ...
17917 !> \param kad ...
17918 !> \param kac ...
17919 !> \param pbd ...
17920 !> \param pbc ...
17921 !> \param pad ...
17922 !> \param pac ...
17923 !> \param prim ...
17924 !> \param scale ...
17925 ! **************************************************************************************************
17926  SUBROUTINE block_4_2_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
17927  REAL(kind=dp) :: kbd(2*1), kbc(2*1), kad(4*1), kac(4*1), &
17928  pbd(2*1), pbc(2*1), pad(4*1), &
17929  pac(4*1), prim(4*2*1*1), scale
17930 
17931  INTEGER :: ma, mb, mc, md, p_index
17932  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
17933 
17934  kbd(1:2*1) = 0.0_dp
17935  kbc(1:2*1) = 0.0_dp
17936  kad(1:4*1) = 0.0_dp
17937  kac(1:4*1) = 0.0_dp
17938  p_index = 0
17939  DO md = 1, 1
17940  DO mc = 1, 1
17941  DO mb = 1, 2
17942  ks_bd = 0.0_dp
17943  ks_bc = 0.0_dp
17944  p_bd = pbd((md - 1)*2 + mb)
17945  p_bc = pbc((mc - 1)*2 + mb)
17946  DO ma = 1, 4
17947  p_index = p_index + 1
17948  tmp = scale*prim(p_index)
17949  ks_bc = ks_bc + tmp*pad((md - 1)*4 + ma)
17950  ks_bd = ks_bd + tmp*pac((mc - 1)*4 + ma)
17951  kad((md - 1)*4 + ma) = kad((md - 1)*4 + ma) - tmp*p_bc
17952  kac((mc - 1)*4 + ma) = kac((mc - 1)*4 + ma) - tmp*p_bd
17953  END DO
17954  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
17955  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
17956  END DO
17957  END DO
17958  END DO
17959  END SUBROUTINE block_4_2_1_1
17960 ! **************************************************************************************************
17961 !> \brief ...
17962 !> \param kbd ...
17963 !> \param kbc ...
17964 !> \param kad ...
17965 !> \param kac ...
17966 !> \param pbd ...
17967 !> \param pbc ...
17968 !> \param pad ...
17969 !> \param pac ...
17970 !> \param prim ...
17971 !> \param scale ...
17972 ! **************************************************************************************************
17973  SUBROUTINE block_4_2_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
17974  REAL(kind=dp) :: kbd(2*2), kbc(2*1), kad(4*2), kac(4*1), &
17975  pbd(2*2), pbc(2*1), pad(4*2), &
17976  pac(4*1), prim(4*2*1*2), scale
17977 
17978  INTEGER :: ma, mb, mc, md, p_index
17979  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
17980 
17981  kbd(1:2*2) = 0.0_dp
17982  kbc(1:2*1) = 0.0_dp
17983  kad(1:4*2) = 0.0_dp
17984  kac(1:4*1) = 0.0_dp
17985  p_index = 0
17986  DO md = 1, 2
17987  DO mc = 1, 1
17988  DO mb = 1, 2
17989  ks_bd = 0.0_dp
17990  ks_bc = 0.0_dp
17991  p_bd = pbd((md - 1)*2 + mb)
17992  p_bc = pbc((mc - 1)*2 + mb)
17993  DO ma = 1, 4
17994  p_index = p_index + 1
17995  tmp = scale*prim(p_index)
17996  ks_bc = ks_bc + tmp*pad((md - 1)*4 + ma)
17997  ks_bd = ks_bd + tmp*pac((mc - 1)*4 + ma)
17998  kad((md - 1)*4 + ma) = kad((md - 1)*4 + ma) - tmp*p_bc
17999  kac((mc - 1)*4 + ma) = kac((mc - 1)*4 + ma) - tmp*p_bd
18000  END DO
18001  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
18002  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
18003  END DO
18004  END DO
18005  END DO
18006  END SUBROUTINE block_4_2_1_2
18007 ! **************************************************************************************************
18008 !> \brief ...
18009 !> \param md_max ...
18010 !> \param kbd ...
18011 !> \param kbc ...
18012 !> \param kad ...
18013 !> \param kac ...
18014 !> \param pbd ...
18015 !> \param pbc ...
18016 !> \param pad ...
18017 !> \param pac ...
18018 !> \param prim ...
18019 !> \param scale ...
18020 ! **************************************************************************************************
18021  SUBROUTINE block_4_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
18022  INTEGER :: md_max
18023  REAL(kind=dp) :: kbd(2*md_max), kbc(2*1), kad(4*md_max), kac(4*1), pbd(2*md_max), pbc(2*1), &
18024  pad(4*md_max), pac(4*1), prim(4*2*1*md_max), scale
18025 
18026  INTEGER :: ma, mb, mc, md, p_index
18027  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
18028 
18029  kbd(1:2*md_max) = 0.0_dp
18030  kbc(1:2*1) = 0.0_dp
18031  kad(1:4*md_max) = 0.0_dp
18032  kac(1:4*1) = 0.0_dp
18033  p_index = 0
18034  DO md = 1, md_max
18035  DO mc = 1, 1
18036  DO mb = 1, 2
18037  ks_bd = 0.0_dp
18038  ks_bc = 0.0_dp
18039  p_bd = pbd((md - 1)*2 + mb)
18040  p_bc = pbc((mc - 1)*2 + mb)
18041  DO ma = 1, 4
18042  p_index = p_index + 1
18043  tmp = scale*prim(p_index)
18044  ks_bc = ks_bc + tmp*pad((md - 1)*4 + ma)
18045  ks_bd = ks_bd + tmp*pac((mc - 1)*4 + ma)
18046  kad((md - 1)*4 + ma) = kad((md - 1)*4 + ma) - tmp*p_bc
18047  kac((mc - 1)*4 + ma) = kac((mc - 1)*4 + ma) - tmp*p_bd
18048  END DO
18049  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
18050  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
18051  END DO
18052  END DO
18053  END DO
18054  END SUBROUTINE block_4_2_1
18055 ! **************************************************************************************************
18056 !> \brief ...
18057 !> \param kbd ...
18058 !> \param kbc ...
18059 !> \param kad ...
18060 !> \param kac ...
18061 !> \param pbd ...
18062 !> \param pbc ...
18063 !> \param pad ...
18064 !> \param pac ...
18065 !> \param prim ...
18066 !> \param scale ...
18067 ! **************************************************************************************************
18068  SUBROUTINE block_4_2_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
18069  REAL(kind=dp) :: kbd(2*1), kbc(2*2), kad(4*1), kac(4*2), &
18070  pbd(2*1), pbc(2*2), pad(4*1), &
18071  pac(4*2), prim(4*2*2*1), scale
18072 
18073  INTEGER :: ma, mb, mc, md, p_index
18074  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
18075 
18076  kbd(1:2*1) = 0.0_dp
18077  kbc(1:2*2) = 0.0_dp
18078  kad(1:4*1) = 0.0_dp
18079  kac(1:4*2) = 0.0_dp
18080  p_index = 0
18081  DO md = 1, 1
18082  DO mc = 1, 2
18083  DO mb = 1, 2
18084  ks_bd = 0.0_dp
18085  ks_bc = 0.0_dp
18086  p_bd = pbd((md - 1)*2 + mb)
18087  p_bc = pbc((mc - 1)*2 + mb)
18088  DO ma = 1, 4
18089  p_index = p_index + 1
18090  tmp = scale*prim(p_index)
18091  ks_bc = ks_bc + tmp*pad((md - 1)*4 + ma)
18092  ks_bd = ks_bd + tmp*pac((mc - 1)*4 + ma)
18093  kad((md - 1)*4 + ma) = kad((md - 1)*4 + ma) - tmp*p_bc
18094  kac((mc - 1)*4 + ma) = kac((mc - 1)*4 + ma) - tmp*p_bd
18095  END DO
18096  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
18097  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
18098  END DO
18099  END DO
18100  END DO
18101  END SUBROUTINE block_4_2_2_1
18102 ! **************************************************************************************************
18103 !> \brief ...
18104 !> \param md_max ...
18105 !> \param kbd ...
18106 !> \param kbc ...
18107 !> \param kad ...
18108 !> \param kac ...
18109 !> \param pbd ...
18110 !> \param pbc ...
18111 !> \param pad ...
18112 !> \param pac ...
18113 !> \param prim ...
18114 !> \param scale ...
18115 ! **************************************************************************************************
18116  SUBROUTINE block_4_2_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
18117  INTEGER :: md_max
18118  REAL(kind=dp) :: kbd(2*md_max), kbc(2*2), kad(4*md_max), kac(4*2), pbd(2*md_max), pbc(2*2), &
18119  pad(4*md_max), pac(4*2), prim(4*2*2*md_max), scale
18120 
18121  INTEGER :: ma, mb, mc, md, p_index
18122  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
18123 
18124  kbd(1:2*md_max) = 0.0_dp
18125  kbc(1:2*2) = 0.0_dp
18126  kad(1:4*md_max) = 0.0_dp
18127  kac(1:4*2) = 0.0_dp
18128  p_index = 0
18129  DO md = 1, md_max
18130  DO mc = 1, 2
18131  DO mb = 1, 2
18132  ks_bd = 0.0_dp
18133  ks_bc = 0.0_dp
18134  p_bd = pbd((md - 1)*2 + mb)
18135  p_bc = pbc((mc - 1)*2 + mb)
18136  DO ma = 1, 4
18137  p_index = p_index + 1
18138  tmp = scale*prim(p_index)
18139  ks_bc = ks_bc + tmp*pad((md - 1)*4 + ma)
18140  ks_bd = ks_bd + tmp*pac((mc - 1)*4 + ma)
18141  kad((md - 1)*4 + ma) = kad((md - 1)*4 + ma) - tmp*p_bc
18142  kac((mc - 1)*4 + ma) = kac((mc - 1)*4 + ma) - tmp*p_bd
18143  END DO
18144  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
18145  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
18146  END DO
18147  END DO
18148  END DO
18149  END SUBROUTINE block_4_2_2
18150 ! **************************************************************************************************
18151 !> \brief ...
18152 !> \param mc_max ...
18153 !> \param md_max ...
18154 !> \param kbd ...
18155 !> \param kbc ...
18156 !> \param kad ...
18157 !> \param kac ...
18158 !> \param pbd ...
18159 !> \param pbc ...
18160 !> \param pad ...
18161 !> \param pac ...
18162 !> \param prim ...
18163 !> \param scale ...
18164 ! **************************************************************************************************
18165  SUBROUTINE block_4_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
18166  INTEGER :: mc_max, md_max
18167  REAL(kind=dp) :: kbd(2*md_max), kbc(2*mc_max), kad(4*md_max), kac(4*mc_max), pbd(2*md_max), &
18168  pbc(2*mc_max), pad(4*md_max), pac(4*mc_max), prim(4*2*mc_max*md_max), scale
18169 
18170  INTEGER :: ma, mb, mc, md, p_index
18171  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
18172 
18173  kbd(1:2*md_max) = 0.0_dp
18174  kbc(1:2*mc_max) = 0.0_dp
18175  kad(1:4*md_max) = 0.0_dp
18176  kac(1:4*mc_max) = 0.0_dp
18177  p_index = 0
18178  DO md = 1, md_max
18179  DO mc = 1, mc_max
18180  DO mb = 1, 2
18181  ks_bd = 0.0_dp
18182  ks_bc = 0.0_dp
18183  p_bd = pbd((md - 1)*2 + mb)
18184  p_bc = pbc((mc - 1)*2 + mb)
18185  DO ma = 1, 4
18186  p_index = p_index + 1
18187  tmp = scale*prim(p_index)
18188  ks_bc = ks_bc + tmp*pad((md - 1)*4 + ma)
18189  ks_bd = ks_bd + tmp*pac((mc - 1)*4 + ma)
18190  kad((md - 1)*4 + ma) = kad((md - 1)*4 + ma) - tmp*p_bc
18191  kac((mc - 1)*4 + ma) = kac((mc - 1)*4 + ma) - tmp*p_bd
18192  END DO
18193  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
18194  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
18195  END DO
18196  END DO
18197  END DO
18198  END SUBROUTINE block_4_2
18199 ! **************************************************************************************************
18200 !> \brief ...
18201 !> \param kbd ...
18202 !> \param kbc ...
18203 !> \param kad ...
18204 !> \param kac ...
18205 !> \param pbd ...
18206 !> \param pbc ...
18207 !> \param pad ...
18208 !> \param pac ...
18209 !> \param prim ...
18210 !> \param scale ...
18211 ! **************************************************************************************************
18212  SUBROUTINE block_4_3_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
18213  REAL(kind=dp) :: kbd(3*1), kbc(3*1), kad(4*1), kac(4*1), &
18214  pbd(3*1), pbc(3*1), pad(4*1), &
18215  pac(4*1), prim(4*3*1*1), scale
18216 
18217  INTEGER :: ma, mb, mc, md, p_index
18218  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
18219 
18220  kbd(1:3*1) = 0.0_dp
18221  kbc(1:3*1) = 0.0_dp
18222  kad(1:4*1) = 0.0_dp
18223  kac(1:4*1) = 0.0_dp
18224  p_index = 0
18225  DO md = 1, 1
18226  DO mc = 1, 1
18227  DO mb = 1, 3
18228  ks_bd = 0.0_dp
18229  ks_bc = 0.0_dp
18230  p_bd = pbd((md - 1)*3 + mb)
18231  p_bc = pbc((mc - 1)*3 + mb)
18232  DO ma = 1, 4
18233  p_index = p_index + 1
18234  tmp = scale*prim(p_index)
18235  ks_bc = ks_bc + tmp*pad((md - 1)*4 + ma)
18236  ks_bd = ks_bd + tmp*pac((mc - 1)*4 + ma)
18237  kad((md - 1)*4 + ma) = kad((md - 1)*4 + ma) - tmp*p_bc
18238  kac((mc - 1)*4 + ma) = kac((mc - 1)*4 + ma) - tmp*p_bd
18239  END DO
18240  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
18241  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
18242  END DO
18243  END DO
18244  END DO
18245  END SUBROUTINE block_4_3_1_1
18246 ! **************************************************************************************************
18247 !> \brief ...
18248 !> \param md_max ...
18249 !> \param kbd ...
18250 !> \param kbc ...
18251 !> \param kad ...
18252 !> \param kac ...
18253 !> \param pbd ...
18254 !> \param pbc ...
18255 !> \param pad ...
18256 !> \param pac ...
18257 !> \param prim ...
18258 !> \param scale ...
18259 ! **************************************************************************************************
18260  SUBROUTINE block_4_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
18261  INTEGER :: md_max
18262  REAL(kind=dp) :: kbd(3*md_max), kbc(3*1), kad(4*md_max), kac(4*1), pbd(3*md_max), pbc(3*1), &
18263  pad(4*md_max), pac(4*1), prim(4*3*1*md_max), scale
18264 
18265  INTEGER :: ma, mb, mc, md, p_index
18266  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
18267 
18268  kbd(1:3*md_max) = 0.0_dp
18269  kbc(1:3*1) = 0.0_dp
18270  kad(1:4*md_max) = 0.0_dp
18271  kac(1:4*1) = 0.0_dp
18272  p_index = 0
18273  DO md = 1, md_max
18274  DO mc = 1, 1
18275  DO mb = 1, 3
18276  ks_bd = 0.0_dp
18277  ks_bc = 0.0_dp
18278  p_bd = pbd((md - 1)*3 + mb)
18279  p_bc = pbc((mc - 1)*3 + mb)
18280  DO ma = 1, 4
18281  p_index = p_index + 1
18282  tmp = scale*prim(p_index)
18283  ks_bc = ks_bc + tmp*pad((md - 1)*4 + ma)
18284  ks_bd = ks_bd + tmp*pac((mc - 1)*4 + ma)
18285  kad((md - 1)*4 + ma) = kad((md - 1)*4 + ma) - tmp*p_bc
18286  kac((mc - 1)*4 + ma) = kac((mc - 1)*4 + ma) - tmp*p_bd
18287  END DO
18288  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
18289  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
18290  END DO
18291  END DO
18292  END DO
18293  END SUBROUTINE block_4_3_1
18294 ! **************************************************************************************************
18295 !> \brief ...
18296 !> \param mc_max ...
18297 !> \param md_max ...
18298 !> \param kbd ...
18299 !> \param kbc ...
18300 !> \param kad ...
18301 !> \param kac ...
18302 !> \param pbd ...
18303 !> \param pbc ...
18304 !> \param pad ...
18305 !> \param pac ...
18306 !> \param prim ...
18307 !> \param scale ...
18308 ! **************************************************************************************************
18309  SUBROUTINE block_4_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
18310  INTEGER :: mc_max, md_max
18311  REAL(kind=dp) :: kbd(3*md_max), kbc(3*mc_max), kad(4*md_max), kac(4*mc_max), pbd(3*md_max), &
18312  pbc(3*mc_max), pad(4*md_max), pac(4*mc_max), prim(4*3*mc_max*md_max), scale
18313 
18314  INTEGER :: ma, mb, mc, md, p_index
18315  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
18316 
18317  kbd(1:3*md_max) = 0.0_dp
18318  kbc(1:3*mc_max) = 0.0_dp
18319  kad(1:4*md_max) = 0.0_dp
18320  kac(1:4*mc_max) = 0.0_dp
18321  p_index = 0
18322  DO md = 1, md_max
18323  DO mc = 1, mc_max
18324  DO mb = 1, 3
18325  ks_bd = 0.0_dp
18326  ks_bc = 0.0_dp
18327  p_bd = pbd((md - 1)*3 + mb)
18328  p_bc = pbc((mc - 1)*3 + mb)
18329  DO ma = 1, 4
18330  p_index = p_index + 1
18331  tmp = scale*prim(p_index)
18332  ks_bc = ks_bc + tmp*pad((md - 1)*4 + ma)
18333  ks_bd = ks_bd + tmp*pac((mc - 1)*4 + ma)
18334  kad((md - 1)*4 + ma) = kad((md - 1)*4 + ma) - tmp*p_bc
18335  kac((mc - 1)*4 + ma) = kac((mc - 1)*4 + ma) - tmp*p_bd
18336  END DO
18337  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
18338  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
18339  END DO
18340  END DO
18341  END DO
18342  END SUBROUTINE block_4_3
18343 ! **************************************************************************************************
18344 !> \brief ...
18345 !> \param kbd ...
18346 !> \param kbc ...
18347 !> \param kad ...
18348 !> \param kac ...
18349 !> \param pbd ...
18350 !> \param pbc ...
18351 !> \param pad ...
18352 !> \param pac ...
18353 !> \param prim ...
18354 !> \param scale ...
18355 ! **************************************************************************************************
18356  SUBROUTINE block_4_4_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
18357  REAL(kind=dp) :: kbd(4*1), kbc(4*1), kad(4*1), kac(4*1), &
18358  pbd(4*1), pbc(4*1), pad(4*1), &
18359  pac(4*1), prim(4*4*1*1), scale
18360 
18361  INTEGER :: ma, mb, mc, md, p_index
18362  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
18363 
18364  kbd(1:4*1) = 0.0_dp
18365  kbc(1:4*1) = 0.0_dp
18366  kad(1:4*1) = 0.0_dp
18367  kac(1:4*1) = 0.0_dp
18368  p_index = 0
18369  DO md = 1, 1
18370  DO mc = 1, 1
18371  DO mb = 1, 4
18372  ks_bd = 0.0_dp
18373  ks_bc = 0.0_dp
18374  p_bd = pbd((md - 1)*4 + mb)
18375  p_bc = pbc((mc - 1)*4 + mb)
18376  DO ma = 1, 4
18377  p_index = p_index + 1
18378  tmp = scale*prim(p_index)
18379  ks_bc = ks_bc + tmp*pad((md - 1)*4 + ma)
18380  ks_bd = ks_bd + tmp*pac((mc - 1)*4 + ma)
18381  kad((md - 1)*4 + ma) = kad((md - 1)*4 + ma) - tmp*p_bc
18382  kac((mc - 1)*4 + ma) = kac((mc - 1)*4 + ma) - tmp*p_bd
18383  END DO
18384  kbd((md - 1)*4 + mb) = kbd((md - 1)*4 + mb) - ks_bd
18385  kbc((mc - 1)*4 + mb) = kbc((mc - 1)*4 + mb) - ks_bc
18386  END DO
18387  END DO
18388  END DO
18389  END SUBROUTINE block_4_4_1_1
18390 ! **************************************************************************************************
18391 !> \brief ...
18392 !> \param md_max ...
18393 !> \param kbd ...
18394 !> \param kbc ...
18395 !> \param kad ...
18396 !> \param kac ...
18397 !> \param pbd ...
18398 !> \param pbc ...
18399 !> \param pad ...
18400 !> \param pac ...
18401 !> \param prim ...
18402 !> \param scale ...
18403 ! **************************************************************************************************
18404  SUBROUTINE block_4_4_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
18405  INTEGER :: md_max
18406  REAL(kind=dp) :: kbd(4*md_max), kbc(4*1), kad(4*md_max), kac(4*1), pbd(4*md_max), pbc(4*1), &
18407  pad(4*md_max), pac(4*1), prim(4*4*1*md_max), scale
18408 
18409  INTEGER :: ma, mb, mc, md, p_index
18410  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
18411 
18412  kbd(1:4*md_max) = 0.0_dp
18413  kbc(1:4*1) = 0.0_dp
18414  kad(1:4*md_max) = 0.0_dp
18415  kac(1:4*1) = 0.0_dp
18416  p_index = 0
18417  DO md = 1, md_max
18418  DO mc = 1, 1
18419  DO mb = 1, 4
18420  ks_bd = 0.0_dp
18421  ks_bc = 0.0_dp
18422  p_bd = pbd((md - 1)*4 + mb)
18423  p_bc = pbc((mc - 1)*4 + mb)
18424  DO ma = 1, 4
18425  p_index = p_index + 1
18426  tmp = scale*prim(p_index)
18427  ks_bc = ks_bc + tmp*pad((md - 1)*4 + ma)
18428  ks_bd = ks_bd + tmp*pac((mc - 1)*4 + ma)
18429  kad((md - 1)*4 + ma) = kad((md - 1)*4 + ma) - tmp*p_bc
18430  kac((mc - 1)*4 + ma) = kac((mc - 1)*4 + ma) - tmp*p_bd
18431  END DO
18432  kbd((md - 1)*4 + mb) = kbd((md - 1)*4 + mb) - ks_bd
18433  kbc((mc - 1)*4 + mb) = kbc((mc - 1)*4 + mb) - ks_bc
18434  END DO
18435  END DO
18436  END DO
18437  END SUBROUTINE block_4_4_1
18438 ! **************************************************************************************************
18439 !> \brief ...
18440 !> \param mc_max ...
18441 !> \param md_max ...
18442 !> \param kbd ...
18443 !> \param kbc ...
18444 !> \param kad ...
18445 !> \param kac ...
18446 !> \param pbd ...
18447 !> \param pbc ...
18448 !> \param pad ...
18449 !> \param pac ...
18450 !> \param prim ...
18451 !> \param scale ...
18452 ! **************************************************************************************************
18453  SUBROUTINE block_4_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
18454  INTEGER :: mc_max, md_max
18455  REAL(kind=dp) :: kbd(4*md_max), kbc(4*mc_max), kad(4*md_max), kac(4*mc_max), pbd(4*md_max), &
18456  pbc(4*mc_max), pad(4*md_max), pac(4*mc_max), prim(4*4*mc_max*md_max), scale
18457 
18458  INTEGER :: ma, mb, mc, md, p_index
18459  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
18460 
18461  kbd(1:4*md_max) = 0.0_dp
18462  kbc(1:4*mc_max) = 0.0_dp
18463  kad(1:4*md_max) = 0.0_dp
18464  kac(1:4*mc_max) = 0.0_dp
18465  p_index = 0
18466  DO md = 1, md_max
18467  DO mc = 1, mc_max
18468  DO mb = 1, 4
18469  ks_bd = 0.0_dp
18470  ks_bc = 0.0_dp
18471  p_bd = pbd((md - 1)*4 + mb)
18472  p_bc = pbc((mc - 1)*4 + mb)
18473  DO ma = 1, 4
18474  p_index = p_index + 1
18475  tmp = scale*prim(p_index)
18476  ks_bc = ks_bc + tmp*pad((md - 1)*4 + ma)
18477  ks_bd = ks_bd + tmp*pac((mc - 1)*4 + ma)
18478  kad((md - 1)*4 + ma) = kad((md - 1)*4 + ma) - tmp*p_bc
18479  kac((mc - 1)*4 + ma) = kac((mc - 1)*4 + ma) - tmp*p_bd
18480  END DO
18481  kbd((md - 1)*4 + mb) = kbd((md - 1)*4 + mb) - ks_bd
18482  kbc((mc - 1)*4 + mb) = kbc((mc - 1)*4 + mb) - ks_bc
18483  END DO
18484  END DO
18485  END DO
18486  END SUBROUTINE block_4_4
18487 ! **************************************************************************************************
18488 !> \brief ...
18489 !> \param mc_max ...
18490 !> \param md_max ...
18491 !> \param kbd ...
18492 !> \param kbc ...
18493 !> \param kad ...
18494 !> \param kac ...
18495 !> \param pbd ...
18496 !> \param pbc ...
18497 !> \param pad ...
18498 !> \param pac ...
18499 !> \param prim ...
18500 !> \param scale ...
18501 ! **************************************************************************************************
18502  SUBROUTINE block_4_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
18503  INTEGER :: mc_max, md_max
18504  REAL(kind=dp) :: kbd(5*md_max), kbc(5*mc_max), kad(4*md_max), kac(4*mc_max), pbd(5*md_max), &
18505  pbc(5*mc_max), pad(4*md_max), pac(4*mc_max), prim(4*5*mc_max*md_max), scale
18506 
18507  INTEGER :: ma, mb, mc, md, p_index
18508  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
18509 
18510  kbd(1:5*md_max) = 0.0_dp
18511  kbc(1:5*mc_max) = 0.0_dp
18512  kad(1:4*md_max) = 0.0_dp
18513  kac(1:4*mc_max) = 0.0_dp
18514  p_index = 0
18515  DO md = 1, md_max
18516  DO mc = 1, mc_max
18517  DO mb = 1, 5
18518  ks_bd = 0.0_dp
18519  ks_bc = 0.0_dp
18520  p_bd = pbd((md - 1)*5 + mb)
18521  p_bc = pbc((mc - 1)*5 + mb)
18522  DO ma = 1, 4
18523  p_index = p_index + 1
18524  tmp = scale*prim(p_index)
18525  ks_bc = ks_bc + tmp*pad((md - 1)*4 + ma)
18526  ks_bd = ks_bd + tmp*pac((mc - 1)*4 + ma)
18527  kad((md - 1)*4 + ma) = kad((md - 1)*4 + ma) - tmp*p_bc
18528  kac((mc - 1)*4 + ma) = kac((mc - 1)*4 + ma) - tmp*p_bd
18529  END DO
18530  kbd((md - 1)*5 + mb) = kbd((md - 1)*5 + mb) - ks_bd
18531  kbc((mc - 1)*5 + mb) = kbc((mc - 1)*5 + mb) - ks_bc
18532  END DO
18533  END DO
18534  END DO
18535  END SUBROUTINE block_4_5
18536 ! **************************************************************************************************
18537 !> \brief ...
18538 !> \param mc_max ...
18539 !> \param md_max ...
18540 !> \param kbd ...
18541 !> \param kbc ...
18542 !> \param kad ...
18543 !> \param kac ...
18544 !> \param pbd ...
18545 !> \param pbc ...
18546 !> \param pad ...
18547 !> \param pac ...
18548 !> \param prim ...
18549 !> \param scale ...
18550 ! **************************************************************************************************
18551  SUBROUTINE block_4_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
18552  INTEGER :: mc_max, md_max
18553  REAL(kind=dp) :: kbd(6*md_max), kbc(6*mc_max), kad(4*md_max), kac(4*mc_max), pbd(6*md_max), &
18554  pbc(6*mc_max), pad(4*md_max), pac(4*mc_max), prim(4*6*mc_max*md_max), scale
18555 
18556  INTEGER :: ma, mb, mc, md, p_index
18557  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
18558 
18559  kbd(1:6*md_max) = 0.0_dp
18560  kbc(1:6*mc_max) = 0.0_dp
18561  kad(1:4*md_max) = 0.0_dp
18562  kac(1:4*mc_max) = 0.0_dp
18563  p_index = 0
18564  DO md = 1, md_max
18565  DO mc = 1, mc_max
18566  DO mb = 1, 6
18567  ks_bd = 0.0_dp
18568  ks_bc = 0.0_dp
18569  p_bd = pbd((md - 1)*6 + mb)
18570  p_bc = pbc((mc - 1)*6 + mb)
18571  DO ma = 1, 4
18572  p_index = p_index + 1
18573  tmp = scale*prim(p_index)
18574  ks_bc = ks_bc + tmp*pad((md - 1)*4 + ma)
18575  ks_bd = ks_bd + tmp*pac((mc - 1)*4 + ma)
18576  kad((md - 1)*4 + ma) = kad((md - 1)*4 + ma) - tmp*p_bc
18577  kac((mc - 1)*4 + ma) = kac((mc - 1)*4 + ma) - tmp*p_bd
18578  END DO
18579  kbd((md - 1)*6 + mb) = kbd((md - 1)*6 + mb) - ks_bd
18580  kbc((mc - 1)*6 + mb) = kbc((mc - 1)*6 + mb) - ks_bc
18581  END DO
18582  END DO
18583  END DO
18584  END SUBROUTINE block_4_6
18585 ! **************************************************************************************************
18586 !> \brief ...
18587 !> \param mc_max ...
18588 !> \param md_max ...
18589 !> \param kbd ...
18590 !> \param kbc ...
18591 !> \param kad ...
18592 !> \param kac ...
18593 !> \param pbd ...
18594 !> \param pbc ...
18595 !> \param pad ...
18596 !> \param pac ...
18597 !> \param prim ...
18598 !> \param scale ...
18599 ! **************************************************************************************************
18600  SUBROUTINE block_4_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
18601  INTEGER :: mc_max, md_max
18602  REAL(kind=dp) :: kbd(7*md_max), kbc(7*mc_max), kad(4*md_max), kac(4*mc_max), pbd(7*md_max), &
18603  pbc(7*mc_max), pad(4*md_max), pac(4*mc_max), prim(4*7*mc_max*md_max), scale
18604 
18605  INTEGER :: ma, mb, mc, md, p_index
18606  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
18607 
18608  kbd(1:7*md_max) = 0.0_dp
18609  kbc(1:7*mc_max) = 0.0_dp
18610  kad(1:4*md_max) = 0.0_dp
18611  kac(1:4*mc_max) = 0.0_dp
18612  p_index = 0
18613  DO md = 1, md_max
18614  DO mc = 1, mc_max
18615  DO mb = 1, 7
18616  ks_bd = 0.0_dp
18617  ks_bc = 0.0_dp
18618  p_bd = pbd((md - 1)*7 + mb)
18619  p_bc = pbc((mc - 1)*7 + mb)
18620  DO ma = 1, 4
18621  p_index = p_index + 1
18622  tmp = scale*prim(p_index)
18623  ks_bc = ks_bc + tmp*pad((md - 1)*4 + ma)
18624  ks_bd = ks_bd + tmp*pac((mc - 1)*4 + ma)
18625  kad((md - 1)*4 + ma) = kad((md - 1)*4 + ma) - tmp*p_bc
18626  kac((mc - 1)*4 + ma) = kac((mc - 1)*4 + ma) - tmp*p_bd
18627  END DO
18628  kbd((md - 1)*7 + mb) = kbd((md - 1)*7 + mb) - ks_bd
18629  kbc((mc - 1)*7 + mb) = kbc((mc - 1)*7 + mb) - ks_bc
18630  END DO
18631  END DO
18632  END DO
18633  END SUBROUTINE block_4_7
18634 ! **************************************************************************************************
18635 !> \brief ...
18636 !> \param mc_max ...
18637 !> \param md_max ...
18638 !> \param kbd ...
18639 !> \param kbc ...
18640 !> \param kad ...
18641 !> \param kac ...
18642 !> \param pbd ...
18643 !> \param pbc ...
18644 !> \param pad ...
18645 !> \param pac ...
18646 !> \param prim ...
18647 !> \param scale ...
18648 ! **************************************************************************************************
18649  SUBROUTINE block_4_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
18650  INTEGER :: mc_max, md_max
18651  REAL(kind=dp) :: kbd(9*md_max), kbc(9*mc_max), kad(4*md_max), kac(4*mc_max), pbd(9*md_max), &
18652  pbc(9*mc_max), pad(4*md_max), pac(4*mc_max), prim(4*9*mc_max*md_max), scale
18653 
18654  INTEGER :: ma, mb, mc, md, p_index
18655  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
18656 
18657  kbd(1:9*md_max) = 0.0_dp
18658  kbc(1:9*mc_max) = 0.0_dp
18659  kad(1:4*md_max) = 0.0_dp
18660  kac(1:4*mc_max) = 0.0_dp
18661  p_index = 0
18662  DO md = 1, md_max
18663  DO mc = 1, mc_max
18664  DO mb = 1, 9
18665  ks_bd = 0.0_dp
18666  ks_bc = 0.0_dp
18667  p_bd = pbd((md - 1)*9 + mb)
18668  p_bc = pbc((mc - 1)*9 + mb)
18669  DO ma = 1, 4
18670  p_index = p_index + 1
18671  tmp = scale*prim(p_index)
18672  ks_bc = ks_bc + tmp*pad((md - 1)*4 + ma)
18673  ks_bd = ks_bd + tmp*pac((mc - 1)*4 + ma)
18674  kad((md - 1)*4 + ma) = kad((md - 1)*4 + ma) - tmp*p_bc
18675  kac((mc - 1)*4 + ma) = kac((mc - 1)*4 + ma) - tmp*p_bd
18676  END DO
18677  kbd((md - 1)*9 + mb) = kbd((md - 1)*9 + mb) - ks_bd
18678  kbc((mc - 1)*9 + mb) = kbc((mc - 1)*9 + mb) - ks_bc
18679  END DO
18680  END DO
18681  END DO
18682  END SUBROUTINE block_4_9
18683 ! **************************************************************************************************
18684 !> \brief ...
18685 !> \param mc_max ...
18686 !> \param md_max ...
18687 !> \param kbd ...
18688 !> \param kbc ...
18689 !> \param kad ...
18690 !> \param kac ...
18691 !> \param pbd ...
18692 !> \param pbc ...
18693 !> \param pad ...
18694 !> \param pac ...
18695 !> \param prim ...
18696 !> \param scale ...
18697 ! **************************************************************************************************
18698  SUBROUTINE block_4_10(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
18699  INTEGER :: mc_max, md_max
18700  REAL(kind=dp) :: kbd(10*md_max), kbc(10*mc_max), kad(4*md_max), kac(4*mc_max), &
18701  pbd(10*md_max), pbc(10*mc_max), pad(4*md_max), pac(4*mc_max), prim(4*10*mc_max*md_max), &
18702  scale
18703 
18704  INTEGER :: ma, mb, mc, md, p_index
18705  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
18706 
18707  kbd(1:10*md_max) = 0.0_dp
18708  kbc(1:10*mc_max) = 0.0_dp
18709  kad(1:4*md_max) = 0.0_dp
18710  kac(1:4*mc_max) = 0.0_dp
18711  p_index = 0
18712  DO md = 1, md_max
18713  DO mc = 1, mc_max
18714  DO mb = 1, 10
18715  ks_bd = 0.0_dp
18716  ks_bc = 0.0_dp
18717  p_bd = pbd((md - 1)*10 + mb)
18718  p_bc = pbc((mc - 1)*10 + mb)
18719  DO ma = 1, 4
18720  p_index = p_index + 1
18721  tmp = scale*prim(p_index)
18722  ks_bc = ks_bc + tmp*pad((md - 1)*4 + ma)
18723  ks_bd = ks_bd + tmp*pac((mc - 1)*4 + ma)
18724  kad((md - 1)*4 + ma) = kad((md - 1)*4 + ma) - tmp*p_bc
18725  kac((mc - 1)*4 + ma) = kac((mc - 1)*4 + ma) - tmp*p_bd
18726  END DO
18727  kbd((md - 1)*10 + mb) = kbd((md - 1)*10 + mb) - ks_bd
18728  kbc((mc - 1)*10 + mb) = kbc((mc - 1)*10 + mb) - ks_bc
18729  END DO
18730  END DO
18731  END DO
18732  END SUBROUTINE block_4_10
18733 ! **************************************************************************************************
18734 !> \brief ...
18735 !> \param mc_max ...
18736 !> \param md_max ...
18737 !> \param kbd ...
18738 !> \param kbc ...
18739 !> \param kad ...
18740 !> \param kac ...
18741 !> \param pbd ...
18742 !> \param pbc ...
18743 !> \param pad ...
18744 !> \param pac ...
18745 !> \param prim ...
18746 !> \param scale ...
18747 ! **************************************************************************************************
18748  SUBROUTINE block_4_11(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
18749  INTEGER :: mc_max, md_max
18750  REAL(kind=dp) :: kbd(11*md_max), kbc(11*mc_max), kad(4*md_max), kac(4*mc_max), &
18751  pbd(11*md_max), pbc(11*mc_max), pad(4*md_max), pac(4*mc_max), prim(4*11*mc_max*md_max), &
18752  scale
18753 
18754  INTEGER :: ma, mb, mc, md, p_index
18755  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
18756 
18757  kbd(1:11*md_max) = 0.0_dp
18758  kbc(1:11*mc_max) = 0.0_dp
18759  kad(1:4*md_max) = 0.0_dp
18760  kac(1:4*mc_max) = 0.0_dp
18761  p_index = 0
18762  DO md = 1, md_max
18763  DO mc = 1, mc_max
18764  DO mb = 1, 11
18765  ks_bd = 0.0_dp
18766  ks_bc = 0.0_dp
18767  p_bd = pbd((md - 1)*11 + mb)
18768  p_bc = pbc((mc - 1)*11 + mb)
18769  DO ma = 1, 4
18770  p_index = p_index + 1
18771  tmp = scale*prim(p_index)
18772  ks_bc = ks_bc + tmp*pad((md - 1)*4 + ma)
18773  ks_bd = ks_bd + tmp*pac((mc - 1)*4 + ma)
18774  kad((md - 1)*4 + ma) = kad((md - 1)*4 + ma) - tmp*p_bc
18775  kac((mc - 1)*4 + ma) = kac((mc - 1)*4 + ma) - tmp*p_bd
18776  END DO
18777  kbd((md - 1)*11 + mb) = kbd((md - 1)*11 + mb) - ks_bd
18778  kbc((mc - 1)*11 + mb) = kbc((mc - 1)*11 + mb) - ks_bc
18779  END DO
18780  END DO
18781  END DO
18782  END SUBROUTINE block_4_11
18783 ! **************************************************************************************************
18784 !> \brief ...
18785 !> \param mc_max ...
18786 !> \param md_max ...
18787 !> \param kbd ...
18788 !> \param kbc ...
18789 !> \param kad ...
18790 !> \param kac ...
18791 !> \param pbd ...
18792 !> \param pbc ...
18793 !> \param pad ...
18794 !> \param pac ...
18795 !> \param prim ...
18796 !> \param scale ...
18797 ! **************************************************************************************************
18798  SUBROUTINE block_4_15(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
18799  INTEGER :: mc_max, md_max
18800  REAL(kind=dp) :: kbd(15*md_max), kbc(15*mc_max), kad(4*md_max), kac(4*mc_max), &
18801  pbd(15*md_max), pbc(15*mc_max), pad(4*md_max), pac(4*mc_max), prim(4*15*mc_max*md_max), &
18802  scale
18803 
18804  INTEGER :: ma, mb, mc, md, p_index
18805  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
18806 
18807  kbd(1:15*md_max) = 0.0_dp
18808  kbc(1:15*mc_max) = 0.0_dp
18809  kad(1:4*md_max) = 0.0_dp
18810  kac(1:4*mc_max) = 0.0_dp
18811  p_index = 0
18812  DO md = 1, md_max
18813  DO mc = 1, mc_max
18814  DO mb = 1, 15
18815  ks_bd = 0.0_dp
18816  ks_bc = 0.0_dp
18817  p_bd = pbd((md - 1)*15 + mb)
18818  p_bc = pbc((mc - 1)*15 + mb)
18819  DO ma = 1, 4
18820  p_index = p_index + 1
18821  tmp = scale*prim(p_index)
18822  ks_bc = ks_bc + tmp*pad((md - 1)*4 + ma)
18823  ks_bd = ks_bd + tmp*pac((mc - 1)*4 + ma)
18824  kad((md - 1)*4 + ma) = kad((md - 1)*4 + ma) - tmp*p_bc
18825  kac((mc - 1)*4 + ma) = kac((mc - 1)*4 + ma) - tmp*p_bd
18826  END DO
18827  kbd((md - 1)*15 + mb) = kbd((md - 1)*15 + mb) - ks_bd
18828  kbc((mc - 1)*15 + mb) = kbc((mc - 1)*15 + mb) - ks_bc
18829  END DO
18830  END DO
18831  END DO
18832  END SUBROUTINE block_4_15
18833 ! **************************************************************************************************
18834 !> \brief ...
18835 !> \param kbd ...
18836 !> \param kbc ...
18837 !> \param kad ...
18838 !> \param kac ...
18839 !> \param pbd ...
18840 !> \param pbc ...
18841 !> \param pad ...
18842 !> \param pac ...
18843 !> \param prim ...
18844 !> \param scale ...
18845 ! **************************************************************************************************
18846  SUBROUTINE block_5_1_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
18847  REAL(kind=dp) :: kbd(1*1), kbc(1*1), kad(5*1), kac(5*1), &
18848  pbd(1*1), pbc(1*1), pad(5*1), &
18849  pac(5*1), prim(5*1*1*1), scale
18850 
18851  INTEGER :: ma, mb, mc, md, p_index
18852  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
18853 
18854  kbd(1:1*1) = 0.0_dp
18855  kbc(1:1*1) = 0.0_dp
18856  kad(1:5*1) = 0.0_dp
18857  kac(1:5*1) = 0.0_dp
18858  p_index = 0
18859  DO md = 1, 1
18860  DO mc = 1, 1
18861  DO mb = 1, 1
18862  ks_bd = 0.0_dp
18863  ks_bc = 0.0_dp
18864  p_bd = pbd((md - 1)*1 + mb)
18865  p_bc = pbc((mc - 1)*1 + mb)
18866  DO ma = 1, 5
18867  p_index = p_index + 1
18868  tmp = scale*prim(p_index)
18869  ks_bc = ks_bc + tmp*pad((md - 1)*5 + ma)
18870  ks_bd = ks_bd + tmp*pac((mc - 1)*5 + ma)
18871  kad((md - 1)*5 + ma) = kad((md - 1)*5 + ma) - tmp*p_bc
18872  kac((mc - 1)*5 + ma) = kac((mc - 1)*5 + ma) - tmp*p_bd
18873  END DO
18874  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
18875  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
18876  END DO
18877  END DO
18878  END DO
18879  END SUBROUTINE block_5_1_1_1
18880 ! **************************************************************************************************
18881 !> \brief ...
18882 !> \param kbd ...
18883 !> \param kbc ...
18884 !> \param kad ...
18885 !> \param kac ...
18886 !> \param pbd ...
18887 !> \param pbc ...
18888 !> \param pad ...
18889 !> \param pac ...
18890 !> \param prim ...
18891 !> \param scale ...
18892 ! **************************************************************************************************
18893  SUBROUTINE block_5_1_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
18894  REAL(kind=dp) :: kbd(1*2), kbc(1*1), kad(5*2), kac(5*1), &
18895  pbd(1*2), pbc(1*1), pad(5*2), &
18896  pac(5*1), prim(5*1*1*2), scale
18897 
18898  INTEGER :: ma, mb, mc, md, p_index
18899  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
18900 
18901  kbd(1:1*2) = 0.0_dp
18902  kbc(1:1*1) = 0.0_dp
18903  kad(1:5*2) = 0.0_dp
18904  kac(1:5*1) = 0.0_dp
18905  p_index = 0
18906  DO md = 1, 2
18907  DO mc = 1, 1
18908  DO mb = 1, 1
18909  ks_bd = 0.0_dp
18910  ks_bc = 0.0_dp
18911  p_bd = pbd((md - 1)*1 + mb)
18912  p_bc = pbc((mc - 1)*1 + mb)
18913  DO ma = 1, 5
18914  p_index = p_index + 1
18915  tmp = scale*prim(p_index)
18916  ks_bc = ks_bc + tmp*pad((md - 1)*5 + ma)
18917  ks_bd = ks_bd + tmp*pac((mc - 1)*5 + ma)
18918  kad((md - 1)*5 + ma) = kad((md - 1)*5 + ma) - tmp*p_bc
18919  kac((mc - 1)*5 + ma) = kac((mc - 1)*5 + ma) - tmp*p_bd
18920  END DO
18921  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
18922  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
18923  END DO
18924  END DO
18925  END DO
18926  END SUBROUTINE block_5_1_1_2
18927 ! **************************************************************************************************
18928 !> \brief ...
18929 !> \param kbd ...
18930 !> \param kbc ...
18931 !> \param kad ...
18932 !> \param kac ...
18933 !> \param pbd ...
18934 !> \param pbc ...
18935 !> \param pad ...
18936 !> \param pac ...
18937 !> \param prim ...
18938 !> \param scale ...
18939 ! **************************************************************************************************
18940  SUBROUTINE block_5_1_1_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
18941  REAL(kind=dp) :: kbd(1*3), kbc(1*1), kad(5*3), kac(5*1), &
18942  pbd(1*3), pbc(1*1), pad(5*3), &
18943  pac(5*1), prim(5*1*1*3), scale
18944 
18945  INTEGER :: ma, mb, mc, md, p_index
18946  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
18947 
18948  kbd(1:1*3) = 0.0_dp
18949  kbc(1:1*1) = 0.0_dp
18950  kad(1:5*3) = 0.0_dp
18951  kac(1:5*1) = 0.0_dp
18952  p_index = 0
18953  DO md = 1, 3
18954  DO mc = 1, 1
18955  DO mb = 1, 1
18956  ks_bd = 0.0_dp
18957  ks_bc = 0.0_dp
18958  p_bd = pbd((md - 1)*1 + mb)
18959  p_bc = pbc((mc - 1)*1 + mb)
18960  DO ma = 1, 5
18961  p_index = p_index + 1
18962  tmp = scale*prim(p_index)
18963  ks_bc = ks_bc + tmp*pad((md - 1)*5 + ma)
18964  ks_bd = ks_bd + tmp*pac((mc - 1)*5 + ma)
18965  kad((md - 1)*5 + ma) = kad((md - 1)*5 + ma) - tmp*p_bc
18966  kac((mc - 1)*5 + ma) = kac((mc - 1)*5 + ma) - tmp*p_bd
18967  END DO
18968  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
18969  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
18970  END DO
18971  END DO
18972  END DO
18973  END SUBROUTINE block_5_1_1_3
18974 ! **************************************************************************************************
18975 !> \brief ...
18976 !> \param md_max ...
18977 !> \param kbd ...
18978 !> \param kbc ...
18979 !> \param kad ...
18980 !> \param kac ...
18981 !> \param pbd ...
18982 !> \param pbc ...
18983 !> \param pad ...
18984 !> \param pac ...
18985 !> \param prim ...
18986 !> \param scale ...
18987 ! **************************************************************************************************
18988  SUBROUTINE block_5_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
18989  INTEGER :: md_max
18990  REAL(kind=dp) :: kbd(1*md_max), kbc(1*1), kad(5*md_max), kac(5*1), pbd(1*md_max), pbc(1*1), &
18991  pad(5*md_max), pac(5*1), prim(5*1*1*md_max), scale
18992 
18993  INTEGER :: ma, mb, mc, md, p_index
18994  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
18995 
18996  kbd(1:1*md_max) = 0.0_dp
18997  kbc(1:1*1) = 0.0_dp
18998  kad(1:5*md_max) = 0.0_dp
18999  kac(1:5*1) = 0.0_dp
19000  p_index = 0
19001  DO md = 1, md_max
19002  DO mc = 1, 1
19003  DO mb = 1, 1
19004  ks_bd = 0.0_dp
19005  ks_bc = 0.0_dp
19006  p_bd = pbd((md - 1)*1 + mb)
19007  p_bc = pbc((mc - 1)*1 + mb)
19008  DO ma = 1, 5
19009  p_index = p_index + 1
19010  tmp = scale*prim(p_index)
19011  ks_bc = ks_bc + tmp*pad((md - 1)*5 + ma)
19012  ks_bd = ks_bd + tmp*pac((mc - 1)*5 + ma)
19013  kad((md - 1)*5 + ma) = kad((md - 1)*5 + ma) - tmp*p_bc
19014  kac((mc - 1)*5 + ma) = kac((mc - 1)*5 + ma) - tmp*p_bd
19015  END DO
19016  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
19017  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
19018  END DO
19019  END DO
19020  END DO
19021  END SUBROUTINE block_5_1_1
19022 ! **************************************************************************************************
19023 !> \brief ...
19024 !> \param kbd ...
19025 !> \param kbc ...
19026 !> \param kad ...
19027 !> \param kac ...
19028 !> \param pbd ...
19029 !> \param pbc ...
19030 !> \param pad ...
19031 !> \param pac ...
19032 !> \param prim ...
19033 !> \param scale ...
19034 ! **************************************************************************************************
19035  SUBROUTINE block_5_1_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
19036  REAL(kind=dp) :: kbd(1*1), kbc(1*2), kad(5*1), kac(5*2), &
19037  pbd(1*1), pbc(1*2), pad(5*1), &
19038  pac(5*2), prim(5*1*2*1), scale
19039 
19040  INTEGER :: ma, mb, mc, md, p_index
19041  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
19042 
19043  kbd(1:1*1) = 0.0_dp
19044  kbc(1:1*2) = 0.0_dp
19045  kad(1:5*1) = 0.0_dp
19046  kac(1:5*2) = 0.0_dp
19047  p_index = 0
19048  DO md = 1, 1
19049  DO mc = 1, 2
19050  DO mb = 1, 1
19051  ks_bd = 0.0_dp
19052  ks_bc = 0.0_dp
19053  p_bd = pbd((md - 1)*1 + mb)
19054  p_bc = pbc((mc - 1)*1 + mb)
19055  DO ma = 1, 5
19056  p_index = p_index + 1
19057  tmp = scale*prim(p_index)
19058  ks_bc = ks_bc + tmp*pad((md - 1)*5 + ma)
19059  ks_bd = ks_bd + tmp*pac((mc - 1)*5 + ma)
19060  kad((md - 1)*5 + ma) = kad((md - 1)*5 + ma) - tmp*p_bc
19061  kac((mc - 1)*5 + ma) = kac((mc - 1)*5 + ma) - tmp*p_bd
19062  END DO
19063  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
19064  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
19065  END DO
19066  END DO
19067  END DO
19068  END SUBROUTINE block_5_1_2_1
19069 ! **************************************************************************************************
19070 !> \brief ...
19071 !> \param md_max ...
19072 !> \param kbd ...
19073 !> \param kbc ...
19074 !> \param kad ...
19075 !> \param kac ...
19076 !> \param pbd ...
19077 !> \param pbc ...
19078 !> \param pad ...
19079 !> \param pac ...
19080 !> \param prim ...
19081 !> \param scale ...
19082 ! **************************************************************************************************
19083  SUBROUTINE block_5_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
19084  INTEGER :: md_max
19085  REAL(kind=dp) :: kbd(1*md_max), kbc(1*2), kad(5*md_max), kac(5*2), pbd(1*md_max), pbc(1*2), &
19086  pad(5*md_max), pac(5*2), prim(5*1*2*md_max), scale
19087 
19088  INTEGER :: ma, mb, mc, md, p_index
19089  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
19090 
19091  kbd(1:1*md_max) = 0.0_dp
19092  kbc(1:1*2) = 0.0_dp
19093  kad(1:5*md_max) = 0.0_dp
19094  kac(1:5*2) = 0.0_dp
19095  p_index = 0
19096  DO md = 1, md_max
19097  DO mc = 1, 2
19098  DO mb = 1, 1
19099  ks_bd = 0.0_dp
19100  ks_bc = 0.0_dp
19101  p_bd = pbd((md - 1)*1 + mb)
19102  p_bc = pbc((mc - 1)*1 + mb)
19103  DO ma = 1, 5
19104  p_index = p_index + 1
19105  tmp = scale*prim(p_index)
19106  ks_bc = ks_bc + tmp*pad((md - 1)*5 + ma)
19107  ks_bd = ks_bd + tmp*pac((mc - 1)*5 + ma)
19108  kad((md - 1)*5 + ma) = kad((md - 1)*5 + ma) - tmp*p_bc
19109  kac((mc - 1)*5 + ma) = kac((mc - 1)*5 + ma) - tmp*p_bd
19110  END DO
19111  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
19112  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
19113  END DO
19114  END DO
19115  END DO
19116  END SUBROUTINE block_5_1_2
19117 ! **************************************************************************************************
19118 !> \brief ...
19119 !> \param kbd ...
19120 !> \param kbc ...
19121 !> \param kad ...
19122 !> \param kac ...
19123 !> \param pbd ...
19124 !> \param pbc ...
19125 !> \param pad ...
19126 !> \param pac ...
19127 !> \param prim ...
19128 !> \param scale ...
19129 ! **************************************************************************************************
19130  SUBROUTINE block_5_1_3_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
19131  REAL(kind=dp) :: kbd(1*1), kbc(1*3), kad(5*1), kac(5*3), &
19132  pbd(1*1), pbc(1*3), pad(5*1), &
19133  pac(5*3), prim(5*1*3*1), scale
19134 
19135  INTEGER :: ma, mb, mc, md, p_index
19136  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
19137 
19138  kbd(1:1*1) = 0.0_dp
19139  kbc(1:1*3) = 0.0_dp
19140  kad(1:5*1) = 0.0_dp
19141  kac(1:5*3) = 0.0_dp
19142  p_index = 0
19143  DO md = 1, 1
19144  DO mc = 1, 3
19145  DO mb = 1, 1
19146  ks_bd = 0.0_dp
19147  ks_bc = 0.0_dp
19148  p_bd = pbd((md - 1)*1 + mb)
19149  p_bc = pbc((mc - 1)*1 + mb)
19150  DO ma = 1, 5
19151  p_index = p_index + 1
19152  tmp = scale*prim(p_index)
19153  ks_bc = ks_bc + tmp*pad((md - 1)*5 + ma)
19154  ks_bd = ks_bd + tmp*pac((mc - 1)*5 + ma)
19155  kad((md - 1)*5 + ma) = kad((md - 1)*5 + ma) - tmp*p_bc
19156  kac((mc - 1)*5 + ma) = kac((mc - 1)*5 + ma) - tmp*p_bd
19157  END DO
19158  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
19159  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
19160  END DO
19161  END DO
19162  END DO
19163  END SUBROUTINE block_5_1_3_1
19164 ! **************************************************************************************************
19165 !> \brief ...
19166 !> \param md_max ...
19167 !> \param kbd ...
19168 !> \param kbc ...
19169 !> \param kad ...
19170 !> \param kac ...
19171 !> \param pbd ...
19172 !> \param pbc ...
19173 !> \param pad ...
19174 !> \param pac ...
19175 !> \param prim ...
19176 !> \param scale ...
19177 ! **************************************************************************************************
19178  SUBROUTINE block_5_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
19179  INTEGER :: md_max
19180  REAL(kind=dp) :: kbd(1*md_max), kbc(1*3), kad(5*md_max), kac(5*3), pbd(1*md_max), pbc(1*3), &
19181  pad(5*md_max), pac(5*3), prim(5*1*3*md_max), scale
19182 
19183  INTEGER :: ma, mb, mc, md, p_index
19184  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
19185 
19186  kbd(1:1*md_max) = 0.0_dp
19187  kbc(1:1*3) = 0.0_dp
19188  kad(1:5*md_max) = 0.0_dp
19189  kac(1:5*3) = 0.0_dp
19190  p_index = 0
19191  DO md = 1, md_max
19192  DO mc = 1, 3
19193  DO mb = 1, 1
19194  ks_bd = 0.0_dp
19195  ks_bc = 0.0_dp
19196  p_bd = pbd((md - 1)*1 + mb)
19197  p_bc = pbc((mc - 1)*1 + mb)
19198  DO ma = 1, 5
19199  p_index = p_index + 1
19200  tmp = scale*prim(p_index)
19201  ks_bc = ks_bc + tmp*pad((md - 1)*5 + ma)
19202  ks_bd = ks_bd + tmp*pac((mc - 1)*5 + ma)
19203  kad((md - 1)*5 + ma) = kad((md - 1)*5 + ma) - tmp*p_bc
19204  kac((mc - 1)*5 + ma) = kac((mc - 1)*5 + ma) - tmp*p_bd
19205  END DO
19206  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
19207  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
19208  END DO
19209  END DO
19210  END DO
19211  END SUBROUTINE block_5_1_3
19212 ! **************************************************************************************************
19213 !> \brief ...
19214 !> \param mc_max ...
19215 !> \param md_max ...
19216 !> \param kbd ...
19217 !> \param kbc ...
19218 !> \param kad ...
19219 !> \param kac ...
19220 !> \param pbd ...
19221 !> \param pbc ...
19222 !> \param pad ...
19223 !> \param pac ...
19224 !> \param prim ...
19225 !> \param scale ...
19226 ! **************************************************************************************************
19227  SUBROUTINE block_5_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
19228  INTEGER :: mc_max, md_max
19229  REAL(kind=dp) :: kbd(1*md_max), kbc(1*mc_max), kad(5*md_max), kac(5*mc_max), pbd(1*md_max), &
19230  pbc(1*mc_max), pad(5*md_max), pac(5*mc_max), prim(5*1*mc_max*md_max), scale
19231 
19232  INTEGER :: ma, mb, mc, md, p_index
19233  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
19234 
19235  kbd(1:1*md_max) = 0.0_dp
19236  kbc(1:1*mc_max) = 0.0_dp
19237  kad(1:5*md_max) = 0.0_dp
19238  kac(1:5*mc_max) = 0.0_dp
19239  p_index = 0
19240  DO md = 1, md_max
19241  DO mc = 1, mc_max
19242  DO mb = 1, 1
19243  ks_bd = 0.0_dp
19244  ks_bc = 0.0_dp
19245  p_bd = pbd((md - 1)*1 + mb)
19246  p_bc = pbc((mc - 1)*1 + mb)
19247  DO ma = 1, 5
19248  p_index = p_index + 1
19249  tmp = scale*prim(p_index)
19250  ks_bc = ks_bc + tmp*pad((md - 1)*5 + ma)
19251  ks_bd = ks_bd + tmp*pac((mc - 1)*5 + ma)
19252  kad((md - 1)*5 + ma) = kad((md - 1)*5 + ma) - tmp*p_bc
19253  kac((mc - 1)*5 + ma) = kac((mc - 1)*5 + ma) - tmp*p_bd
19254  END DO
19255  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
19256  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
19257  END DO
19258  END DO
19259  END DO
19260  END SUBROUTINE block_5_1
19261 ! **************************************************************************************************
19262 !> \brief ...
19263 !> \param kbd ...
19264 !> \param kbc ...
19265 !> \param kad ...
19266 !> \param kac ...
19267 !> \param pbd ...
19268 !> \param pbc ...
19269 !> \param pad ...
19270 !> \param pac ...
19271 !> \param prim ...
19272 !> \param scale ...
19273 ! **************************************************************************************************
19274  SUBROUTINE block_5_2_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
19275  REAL(kind=dp) :: kbd(2*1), kbc(2*1), kad(5*1), kac(5*1), &
19276  pbd(2*1), pbc(2*1), pad(5*1), &
19277  pac(5*1), prim(5*2*1*1), scale
19278 
19279  INTEGER :: ma, mb, mc, md, p_index
19280  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
19281 
19282  kbd(1:2*1) = 0.0_dp
19283  kbc(1:2*1) = 0.0_dp
19284  kad(1:5*1) = 0.0_dp
19285  kac(1:5*1) = 0.0_dp
19286  p_index = 0
19287  DO md = 1, 1
19288  DO mc = 1, 1
19289  DO mb = 1, 2
19290  ks_bd = 0.0_dp
19291  ks_bc = 0.0_dp
19292  p_bd = pbd((md - 1)*2 + mb)
19293  p_bc = pbc((mc - 1)*2 + mb)
19294  DO ma = 1, 5
19295  p_index = p_index + 1
19296  tmp = scale*prim(p_index)
19297  ks_bc = ks_bc + tmp*pad((md - 1)*5 + ma)
19298  ks_bd = ks_bd + tmp*pac((mc - 1)*5 + ma)
19299  kad((md - 1)*5 + ma) = kad((md - 1)*5 + ma) - tmp*p_bc
19300  kac((mc - 1)*5 + ma) = kac((mc - 1)*5 + ma) - tmp*p_bd
19301  END DO
19302  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
19303  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
19304  END DO
19305  END DO
19306  END DO
19307  END SUBROUTINE block_5_2_1_1
19308 ! **************************************************************************************************
19309 !> \brief ...
19310 !> \param md_max ...
19311 !> \param kbd ...
19312 !> \param kbc ...
19313 !> \param kad ...
19314 !> \param kac ...
19315 !> \param pbd ...
19316 !> \param pbc ...
19317 !> \param pad ...
19318 !> \param pac ...
19319 !> \param prim ...
19320 !> \param scale ...
19321 ! **************************************************************************************************
19322  SUBROUTINE block_5_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
19323  INTEGER :: md_max
19324  REAL(kind=dp) :: kbd(2*md_max), kbc(2*1), kad(5*md_max), kac(5*1), pbd(2*md_max), pbc(2*1), &
19325  pad(5*md_max), pac(5*1), prim(5*2*1*md_max), scale
19326 
19327  INTEGER :: ma, mb, mc, md, p_index
19328  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
19329 
19330  kbd(1:2*md_max) = 0.0_dp
19331  kbc(1:2*1) = 0.0_dp
19332  kad(1:5*md_max) = 0.0_dp
19333  kac(1:5*1) = 0.0_dp
19334  p_index = 0
19335  DO md = 1, md_max
19336  DO mc = 1, 1
19337  DO mb = 1, 2
19338  ks_bd = 0.0_dp
19339  ks_bc = 0.0_dp
19340  p_bd = pbd((md - 1)*2 + mb)
19341  p_bc = pbc((mc - 1)*2 + mb)
19342  DO ma = 1, 5
19343  p_index = p_index + 1
19344  tmp = scale*prim(p_index)
19345  ks_bc = ks_bc + tmp*pad((md - 1)*5 + ma)
19346  ks_bd = ks_bd + tmp*pac((mc - 1)*5 + ma)
19347  kad((md - 1)*5 + ma) = kad((md - 1)*5 + ma) - tmp*p_bc
19348  kac((mc - 1)*5 + ma) = kac((mc - 1)*5 + ma) - tmp*p_bd
19349  END DO
19350  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
19351  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
19352  END DO
19353  END DO
19354  END DO
19355  END SUBROUTINE block_5_2_1
19356 ! **************************************************************************************************
19357 !> \brief ...
19358 !> \param mc_max ...
19359 !> \param md_max ...
19360 !> \param kbd ...
19361 !> \param kbc ...
19362 !> \param kad ...
19363 !> \param kac ...
19364 !> \param pbd ...
19365 !> \param pbc ...
19366 !> \param pad ...
19367 !> \param pac ...
19368 !> \param prim ...
19369 !> \param scale ...
19370 ! **************************************************************************************************
19371  SUBROUTINE block_5_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
19372  INTEGER :: mc_max, md_max
19373  REAL(kind=dp) :: kbd(2*md_max), kbc(2*mc_max), kad(5*md_max), kac(5*mc_max), pbd(2*md_max), &
19374  pbc(2*mc_max), pad(5*md_max), pac(5*mc_max), prim(5*2*mc_max*md_max), scale
19375 
19376  INTEGER :: ma, mb, mc, md, p_index
19377  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
19378 
19379  kbd(1:2*md_max) = 0.0_dp
19380  kbc(1:2*mc_max) = 0.0_dp
19381  kad(1:5*md_max) = 0.0_dp
19382  kac(1:5*mc_max) = 0.0_dp
19383  p_index = 0
19384  DO md = 1, md_max
19385  DO mc = 1, mc_max
19386  DO mb = 1, 2
19387  ks_bd = 0.0_dp
19388  ks_bc = 0.0_dp
19389  p_bd = pbd((md - 1)*2 + mb)
19390  p_bc = pbc((mc - 1)*2 + mb)
19391  DO ma = 1, 5
19392  p_index = p_index + 1
19393  tmp = scale*prim(p_index)
19394  ks_bc = ks_bc + tmp*pad((md - 1)*5 + ma)
19395  ks_bd = ks_bd + tmp*pac((mc - 1)*5 + ma)
19396  kad((md - 1)*5 + ma) = kad((md - 1)*5 + ma) - tmp*p_bc
19397  kac((mc - 1)*5 + ma) = kac((mc - 1)*5 + ma) - tmp*p_bd
19398  END DO
19399  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
19400  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
19401  END DO
19402  END DO
19403  END DO
19404  END SUBROUTINE block_5_2
19405 ! **************************************************************************************************
19406 !> \brief ...
19407 !> \param kbd ...
19408 !> \param kbc ...
19409 !> \param kad ...
19410 !> \param kac ...
19411 !> \param pbd ...
19412 !> \param pbc ...
19413 !> \param pad ...
19414 !> \param pac ...
19415 !> \param prim ...
19416 !> \param scale ...
19417 ! **************************************************************************************************
19418  SUBROUTINE block_5_3_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
19419  REAL(kind=dp) :: kbd(3*1), kbc(3*1), kad(5*1), kac(5*1), &
19420  pbd(3*1), pbc(3*1), pad(5*1), &
19421  pac(5*1), prim(5*3*1*1), scale
19422 
19423  INTEGER :: ma, mb, mc, md, p_index
19424  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
19425 
19426  kbd(1:3*1) = 0.0_dp
19427  kbc(1:3*1) = 0.0_dp
19428  kad(1:5*1) = 0.0_dp
19429  kac(1:5*1) = 0.0_dp
19430  p_index = 0
19431  DO md = 1, 1
19432  DO mc = 1, 1
19433  DO mb = 1, 3
19434  ks_bd = 0.0_dp
19435  ks_bc = 0.0_dp
19436  p_bd = pbd((md - 1)*3 + mb)
19437  p_bc = pbc((mc - 1)*3 + mb)
19438  DO ma = 1, 5
19439  p_index = p_index + 1
19440  tmp = scale*prim(p_index)
19441  ks_bc = ks_bc + tmp*pad((md - 1)*5 + ma)
19442  ks_bd = ks_bd + tmp*pac((mc - 1)*5 + ma)
19443  kad((md - 1)*5 + ma) = kad((md - 1)*5 + ma) - tmp*p_bc
19444  kac((mc - 1)*5 + ma) = kac((mc - 1)*5 + ma) - tmp*p_bd
19445  END DO
19446  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
19447  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
19448  END DO
19449  END DO
19450  END DO
19451  END SUBROUTINE block_5_3_1_1
19452 ! **************************************************************************************************
19453 !> \brief ...
19454 !> \param md_max ...
19455 !> \param kbd ...
19456 !> \param kbc ...
19457 !> \param kad ...
19458 !> \param kac ...
19459 !> \param pbd ...
19460 !> \param pbc ...
19461 !> \param pad ...
19462 !> \param pac ...
19463 !> \param prim ...
19464 !> \param scale ...
19465 ! **************************************************************************************************
19466  SUBROUTINE block_5_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
19467  INTEGER :: md_max
19468  REAL(kind=dp) :: kbd(3*md_max), kbc(3*1), kad(5*md_max), kac(5*1), pbd(3*md_max), pbc(3*1), &
19469  pad(5*md_max), pac(5*1), prim(5*3*1*md_max), scale
19470 
19471  INTEGER :: ma, mb, mc, md, p_index
19472  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
19473 
19474  kbd(1:3*md_max) = 0.0_dp
19475  kbc(1:3*1) = 0.0_dp
19476  kad(1:5*md_max) = 0.0_dp
19477  kac(1:5*1) = 0.0_dp
19478  p_index = 0
19479  DO md = 1, md_max
19480  DO mc = 1, 1
19481  DO mb = 1, 3
19482  ks_bd = 0.0_dp
19483  ks_bc = 0.0_dp
19484  p_bd = pbd((md - 1)*3 + mb)
19485  p_bc = pbc((mc - 1)*3 + mb)
19486  DO ma = 1, 5
19487  p_index = p_index + 1
19488  tmp = scale*prim(p_index)
19489  ks_bc = ks_bc + tmp*pad((md - 1)*5 + ma)
19490  ks_bd = ks_bd + tmp*pac((mc - 1)*5 + ma)
19491  kad((md - 1)*5 + ma) = kad((md - 1)*5 + ma) - tmp*p_bc
19492  kac((mc - 1)*5 + ma) = kac((mc - 1)*5 + ma) - tmp*p_bd
19493  END DO
19494  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
19495  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
19496  END DO
19497  END DO
19498  END DO
19499  END SUBROUTINE block_5_3_1
19500 ! **************************************************************************************************
19501 !> \brief ...
19502 !> \param mc_max ...
19503 !> \param md_max ...
19504 !> \param kbd ...
19505 !> \param kbc ...
19506 !> \param kad ...
19507 !> \param kac ...
19508 !> \param pbd ...
19509 !> \param pbc ...
19510 !> \param pad ...
19511 !> \param pac ...
19512 !> \param prim ...
19513 !> \param scale ...
19514 ! **************************************************************************************************
19515  SUBROUTINE block_5_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
19516  INTEGER :: mc_max, md_max
19517  REAL(kind=dp) :: kbd(3*md_max), kbc(3*mc_max), kad(5*md_max), kac(5*mc_max), pbd(3*md_max), &
19518  pbc(3*mc_max), pad(5*md_max), pac(5*mc_max), prim(5*3*mc_max*md_max), scale
19519 
19520  INTEGER :: ma, mb, mc, md, p_index
19521  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
19522 
19523  kbd(1:3*md_max) = 0.0_dp
19524  kbc(1:3*mc_max) = 0.0_dp
19525  kad(1:5*md_max) = 0.0_dp
19526  kac(1:5*mc_max) = 0.0_dp
19527  p_index = 0
19528  DO md = 1, md_max
19529  DO mc = 1, mc_max
19530  DO mb = 1, 3
19531  ks_bd = 0.0_dp
19532  ks_bc = 0.0_dp
19533  p_bd = pbd((md - 1)*3 + mb)
19534  p_bc = pbc((mc - 1)*3 + mb)
19535  DO ma = 1, 5
19536  p_index = p_index + 1
19537  tmp = scale*prim(p_index)
19538  ks_bc = ks_bc + tmp*pad((md - 1)*5 + ma)
19539  ks_bd = ks_bd + tmp*pac((mc - 1)*5 + ma)
19540  kad((md - 1)*5 + ma) = kad((md - 1)*5 + ma) - tmp*p_bc
19541  kac((mc - 1)*5 + ma) = kac((mc - 1)*5 + ma) - tmp*p_bd
19542  END DO
19543  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
19544  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
19545  END DO
19546  END DO
19547  END DO
19548  END SUBROUTINE block_5_3
19549 ! **************************************************************************************************
19550 !> \brief ...
19551 !> \param mc_max ...
19552 !> \param md_max ...
19553 !> \param kbd ...
19554 !> \param kbc ...
19555 !> \param kad ...
19556 !> \param kac ...
19557 !> \param pbd ...
19558 !> \param pbc ...
19559 !> \param pad ...
19560 !> \param pac ...
19561 !> \param prim ...
19562 !> \param scale ...
19563 ! **************************************************************************************************
19564  SUBROUTINE block_5_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
19565  INTEGER :: mc_max, md_max
19566  REAL(kind=dp) :: kbd(4*md_max), kbc(4*mc_max), kad(5*md_max), kac(5*mc_max), pbd(4*md_max), &
19567  pbc(4*mc_max), pad(5*md_max), pac(5*mc_max), prim(5*4*mc_max*md_max), scale
19568 
19569  INTEGER :: ma, mb, mc, md, p_index
19570  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
19571 
19572  kbd(1:4*md_max) = 0.0_dp
19573  kbc(1:4*mc_max) = 0.0_dp
19574  kad(1:5*md_max) = 0.0_dp
19575  kac(1:5*mc_max) = 0.0_dp
19576  p_index = 0
19577  DO md = 1, md_max
19578  DO mc = 1, mc_max
19579  DO mb = 1, 4
19580  ks_bd = 0.0_dp
19581  ks_bc = 0.0_dp
19582  p_bd = pbd((md - 1)*4 + mb)
19583  p_bc = pbc((mc - 1)*4 + mb)
19584  DO ma = 1, 5
19585  p_index = p_index + 1
19586  tmp = scale*prim(p_index)
19587  ks_bc = ks_bc + tmp*pad((md - 1)*5 + ma)
19588  ks_bd = ks_bd + tmp*pac((mc - 1)*5 + ma)
19589  kad((md - 1)*5 + ma) = kad((md - 1)*5 + ma) - tmp*p_bc
19590  kac((mc - 1)*5 + ma) = kac((mc - 1)*5 + ma) - tmp*p_bd
19591  END DO
19592  kbd((md - 1)*4 + mb) = kbd((md - 1)*4 + mb) - ks_bd
19593  kbc((mc - 1)*4 + mb) = kbc((mc - 1)*4 + mb) - ks_bc
19594  END DO
19595  END DO
19596  END DO
19597  END SUBROUTINE block_5_4
19598 ! **************************************************************************************************
19599 !> \brief ...
19600 !> \param mc_max ...
19601 !> \param md_max ...
19602 !> \param kbd ...
19603 !> \param kbc ...
19604 !> \param kad ...
19605 !> \param kac ...
19606 !> \param pbd ...
19607 !> \param pbc ...
19608 !> \param pad ...
19609 !> \param pac ...
19610 !> \param prim ...
19611 !> \param scale ...
19612 ! **************************************************************************************************
19613  SUBROUTINE block_5_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
19614  INTEGER :: mc_max, md_max
19615  REAL(kind=dp) :: kbd(5*md_max), kbc(5*mc_max), kad(5*md_max), kac(5*mc_max), pbd(5*md_max), &
19616  pbc(5*mc_max), pad(5*md_max), pac(5*mc_max), prim(5*5*mc_max*md_max), scale
19617 
19618  INTEGER :: ma, mb, mc, md, p_index
19619  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
19620 
19621  kbd(1:5*md_max) = 0.0_dp
19622  kbc(1:5*mc_max) = 0.0_dp
19623  kad(1:5*md_max) = 0.0_dp
19624  kac(1:5*mc_max) = 0.0_dp
19625  p_index = 0
19626  DO md = 1, md_max
19627  DO mc = 1, mc_max
19628  DO mb = 1, 5
19629  ks_bd = 0.0_dp
19630  ks_bc = 0.0_dp
19631  p_bd = pbd((md - 1)*5 + mb)
19632  p_bc = pbc((mc - 1)*5 + mb)
19633  DO ma = 1, 5
19634  p_index = p_index + 1
19635  tmp = scale*prim(p_index)
19636  ks_bc = ks_bc + tmp*pad((md - 1)*5 + ma)
19637  ks_bd = ks_bd + tmp*pac((mc - 1)*5 + ma)
19638  kad((md - 1)*5 + ma) = kad((md - 1)*5 + ma) - tmp*p_bc
19639  kac((mc - 1)*5 + ma) = kac((mc - 1)*5 + ma) - tmp*p_bd
19640  END DO
19641  kbd((md - 1)*5 + mb) = kbd((md - 1)*5 + mb) - ks_bd
19642  kbc((mc - 1)*5 + mb) = kbc((mc - 1)*5 + mb) - ks_bc
19643  END DO
19644  END DO
19645  END DO
19646  END SUBROUTINE block_5_5
19647 ! **************************************************************************************************
19648 !> \brief ...
19649 !> \param mc_max ...
19650 !> \param md_max ...
19651 !> \param kbd ...
19652 !> \param kbc ...
19653 !> \param kad ...
19654 !> \param kac ...
19655 !> \param pbd ...
19656 !> \param pbc ...
19657 !> \param pad ...
19658 !> \param pac ...
19659 !> \param prim ...
19660 !> \param scale ...
19661 ! **************************************************************************************************
19662  SUBROUTINE block_5_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
19663  INTEGER :: mc_max, md_max
19664  REAL(kind=dp) :: kbd(6*md_max), kbc(6*mc_max), kad(5*md_max), kac(5*mc_max), pbd(6*md_max), &
19665  pbc(6*mc_max), pad(5*md_max), pac(5*mc_max), prim(5*6*mc_max*md_max), scale
19666 
19667  INTEGER :: ma, mb, mc, md, p_index
19668  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
19669 
19670  kbd(1:6*md_max) = 0.0_dp
19671  kbc(1:6*mc_max) = 0.0_dp
19672  kad(1:5*md_max) = 0.0_dp
19673  kac(1:5*mc_max) = 0.0_dp
19674  p_index = 0
19675  DO md = 1, md_max
19676  DO mc = 1, mc_max
19677  DO mb = 1, 6
19678  ks_bd = 0.0_dp
19679  ks_bc = 0.0_dp
19680  p_bd = pbd((md - 1)*6 + mb)
19681  p_bc = pbc((mc - 1)*6 + mb)
19682  DO ma = 1, 5
19683  p_index = p_index + 1
19684  tmp = scale*prim(p_index)
19685  ks_bc = ks_bc + tmp*pad((md - 1)*5 + ma)
19686  ks_bd = ks_bd + tmp*pac((mc - 1)*5 + ma)
19687  kad((md - 1)*5 + ma) = kad((md - 1)*5 + ma) - tmp*p_bc
19688  kac((mc - 1)*5 + ma) = kac((mc - 1)*5 + ma) - tmp*p_bd
19689  END DO
19690  kbd((md - 1)*6 + mb) = kbd((md - 1)*6 + mb) - ks_bd
19691  kbc((mc - 1)*6 + mb) = kbc((mc - 1)*6 + mb) - ks_bc
19692  END DO
19693  END DO
19694  END DO
19695  END SUBROUTINE block_5_6
19696 ! **************************************************************************************************
19697 !> \brief ...
19698 !> \param mc_max ...
19699 !> \param md_max ...
19700 !> \param kbd ...
19701 !> \param kbc ...
19702 !> \param kad ...
19703 !> \param kac ...
19704 !> \param pbd ...
19705 !> \param pbc ...
19706 !> \param pad ...
19707 !> \param pac ...
19708 !> \param prim ...
19709 !> \param scale ...
19710 ! **************************************************************************************************
19711  SUBROUTINE block_5_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
19712  INTEGER :: mc_max, md_max
19713  REAL(kind=dp) :: kbd(7*md_max), kbc(7*mc_max), kad(5*md_max), kac(5*mc_max), pbd(7*md_max), &
19714  pbc(7*mc_max), pad(5*md_max), pac(5*mc_max), prim(5*7*mc_max*md_max), scale
19715 
19716  INTEGER :: ma, mb, mc, md, p_index
19717  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
19718 
19719  kbd(1:7*md_max) = 0.0_dp
19720  kbc(1:7*mc_max) = 0.0_dp
19721  kad(1:5*md_max) = 0.0_dp
19722  kac(1:5*mc_max) = 0.0_dp
19723  p_index = 0
19724  DO md = 1, md_max
19725  DO mc = 1, mc_max
19726  DO mb = 1, 7
19727  ks_bd = 0.0_dp
19728  ks_bc = 0.0_dp
19729  p_bd = pbd((md - 1)*7 + mb)
19730  p_bc = pbc((mc - 1)*7 + mb)
19731  DO ma = 1, 5
19732  p_index = p_index + 1
19733  tmp = scale*prim(p_index)
19734  ks_bc = ks_bc + tmp*pad((md - 1)*5 + ma)
19735  ks_bd = ks_bd + tmp*pac((mc - 1)*5 + ma)
19736  kad((md - 1)*5 + ma) = kad((md - 1)*5 + ma) - tmp*p_bc
19737  kac((mc - 1)*5 + ma) = kac((mc - 1)*5 + ma) - tmp*p_bd
19738  END DO
19739  kbd((md - 1)*7 + mb) = kbd((md - 1)*7 + mb) - ks_bd
19740  kbc((mc - 1)*7 + mb) = kbc((mc - 1)*7 + mb) - ks_bc
19741  END DO
19742  END DO
19743  END DO
19744  END SUBROUTINE block_5_7
19745 ! **************************************************************************************************
19746 !> \brief ...
19747 !> \param mc_max ...
19748 !> \param md_max ...
19749 !> \param kbd ...
19750 !> \param kbc ...
19751 !> \param kad ...
19752 !> \param kac ...
19753 !> \param pbd ...
19754 !> \param pbc ...
19755 !> \param pad ...
19756 !> \param pac ...
19757 !> \param prim ...
19758 !> \param scale ...
19759 ! **************************************************************************************************
19760  SUBROUTINE block_5_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
19761  INTEGER :: mc_max, md_max
19762  REAL(kind=dp) :: kbd(9*md_max), kbc(9*mc_max), kad(5*md_max), kac(5*mc_max), pbd(9*md_max), &
19763  pbc(9*mc_max), pad(5*md_max), pac(5*mc_max), prim(5*9*mc_max*md_max), scale
19764 
19765  INTEGER :: ma, mb, mc, md, p_index
19766  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
19767 
19768  kbd(1:9*md_max) = 0.0_dp
19769  kbc(1:9*mc_max) = 0.0_dp
19770  kad(1:5*md_max) = 0.0_dp
19771  kac(1:5*mc_max) = 0.0_dp
19772  p_index = 0
19773  DO md = 1, md_max
19774  DO mc = 1, mc_max
19775  DO mb = 1, 9
19776  ks_bd = 0.0_dp
19777  ks_bc = 0.0_dp
19778  p_bd = pbd((md - 1)*9 + mb)
19779  p_bc = pbc((mc - 1)*9 + mb)
19780  DO ma = 1, 5
19781  p_index = p_index + 1
19782  tmp = scale*prim(p_index)
19783  ks_bc = ks_bc + tmp*pad((md - 1)*5 + ma)
19784  ks_bd = ks_bd + tmp*pac((mc - 1)*5 + ma)
19785  kad((md - 1)*5 + ma) = kad((md - 1)*5 + ma) - tmp*p_bc
19786  kac((mc - 1)*5 + ma) = kac((mc - 1)*5 + ma) - tmp*p_bd
19787  END DO
19788  kbd((md - 1)*9 + mb) = kbd((md - 1)*9 + mb) - ks_bd
19789  kbc((mc - 1)*9 + mb) = kbc((mc - 1)*9 + mb) - ks_bc
19790  END DO
19791  END DO
19792  END DO
19793  END SUBROUTINE block_5_9
19794 ! **************************************************************************************************
19795 !> \brief ...
19796 !> \param mc_max ...
19797 !> \param md_max ...
19798 !> \param kbd ...
19799 !> \param kbc ...
19800 !> \param kad ...
19801 !> \param kac ...
19802 !> \param pbd ...
19803 !> \param pbc ...
19804 !> \param pad ...
19805 !> \param pac ...
19806 !> \param prim ...
19807 !> \param scale ...
19808 ! **************************************************************************************************
19809  SUBROUTINE block_5_10(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
19810  INTEGER :: mc_max, md_max
19811  REAL(kind=dp) :: kbd(10*md_max), kbc(10*mc_max), kad(5*md_max), kac(5*mc_max), &
19812  pbd(10*md_max), pbc(10*mc_max), pad(5*md_max), pac(5*mc_max), prim(5*10*mc_max*md_max), &
19813  scale
19814 
19815  INTEGER :: ma, mb, mc, md, p_index
19816  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
19817 
19818  kbd(1:10*md_max) = 0.0_dp
19819  kbc(1:10*mc_max) = 0.0_dp
19820  kad(1:5*md_max) = 0.0_dp
19821  kac(1:5*mc_max) = 0.0_dp
19822  p_index = 0
19823  DO md = 1, md_max
19824  DO mc = 1, mc_max
19825  DO mb = 1, 10
19826  ks_bd = 0.0_dp
19827  ks_bc = 0.0_dp
19828  p_bd = pbd((md - 1)*10 + mb)
19829  p_bc = pbc((mc - 1)*10 + mb)
19830  DO ma = 1, 5
19831  p_index = p_index + 1
19832  tmp = scale*prim(p_index)
19833  ks_bc = ks_bc + tmp*pad((md - 1)*5 + ma)
19834  ks_bd = ks_bd + tmp*pac((mc - 1)*5 + ma)
19835  kad((md - 1)*5 + ma) = kad((md - 1)*5 + ma) - tmp*p_bc
19836  kac((mc - 1)*5 + ma) = kac((mc - 1)*5 + ma) - tmp*p_bd
19837  END DO
19838  kbd((md - 1)*10 + mb) = kbd((md - 1)*10 + mb) - ks_bd
19839  kbc((mc - 1)*10 + mb) = kbc((mc - 1)*10 + mb) - ks_bc
19840  END DO
19841  END DO
19842  END DO
19843  END SUBROUTINE block_5_10
19844 ! **************************************************************************************************
19845 !> \brief ...
19846 !> \param mc_max ...
19847 !> \param md_max ...
19848 !> \param kbd ...
19849 !> \param kbc ...
19850 !> \param kad ...
19851 !> \param kac ...
19852 !> \param pbd ...
19853 !> \param pbc ...
19854 !> \param pad ...
19855 !> \param pac ...
19856 !> \param prim ...
19857 !> \param scale ...
19858 ! **************************************************************************************************
19859  SUBROUTINE block_5_11(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
19860  INTEGER :: mc_max, md_max
19861  REAL(kind=dp) :: kbd(11*md_max), kbc(11*mc_max), kad(5*md_max), kac(5*mc_max), &
19862  pbd(11*md_max), pbc(11*mc_max), pad(5*md_max), pac(5*mc_max), prim(5*11*mc_max*md_max), &
19863  scale
19864 
19865  INTEGER :: ma, mb, mc, md, p_index
19866  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
19867 
19868  kbd(1:11*md_max) = 0.0_dp
19869  kbc(1:11*mc_max) = 0.0_dp
19870  kad(1:5*md_max) = 0.0_dp
19871  kac(1:5*mc_max) = 0.0_dp
19872  p_index = 0
19873  DO md = 1, md_max
19874  DO mc = 1, mc_max
19875  DO mb = 1, 11
19876  ks_bd = 0.0_dp
19877  ks_bc = 0.0_dp
19878  p_bd = pbd((md - 1)*11 + mb)
19879  p_bc = pbc((mc - 1)*11 + mb)
19880  DO ma = 1, 5
19881  p_index = p_index + 1
19882  tmp = scale*prim(p_index)
19883  ks_bc = ks_bc + tmp*pad((md - 1)*5 + ma)
19884  ks_bd = ks_bd + tmp*pac((mc - 1)*5 + ma)
19885  kad((md - 1)*5 + ma) = kad((md - 1)*5 + ma) - tmp*p_bc
19886  kac((mc - 1)*5 + ma) = kac((mc - 1)*5 + ma) - tmp*p_bd
19887  END DO
19888  kbd((md - 1)*11 + mb) = kbd((md - 1)*11 + mb) - ks_bd
19889  kbc((mc - 1)*11 + mb) = kbc((mc - 1)*11 + mb) - ks_bc
19890  END DO
19891  END DO
19892  END DO
19893  END SUBROUTINE block_5_11
19894 ! **************************************************************************************************
19895 !> \brief ...
19896 !> \param mc_max ...
19897 !> \param md_max ...
19898 !> \param kbd ...
19899 !> \param kbc ...
19900 !> \param kad ...
19901 !> \param kac ...
19902 !> \param pbd ...
19903 !> \param pbc ...
19904 !> \param pad ...
19905 !> \param pac ...
19906 !> \param prim ...
19907 !> \param scale ...
19908 ! **************************************************************************************************
19909  SUBROUTINE block_5_15(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
19910  INTEGER :: mc_max, md_max
19911  REAL(kind=dp) :: kbd(15*md_max), kbc(15*mc_max), kad(5*md_max), kac(5*mc_max), &
19912  pbd(15*md_max), pbc(15*mc_max), pad(5*md_max), pac(5*mc_max), prim(5*15*mc_max*md_max), &
19913  scale
19914 
19915  INTEGER :: ma, mb, mc, md, p_index
19916  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
19917 
19918  kbd(1:15*md_max) = 0.0_dp
19919  kbc(1:15*mc_max) = 0.0_dp
19920  kad(1:5*md_max) = 0.0_dp
19921  kac(1:5*mc_max) = 0.0_dp
19922  p_index = 0
19923  DO md = 1, md_max
19924  DO mc = 1, mc_max
19925  DO mb = 1, 15
19926  ks_bd = 0.0_dp
19927  ks_bc = 0.0_dp
19928  p_bd = pbd((md - 1)*15 + mb)
19929  p_bc = pbc((mc - 1)*15 + mb)
19930  DO ma = 1, 5
19931  p_index = p_index + 1
19932  tmp = scale*prim(p_index)
19933  ks_bc = ks_bc + tmp*pad((md - 1)*5 + ma)
19934  ks_bd = ks_bd + tmp*pac((mc - 1)*5 + ma)
19935  kad((md - 1)*5 + ma) = kad((md - 1)*5 + ma) - tmp*p_bc
19936  kac((mc - 1)*5 + ma) = kac((mc - 1)*5 + ma) - tmp*p_bd
19937  END DO
19938  kbd((md - 1)*15 + mb) = kbd((md - 1)*15 + mb) - ks_bd
19939  kbc((mc - 1)*15 + mb) = kbc((mc - 1)*15 + mb) - ks_bc
19940  END DO
19941  END DO
19942  END DO
19943  END SUBROUTINE block_5_15
19944 ! **************************************************************************************************
19945 !> \brief ...
19946 !> \param kbd ...
19947 !> \param kbc ...
19948 !> \param kad ...
19949 !> \param kac ...
19950 !> \param pbd ...
19951 !> \param pbc ...
19952 !> \param pad ...
19953 !> \param pac ...
19954 !> \param prim ...
19955 !> \param scale ...
19956 ! **************************************************************************************************
19957  SUBROUTINE block_6_1_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
19958  REAL(kind=dp) :: kbd(1*1), kbc(1*1), kad(6*1), kac(6*1), &
19959  pbd(1*1), pbc(1*1), pad(6*1), &
19960  pac(6*1), prim(6*1*1*1), scale
19961 
19962  INTEGER :: ma, mb, mc, md, p_index
19963  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
19964 
19965  kbd(1:1*1) = 0.0_dp
19966  kbc(1:1*1) = 0.0_dp
19967  kad(1:6*1) = 0.0_dp
19968  kac(1:6*1) = 0.0_dp
19969  p_index = 0
19970  DO md = 1, 1
19971  DO mc = 1, 1
19972  DO mb = 1, 1
19973  ks_bd = 0.0_dp
19974  ks_bc = 0.0_dp
19975  p_bd = pbd((md - 1)*1 + mb)
19976  p_bc = pbc((mc - 1)*1 + mb)
19977  DO ma = 1, 6
19978  p_index = p_index + 1
19979  tmp = scale*prim(p_index)
19980  ks_bc = ks_bc + tmp*pad((md - 1)*6 + ma)
19981  ks_bd = ks_bd + tmp*pac((mc - 1)*6 + ma)
19982  kad((md - 1)*6 + ma) = kad((md - 1)*6 + ma) - tmp*p_bc
19983  kac((mc - 1)*6 + ma) = kac((mc - 1)*6 + ma) - tmp*p_bd
19984  END DO
19985  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
19986  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
19987  END DO
19988  END DO
19989  END DO
19990  END SUBROUTINE block_6_1_1_1
19991 ! **************************************************************************************************
19992 !> \brief ...
19993 !> \param kbd ...
19994 !> \param kbc ...
19995 !> \param kad ...
19996 !> \param kac ...
19997 !> \param pbd ...
19998 !> \param pbc ...
19999 !> \param pad ...
20000 !> \param pac ...
20001 !> \param prim ...
20002 !> \param scale ...
20003 ! **************************************************************************************************
20004  SUBROUTINE block_6_1_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
20005  REAL(kind=dp) :: kbd(1*2), kbc(1*1), kad(6*2), kac(6*1), &
20006  pbd(1*2), pbc(1*1), pad(6*2), &
20007  pac(6*1), prim(6*1*1*2), scale
20008 
20009  INTEGER :: ma, mb, mc, md, p_index
20010  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
20011 
20012  kbd(1:1*2) = 0.0_dp
20013  kbc(1:1*1) = 0.0_dp
20014  kad(1:6*2) = 0.0_dp
20015  kac(1:6*1) = 0.0_dp
20016  p_index = 0
20017  DO md = 1, 2
20018  DO mc = 1, 1
20019  DO mb = 1, 1
20020  ks_bd = 0.0_dp
20021  ks_bc = 0.0_dp
20022  p_bd = pbd((md - 1)*1 + mb)
20023  p_bc = pbc((mc - 1)*1 + mb)
20024  DO ma = 1, 6
20025  p_index = p_index + 1
20026  tmp = scale*prim(p_index)
20027  ks_bc = ks_bc + tmp*pad((md - 1)*6 + ma)
20028  ks_bd = ks_bd + tmp*pac((mc - 1)*6 + ma)
20029  kad((md - 1)*6 + ma) = kad((md - 1)*6 + ma) - tmp*p_bc
20030  kac((mc - 1)*6 + ma) = kac((mc - 1)*6 + ma) - tmp*p_bd
20031  END DO
20032  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
20033  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
20034  END DO
20035  END DO
20036  END DO
20037  END SUBROUTINE block_6_1_1_2
20038 ! **************************************************************************************************
20039 !> \brief ...
20040 !> \param kbd ...
20041 !> \param kbc ...
20042 !> \param kad ...
20043 !> \param kac ...
20044 !> \param pbd ...
20045 !> \param pbc ...
20046 !> \param pad ...
20047 !> \param pac ...
20048 !> \param prim ...
20049 !> \param scale ...
20050 ! **************************************************************************************************
20051  SUBROUTINE block_6_1_1_3(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
20052  REAL(kind=dp) :: kbd(1*3), kbc(1*1), kad(6*3), kac(6*1), &
20053  pbd(1*3), pbc(1*1), pad(6*3), &
20054  pac(6*1), prim(6*1*1*3), scale
20055 
20056  INTEGER :: ma, mb, mc, md, p_index
20057  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
20058 
20059  kbd(1:1*3) = 0.0_dp
20060  kbc(1:1*1) = 0.0_dp
20061  kad(1:6*3) = 0.0_dp
20062  kac(1:6*1) = 0.0_dp
20063  p_index = 0
20064  DO md = 1, 3
20065  DO mc = 1, 1
20066  DO mb = 1, 1
20067  ks_bd = 0.0_dp
20068  ks_bc = 0.0_dp
20069  p_bd = pbd((md - 1)*1 + mb)
20070  p_bc = pbc((mc - 1)*1 + mb)
20071  DO ma = 1, 6
20072  p_index = p_index + 1
20073  tmp = scale*prim(p_index)
20074  ks_bc = ks_bc + tmp*pad((md - 1)*6 + ma)
20075  ks_bd = ks_bd + tmp*pac((mc - 1)*6 + ma)
20076  kad((md - 1)*6 + ma) = kad((md - 1)*6 + ma) - tmp*p_bc
20077  kac((mc - 1)*6 + ma) = kac((mc - 1)*6 + ma) - tmp*p_bd
20078  END DO
20079  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
20080  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
20081  END DO
20082  END DO
20083  END DO
20084  END SUBROUTINE block_6_1_1_3
20085 ! **************************************************************************************************
20086 !> \brief ...
20087 !> \param md_max ...
20088 !> \param kbd ...
20089 !> \param kbc ...
20090 !> \param kad ...
20091 !> \param kac ...
20092 !> \param pbd ...
20093 !> \param pbc ...
20094 !> \param pad ...
20095 !> \param pac ...
20096 !> \param prim ...
20097 !> \param scale ...
20098 ! **************************************************************************************************
20099  SUBROUTINE block_6_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
20100  INTEGER :: md_max
20101  REAL(kind=dp) :: kbd(1*md_max), kbc(1*1), kad(6*md_max), kac(6*1), pbd(1*md_max), pbc(1*1), &
20102  pad(6*md_max), pac(6*1), prim(6*1*1*md_max), scale
20103 
20104  INTEGER :: ma, mb, mc, md, p_index
20105  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
20106 
20107  kbd(1:1*md_max) = 0.0_dp
20108  kbc(1:1*1) = 0.0_dp
20109  kad(1:6*md_max) = 0.0_dp
20110  kac(1:6*1) = 0.0_dp
20111  p_index = 0
20112  DO md = 1, md_max
20113  DO mc = 1, 1
20114  DO mb = 1, 1
20115  ks_bd = 0.0_dp
20116  ks_bc = 0.0_dp
20117  p_bd = pbd((md - 1)*1 + mb)
20118  p_bc = pbc((mc - 1)*1 + mb)
20119  DO ma = 1, 6
20120  p_index = p_index + 1
20121  tmp = scale*prim(p_index)
20122  ks_bc = ks_bc + tmp*pad((md - 1)*6 + ma)
20123  ks_bd = ks_bd + tmp*pac((mc - 1)*6 + ma)
20124  kad((md - 1)*6 + ma) = kad((md - 1)*6 + ma) - tmp*p_bc
20125  kac((mc - 1)*6 + ma) = kac((mc - 1)*6 + ma) - tmp*p_bd
20126  END DO
20127  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
20128  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
20129  END DO
20130  END DO
20131  END DO
20132  END SUBROUTINE block_6_1_1
20133 ! **************************************************************************************************
20134 !> \brief ...
20135 !> \param kbd ...
20136 !> \param kbc ...
20137 !> \param kad ...
20138 !> \param kac ...
20139 !> \param pbd ...
20140 !> \param pbc ...
20141 !> \param pad ...
20142 !> \param pac ...
20143 !> \param prim ...
20144 !> \param scale ...
20145 ! **************************************************************************************************
20146  SUBROUTINE block_6_1_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
20147  REAL(kind=dp) :: kbd(1*1), kbc(1*2), kad(6*1), kac(6*2), &
20148  pbd(1*1), pbc(1*2), pad(6*1), &
20149  pac(6*2), prim(6*1*2*1), scale
20150 
20151  INTEGER :: ma, mb, mc, md, p_index
20152  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
20153 
20154  kbd(1:1*1) = 0.0_dp
20155  kbc(1:1*2) = 0.0_dp
20156  kad(1:6*1) = 0.0_dp
20157  kac(1:6*2) = 0.0_dp
20158  p_index = 0
20159  DO md = 1, 1
20160  DO mc = 1, 2
20161  DO mb = 1, 1
20162  ks_bd = 0.0_dp
20163  ks_bc = 0.0_dp
20164  p_bd = pbd((md - 1)*1 + mb)
20165  p_bc = pbc((mc - 1)*1 + mb)
20166  DO ma = 1, 6
20167  p_index = p_index + 1
20168  tmp = scale*prim(p_index)
20169  ks_bc = ks_bc + tmp*pad((md - 1)*6 + ma)
20170  ks_bd = ks_bd + tmp*pac((mc - 1)*6 + ma)
20171  kad((md - 1)*6 + ma) = kad((md - 1)*6 + ma) - tmp*p_bc
20172  kac((mc - 1)*6 + ma) = kac((mc - 1)*6 + ma) - tmp*p_bd
20173  END DO
20174  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
20175  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
20176  END DO
20177  END DO
20178  END DO
20179  END SUBROUTINE block_6_1_2_1
20180 ! **************************************************************************************************
20181 !> \brief ...
20182 !> \param md_max ...
20183 !> \param kbd ...
20184 !> \param kbc ...
20185 !> \param kad ...
20186 !> \param kac ...
20187 !> \param pbd ...
20188 !> \param pbc ...
20189 !> \param pad ...
20190 !> \param pac ...
20191 !> \param prim ...
20192 !> \param scale ...
20193 ! **************************************************************************************************
20194  SUBROUTINE block_6_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
20195  INTEGER :: md_max
20196  REAL(kind=dp) :: kbd(1*md_max), kbc(1*2), kad(6*md_max), kac(6*2), pbd(1*md_max), pbc(1*2), &
20197  pad(6*md_max), pac(6*2), prim(6*1*2*md_max), scale
20198 
20199  INTEGER :: ma, mb, mc, md, p_index
20200  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
20201 
20202  kbd(1:1*md_max) = 0.0_dp
20203  kbc(1:1*2) = 0.0_dp
20204  kad(1:6*md_max) = 0.0_dp
20205  kac(1:6*2) = 0.0_dp
20206  p_index = 0
20207  DO md = 1, md_max
20208  DO mc = 1, 2
20209  DO mb = 1, 1
20210  ks_bd = 0.0_dp
20211  ks_bc = 0.0_dp
20212  p_bd = pbd((md - 1)*1 + mb)
20213  p_bc = pbc((mc - 1)*1 + mb)
20214  DO ma = 1, 6
20215  p_index = p_index + 1
20216  tmp = scale*prim(p_index)
20217  ks_bc = ks_bc + tmp*pad((md - 1)*6 + ma)
20218  ks_bd = ks_bd + tmp*pac((mc - 1)*6 + ma)
20219  kad((md - 1)*6 + ma) = kad((md - 1)*6 + ma) - tmp*p_bc
20220  kac((mc - 1)*6 + ma) = kac((mc - 1)*6 + ma) - tmp*p_bd
20221  END DO
20222  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
20223  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
20224  END DO
20225  END DO
20226  END DO
20227  END SUBROUTINE block_6_1_2
20228 ! **************************************************************************************************
20229 !> \brief ...
20230 !> \param kbd ...
20231 !> \param kbc ...
20232 !> \param kad ...
20233 !> \param kac ...
20234 !> \param pbd ...
20235 !> \param pbc ...
20236 !> \param pad ...
20237 !> \param pac ...
20238 !> \param prim ...
20239 !> \param scale ...
20240 ! **************************************************************************************************
20241  SUBROUTINE block_6_1_3_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
20242  REAL(kind=dp) :: kbd(1*1), kbc(1*3), kad(6*1), kac(6*3), &
20243  pbd(1*1), pbc(1*3), pad(6*1), &
20244  pac(6*3), prim(6*1*3*1), scale
20245 
20246  INTEGER :: ma, mb, mc, md, p_index
20247  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
20248 
20249  kbd(1:1*1) = 0.0_dp
20250  kbc(1:1*3) = 0.0_dp
20251  kad(1:6*1) = 0.0_dp
20252  kac(1:6*3) = 0.0_dp
20253  p_index = 0
20254  DO md = 1, 1
20255  DO mc = 1, 3
20256  DO mb = 1, 1
20257  ks_bd = 0.0_dp
20258  ks_bc = 0.0_dp
20259  p_bd = pbd((md - 1)*1 + mb)
20260  p_bc = pbc((mc - 1)*1 + mb)
20261  DO ma = 1, 6
20262  p_index = p_index + 1
20263  tmp = scale*prim(p_index)
20264  ks_bc = ks_bc + tmp*pad((md - 1)*6 + ma)
20265  ks_bd = ks_bd + tmp*pac((mc - 1)*6 + ma)
20266  kad((md - 1)*6 + ma) = kad((md - 1)*6 + ma) - tmp*p_bc
20267  kac((mc - 1)*6 + ma) = kac((mc - 1)*6 + ma) - tmp*p_bd
20268  END DO
20269  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
20270  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
20271  END DO
20272  END DO
20273  END DO
20274  END SUBROUTINE block_6_1_3_1
20275 ! **************************************************************************************************
20276 !> \brief ...
20277 !> \param md_max ...
20278 !> \param kbd ...
20279 !> \param kbc ...
20280 !> \param kad ...
20281 !> \param kac ...
20282 !> \param pbd ...
20283 !> \param pbc ...
20284 !> \param pad ...
20285 !> \param pac ...
20286 !> \param prim ...
20287 !> \param scale ...
20288 ! **************************************************************************************************
20289  SUBROUTINE block_6_1_3(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
20290  INTEGER :: md_max
20291  REAL(kind=dp) :: kbd(1*md_max), kbc(1*3), kad(6*md_max), kac(6*3), pbd(1*md_max), pbc(1*3), &
20292  pad(6*md_max), pac(6*3), prim(6*1*3*md_max), scale
20293 
20294  INTEGER :: ma, mb, mc, md, p_index
20295  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
20296 
20297  kbd(1:1*md_max) = 0.0_dp
20298  kbc(1:1*3) = 0.0_dp
20299  kad(1:6*md_max) = 0.0_dp
20300  kac(1:6*3) = 0.0_dp
20301  p_index = 0
20302  DO md = 1, md_max
20303  DO mc = 1, 3
20304  DO mb = 1, 1
20305  ks_bd = 0.0_dp
20306  ks_bc = 0.0_dp
20307  p_bd = pbd((md - 1)*1 + mb)
20308  p_bc = pbc((mc - 1)*1 + mb)
20309  DO ma = 1, 6
20310  p_index = p_index + 1
20311  tmp = scale*prim(p_index)
20312  ks_bc = ks_bc + tmp*pad((md - 1)*6 + ma)
20313  ks_bd = ks_bd + tmp*pac((mc - 1)*6 + ma)
20314  kad((md - 1)*6 + ma) = kad((md - 1)*6 + ma) - tmp*p_bc
20315  kac((mc - 1)*6 + ma) = kac((mc - 1)*6 + ma) - tmp*p_bd
20316  END DO
20317  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
20318  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
20319  END DO
20320  END DO
20321  END DO
20322  END SUBROUTINE block_6_1_3
20323 ! **************************************************************************************************
20324 !> \brief ...
20325 !> \param mc_max ...
20326 !> \param md_max ...
20327 !> \param kbd ...
20328 !> \param kbc ...
20329 !> \param kad ...
20330 !> \param kac ...
20331 !> \param pbd ...
20332 !> \param pbc ...
20333 !> \param pad ...
20334 !> \param pac ...
20335 !> \param prim ...
20336 !> \param scale ...
20337 ! **************************************************************************************************
20338  SUBROUTINE block_6_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
20339  INTEGER :: mc_max, md_max
20340  REAL(kind=dp) :: kbd(1*md_max), kbc(1*mc_max), kad(6*md_max), kac(6*mc_max), pbd(1*md_max), &
20341  pbc(1*mc_max), pad(6*md_max), pac(6*mc_max), prim(6*1*mc_max*md_max), scale
20342 
20343  INTEGER :: ma, mb, mc, md, p_index
20344  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
20345 
20346  kbd(1:1*md_max) = 0.0_dp
20347  kbc(1:1*mc_max) = 0.0_dp
20348  kad(1:6*md_max) = 0.0_dp
20349  kac(1:6*mc_max) = 0.0_dp
20350  p_index = 0
20351  DO md = 1, md_max
20352  DO mc = 1, mc_max
20353  DO mb = 1, 1
20354  ks_bd = 0.0_dp
20355  ks_bc = 0.0_dp
20356  p_bd = pbd((md - 1)*1 + mb)
20357  p_bc = pbc((mc - 1)*1 + mb)
20358  DO ma = 1, 6
20359  p_index = p_index + 1
20360  tmp = scale*prim(p_index)
20361  ks_bc = ks_bc + tmp*pad((md - 1)*6 + ma)
20362  ks_bd = ks_bd + tmp*pac((mc - 1)*6 + ma)
20363  kad((md - 1)*6 + ma) = kad((md - 1)*6 + ma) - tmp*p_bc
20364  kac((mc - 1)*6 + ma) = kac((mc - 1)*6 + ma) - tmp*p_bd
20365  END DO
20366  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
20367  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
20368  END DO
20369  END DO
20370  END DO
20371  END SUBROUTINE block_6_1
20372 ! **************************************************************************************************
20373 !> \brief ...
20374 !> \param kbd ...
20375 !> \param kbc ...
20376 !> \param kad ...
20377 !> \param kac ...
20378 !> \param pbd ...
20379 !> \param pbc ...
20380 !> \param pad ...
20381 !> \param pac ...
20382 !> \param prim ...
20383 !> \param scale ...
20384 ! **************************************************************************************************
20385  SUBROUTINE block_6_2_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
20386  REAL(kind=dp) :: kbd(2*1), kbc(2*1), kad(6*1), kac(6*1), &
20387  pbd(2*1), pbc(2*1), pad(6*1), &
20388  pac(6*1), prim(6*2*1*1), scale
20389 
20390  INTEGER :: ma, mb, mc, md, p_index
20391  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
20392 
20393  kbd(1:2*1) = 0.0_dp
20394  kbc(1:2*1) = 0.0_dp
20395  kad(1:6*1) = 0.0_dp
20396  kac(1:6*1) = 0.0_dp
20397  p_index = 0
20398  DO md = 1, 1
20399  DO mc = 1, 1
20400  DO mb = 1, 2
20401  ks_bd = 0.0_dp
20402  ks_bc = 0.0_dp
20403  p_bd = pbd((md - 1)*2 + mb)
20404  p_bc = pbc((mc - 1)*2 + mb)
20405  DO ma = 1, 6
20406  p_index = p_index + 1
20407  tmp = scale*prim(p_index)
20408  ks_bc = ks_bc + tmp*pad((md - 1)*6 + ma)
20409  ks_bd = ks_bd + tmp*pac((mc - 1)*6 + ma)
20410  kad((md - 1)*6 + ma) = kad((md - 1)*6 + ma) - tmp*p_bc
20411  kac((mc - 1)*6 + ma) = kac((mc - 1)*6 + ma) - tmp*p_bd
20412  END DO
20413  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
20414  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
20415  END DO
20416  END DO
20417  END DO
20418  END SUBROUTINE block_6_2_1_1
20419 ! **************************************************************************************************
20420 !> \brief ...
20421 !> \param md_max ...
20422 !> \param kbd ...
20423 !> \param kbc ...
20424 !> \param kad ...
20425 !> \param kac ...
20426 !> \param pbd ...
20427 !> \param pbc ...
20428 !> \param pad ...
20429 !> \param pac ...
20430 !> \param prim ...
20431 !> \param scale ...
20432 ! **************************************************************************************************
20433  SUBROUTINE block_6_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
20434  INTEGER :: md_max
20435  REAL(kind=dp) :: kbd(2*md_max), kbc(2*1), kad(6*md_max), kac(6*1), pbd(2*md_max), pbc(2*1), &
20436  pad(6*md_max), pac(6*1), prim(6*2*1*md_max), scale
20437 
20438  INTEGER :: ma, mb, mc, md, p_index
20439  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
20440 
20441  kbd(1:2*md_max) = 0.0_dp
20442  kbc(1:2*1) = 0.0_dp
20443  kad(1:6*md_max) = 0.0_dp
20444  kac(1:6*1) = 0.0_dp
20445  p_index = 0
20446  DO md = 1, md_max
20447  DO mc = 1, 1
20448  DO mb = 1, 2
20449  ks_bd = 0.0_dp
20450  ks_bc = 0.0_dp
20451  p_bd = pbd((md - 1)*2 + mb)
20452  p_bc = pbc((mc - 1)*2 + mb)
20453  DO ma = 1, 6
20454  p_index = p_index + 1
20455  tmp = scale*prim(p_index)
20456  ks_bc = ks_bc + tmp*pad((md - 1)*6 + ma)
20457  ks_bd = ks_bd + tmp*pac((mc - 1)*6 + ma)
20458  kad((md - 1)*6 + ma) = kad((md - 1)*6 + ma) - tmp*p_bc
20459  kac((mc - 1)*6 + ma) = kac((mc - 1)*6 + ma) - tmp*p_bd
20460  END DO
20461  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
20462  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
20463  END DO
20464  END DO
20465  END DO
20466  END SUBROUTINE block_6_2_1
20467 ! **************************************************************************************************
20468 !> \brief ...
20469 !> \param mc_max ...
20470 !> \param md_max ...
20471 !> \param kbd ...
20472 !> \param kbc ...
20473 !> \param kad ...
20474 !> \param kac ...
20475 !> \param pbd ...
20476 !> \param pbc ...
20477 !> \param pad ...
20478 !> \param pac ...
20479 !> \param prim ...
20480 !> \param scale ...
20481 ! **************************************************************************************************
20482  SUBROUTINE block_6_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
20483  INTEGER :: mc_max, md_max
20484  REAL(kind=dp) :: kbd(2*md_max), kbc(2*mc_max), kad(6*md_max), kac(6*mc_max), pbd(2*md_max), &
20485  pbc(2*mc_max), pad(6*md_max), pac(6*mc_max), prim(6*2*mc_max*md_max), scale
20486 
20487  INTEGER :: ma, mb, mc, md, p_index
20488  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
20489 
20490  kbd(1:2*md_max) = 0.0_dp
20491  kbc(1:2*mc_max) = 0.0_dp
20492  kad(1:6*md_max) = 0.0_dp
20493  kac(1:6*mc_max) = 0.0_dp
20494  p_index = 0
20495  DO md = 1, md_max
20496  DO mc = 1, mc_max
20497  DO mb = 1, 2
20498  ks_bd = 0.0_dp
20499  ks_bc = 0.0_dp
20500  p_bd = pbd((md - 1)*2 + mb)
20501  p_bc = pbc((mc - 1)*2 + mb)
20502  DO ma = 1, 6
20503  p_index = p_index + 1
20504  tmp = scale*prim(p_index)
20505  ks_bc = ks_bc + tmp*pad((md - 1)*6 + ma)
20506  ks_bd = ks_bd + tmp*pac((mc - 1)*6 + ma)
20507  kad((md - 1)*6 + ma) = kad((md - 1)*6 + ma) - tmp*p_bc
20508  kac((mc - 1)*6 + ma) = kac((mc - 1)*6 + ma) - tmp*p_bd
20509  END DO
20510  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
20511  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
20512  END DO
20513  END DO
20514  END DO
20515  END SUBROUTINE block_6_2
20516 ! **************************************************************************************************
20517 !> \brief ...
20518 !> \param kbd ...
20519 !> \param kbc ...
20520 !> \param kad ...
20521 !> \param kac ...
20522 !> \param pbd ...
20523 !> \param pbc ...
20524 !> \param pad ...
20525 !> \param pac ...
20526 !> \param prim ...
20527 !> \param scale ...
20528 ! **************************************************************************************************
20529  SUBROUTINE block_6_3_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
20530  REAL(kind=dp) :: kbd(3*1), kbc(3*1), kad(6*1), kac(6*1), &
20531  pbd(3*1), pbc(3*1), pad(6*1), &
20532  pac(6*1), prim(6*3*1*1), scale
20533 
20534  INTEGER :: ma, mb, mc, md, p_index
20535  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
20536 
20537  kbd(1:3*1) = 0.0_dp
20538  kbc(1:3*1) = 0.0_dp
20539  kad(1:6*1) = 0.0_dp
20540  kac(1:6*1) = 0.0_dp
20541  p_index = 0
20542  DO md = 1, 1
20543  DO mc = 1, 1
20544  DO mb = 1, 3
20545  ks_bd = 0.0_dp
20546  ks_bc = 0.0_dp
20547  p_bd = pbd((md - 1)*3 + mb)
20548  p_bc = pbc((mc - 1)*3 + mb)
20549  DO ma = 1, 6
20550  p_index = p_index + 1
20551  tmp = scale*prim(p_index)
20552  ks_bc = ks_bc + tmp*pad((md - 1)*6 + ma)
20553  ks_bd = ks_bd + tmp*pac((mc - 1)*6 + ma)
20554  kad((md - 1)*6 + ma) = kad((md - 1)*6 + ma) - tmp*p_bc
20555  kac((mc - 1)*6 + ma) = kac((mc - 1)*6 + ma) - tmp*p_bd
20556  END DO
20557  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
20558  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
20559  END DO
20560  END DO
20561  END DO
20562  END SUBROUTINE block_6_3_1_1
20563 ! **************************************************************************************************
20564 !> \brief ...
20565 !> \param md_max ...
20566 !> \param kbd ...
20567 !> \param kbc ...
20568 !> \param kad ...
20569 !> \param kac ...
20570 !> \param pbd ...
20571 !> \param pbc ...
20572 !> \param pad ...
20573 !> \param pac ...
20574 !> \param prim ...
20575 !> \param scale ...
20576 ! **************************************************************************************************
20577  SUBROUTINE block_6_3_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
20578  INTEGER :: md_max
20579  REAL(kind=dp) :: kbd(3*md_max), kbc(3*1), kad(6*md_max), kac(6*1), pbd(3*md_max), pbc(3*1), &
20580  pad(6*md_max), pac(6*1), prim(6*3*1*md_max), scale
20581 
20582  INTEGER :: ma, mb, mc, md, p_index
20583  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
20584 
20585  kbd(1:3*md_max) = 0.0_dp
20586  kbc(1:3*1) = 0.0_dp
20587  kad(1:6*md_max) = 0.0_dp
20588  kac(1:6*1) = 0.0_dp
20589  p_index = 0
20590  DO md = 1, md_max
20591  DO mc = 1, 1
20592  DO mb = 1, 3
20593  ks_bd = 0.0_dp
20594  ks_bc = 0.0_dp
20595  p_bd = pbd((md - 1)*3 + mb)
20596  p_bc = pbc((mc - 1)*3 + mb)
20597  DO ma = 1, 6
20598  p_index = p_index + 1
20599  tmp = scale*prim(p_index)
20600  ks_bc = ks_bc + tmp*pad((md - 1)*6 + ma)
20601  ks_bd = ks_bd + tmp*pac((mc - 1)*6 + ma)
20602  kad((md - 1)*6 + ma) = kad((md - 1)*6 + ma) - tmp*p_bc
20603  kac((mc - 1)*6 + ma) = kac((mc - 1)*6 + ma) - tmp*p_bd
20604  END DO
20605  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
20606  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
20607  END DO
20608  END DO
20609  END DO
20610  END SUBROUTINE block_6_3_1
20611 ! **************************************************************************************************
20612 !> \brief ...
20613 !> \param mc_max ...
20614 !> \param md_max ...
20615 !> \param kbd ...
20616 !> \param kbc ...
20617 !> \param kad ...
20618 !> \param kac ...
20619 !> \param pbd ...
20620 !> \param pbc ...
20621 !> \param pad ...
20622 !> \param pac ...
20623 !> \param prim ...
20624 !> \param scale ...
20625 ! **************************************************************************************************
20626  SUBROUTINE block_6_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
20627  INTEGER :: mc_max, md_max
20628  REAL(kind=dp) :: kbd(3*md_max), kbc(3*mc_max), kad(6*md_max), kac(6*mc_max), pbd(3*md_max), &
20629  pbc(3*mc_max), pad(6*md_max), pac(6*mc_max), prim(6*3*mc_max*md_max), scale
20630 
20631  INTEGER :: ma, mb, mc, md, p_index
20632  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
20633 
20634  kbd(1:3*md_max) = 0.0_dp
20635  kbc(1:3*mc_max) = 0.0_dp
20636  kad(1:6*md_max) = 0.0_dp
20637  kac(1:6*mc_max) = 0.0_dp
20638  p_index = 0
20639  DO md = 1, md_max
20640  DO mc = 1, mc_max
20641  DO mb = 1, 3
20642  ks_bd = 0.0_dp
20643  ks_bc = 0.0_dp
20644  p_bd = pbd((md - 1)*3 + mb)
20645  p_bc = pbc((mc - 1)*3 + mb)
20646  DO ma = 1, 6
20647  p_index = p_index + 1
20648  tmp = scale*prim(p_index)
20649  ks_bc = ks_bc + tmp*pad((md - 1)*6 + ma)
20650  ks_bd = ks_bd + tmp*pac((mc - 1)*6 + ma)
20651  kad((md - 1)*6 + ma) = kad((md - 1)*6 + ma) - tmp*p_bc
20652  kac((mc - 1)*6 + ma) = kac((mc - 1)*6 + ma) - tmp*p_bd
20653  END DO
20654  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
20655  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
20656  END DO
20657  END DO
20658  END DO
20659  END SUBROUTINE block_6_3
20660 ! **************************************************************************************************
20661 !> \brief ...
20662 !> \param mc_max ...
20663 !> \param md_max ...
20664 !> \param kbd ...
20665 !> \param kbc ...
20666 !> \param kad ...
20667 !> \param kac ...
20668 !> \param pbd ...
20669 !> \param pbc ...
20670 !> \param pad ...
20671 !> \param pac ...
20672 !> \param prim ...
20673 !> \param scale ...
20674 ! **************************************************************************************************
20675  SUBROUTINE block_6_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
20676  INTEGER :: mc_max, md_max
20677  REAL(kind=dp) :: kbd(4*md_max), kbc(4*mc_max), kad(6*md_max), kac(6*mc_max), pbd(4*md_max), &
20678  pbc(4*mc_max), pad(6*md_max), pac(6*mc_max), prim(6*4*mc_max*md_max), scale
20679 
20680  INTEGER :: ma, mb, mc, md, p_index
20681  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
20682 
20683  kbd(1:4*md_max) = 0.0_dp
20684  kbc(1:4*mc_max) = 0.0_dp
20685  kad(1:6*md_max) = 0.0_dp
20686  kac(1:6*mc_max) = 0.0_dp
20687  p_index = 0
20688  DO md = 1, md_max
20689  DO mc = 1, mc_max
20690  DO mb = 1, 4
20691  ks_bd = 0.0_dp
20692  ks_bc = 0.0_dp
20693  p_bd = pbd((md - 1)*4 + mb)
20694  p_bc = pbc((mc - 1)*4 + mb)
20695  DO ma = 1, 6
20696  p_index = p_index + 1
20697  tmp = scale*prim(p_index)
20698  ks_bc = ks_bc + tmp*pad((md - 1)*6 + ma)
20699  ks_bd = ks_bd + tmp*pac((mc - 1)*6 + ma)
20700  kad((md - 1)*6 + ma) = kad((md - 1)*6 + ma) - tmp*p_bc
20701  kac((mc - 1)*6 + ma) = kac((mc - 1)*6 + ma) - tmp*p_bd
20702  END DO
20703  kbd((md - 1)*4 + mb) = kbd((md - 1)*4 + mb) - ks_bd
20704  kbc((mc - 1)*4 + mb) = kbc((mc - 1)*4 + mb) - ks_bc
20705  END DO
20706  END DO
20707  END DO
20708  END SUBROUTINE block_6_4
20709 ! **************************************************************************************************
20710 !> \brief ...
20711 !> \param mc_max ...
20712 !> \param md_max ...
20713 !> \param kbd ...
20714 !> \param kbc ...
20715 !> \param kad ...
20716 !> \param kac ...
20717 !> \param pbd ...
20718 !> \param pbc ...
20719 !> \param pad ...
20720 !> \param pac ...
20721 !> \param prim ...
20722 !> \param scale ...
20723 ! **************************************************************************************************
20724  SUBROUTINE block_6_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
20725  INTEGER :: mc_max, md_max
20726  REAL(kind=dp) :: kbd(5*md_max), kbc(5*mc_max), kad(6*md_max), kac(6*mc_max), pbd(5*md_max), &
20727  pbc(5*mc_max), pad(6*md_max), pac(6*mc_max), prim(6*5*mc_max*md_max), scale
20728 
20729  INTEGER :: ma, mb, mc, md, p_index
20730  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
20731 
20732  kbd(1:5*md_max) = 0.0_dp
20733  kbc(1:5*mc_max) = 0.0_dp
20734  kad(1:6*md_max) = 0.0_dp
20735  kac(1:6*mc_max) = 0.0_dp
20736  p_index = 0
20737  DO md = 1, md_max
20738  DO mc = 1, mc_max
20739  DO mb = 1, 5
20740  ks_bd = 0.0_dp
20741  ks_bc = 0.0_dp
20742  p_bd = pbd((md - 1)*5 + mb)
20743  p_bc = pbc((mc - 1)*5 + mb)
20744  DO ma = 1, 6
20745  p_index = p_index + 1
20746  tmp = scale*prim(p_index)
20747  ks_bc = ks_bc + tmp*pad((md - 1)*6 + ma)
20748  ks_bd = ks_bd + tmp*pac((mc - 1)*6 + ma)
20749  kad((md - 1)*6 + ma) = kad((md - 1)*6 + ma) - tmp*p_bc
20750  kac((mc - 1)*6 + ma) = kac((mc - 1)*6 + ma) - tmp*p_bd
20751  END DO
20752  kbd((md - 1)*5 + mb) = kbd((md - 1)*5 + mb) - ks_bd
20753  kbc((mc - 1)*5 + mb) = kbc((mc - 1)*5 + mb) - ks_bc
20754  END DO
20755  END DO
20756  END DO
20757  END SUBROUTINE block_6_5
20758 ! **************************************************************************************************
20759 !> \brief ...
20760 !> \param mc_max ...
20761 !> \param md_max ...
20762 !> \param kbd ...
20763 !> \param kbc ...
20764 !> \param kad ...
20765 !> \param kac ...
20766 !> \param pbd ...
20767 !> \param pbc ...
20768 !> \param pad ...
20769 !> \param pac ...
20770 !> \param prim ...
20771 !> \param scale ...
20772 ! **************************************************************************************************
20773  SUBROUTINE block_6_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
20774  INTEGER :: mc_max, md_max
20775  REAL(kind=dp) :: kbd(6*md_max), kbc(6*mc_max), kad(6*md_max), kac(6*mc_max), pbd(6*md_max), &
20776  pbc(6*mc_max), pad(6*md_max), pac(6*mc_max), prim(6*6*mc_max*md_max), scale
20777 
20778  INTEGER :: ma, mb, mc, md, p_index
20779  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
20780 
20781  kbd(1:6*md_max) = 0.0_dp
20782  kbc(1:6*mc_max) = 0.0_dp
20783  kad(1:6*md_max) = 0.0_dp
20784  kac(1:6*mc_max) = 0.0_dp
20785  p_index = 0
20786  DO md = 1, md_max
20787  DO mc = 1, mc_max
20788  DO mb = 1, 6
20789  ks_bd = 0.0_dp
20790  ks_bc = 0.0_dp
20791  p_bd = pbd((md - 1)*6 + mb)
20792  p_bc = pbc((mc - 1)*6 + mb)
20793  DO ma = 1, 6
20794  p_index = p_index + 1
20795  tmp = scale*prim(p_index)
20796  ks_bc = ks_bc + tmp*pad((md - 1)*6 + ma)
20797  ks_bd = ks_bd + tmp*pac((mc - 1)*6 + ma)
20798  kad((md - 1)*6 + ma) = kad((md - 1)*6 + ma) - tmp*p_bc
20799  kac((mc - 1)*6 + ma) = kac((mc - 1)*6 + ma) - tmp*p_bd
20800  END DO
20801  kbd((md - 1)*6 + mb) = kbd((md - 1)*6 + mb) - ks_bd
20802  kbc((mc - 1)*6 + mb) = kbc((mc - 1)*6 + mb) - ks_bc
20803  END DO
20804  END DO
20805  END DO
20806  END SUBROUTINE block_6_6
20807 ! **************************************************************************************************
20808 !> \brief ...
20809 !> \param mc_max ...
20810 !> \param md_max ...
20811 !> \param kbd ...
20812 !> \param kbc ...
20813 !> \param kad ...
20814 !> \param kac ...
20815 !> \param pbd ...
20816 !> \param pbc ...
20817 !> \param pad ...
20818 !> \param pac ...
20819 !> \param prim ...
20820 !> \param scale ...
20821 ! **************************************************************************************************
20822  SUBROUTINE block_6_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
20823  INTEGER :: mc_max, md_max
20824  REAL(kind=dp) :: kbd(7*md_max), kbc(7*mc_max), kad(6*md_max), kac(6*mc_max), pbd(7*md_max), &
20825  pbc(7*mc_max), pad(6*md_max), pac(6*mc_max), prim(6*7*mc_max*md_max), scale
20826 
20827  INTEGER :: ma, mb, mc, md, p_index
20828  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
20829 
20830  kbd(1:7*md_max) = 0.0_dp
20831  kbc(1:7*mc_max) = 0.0_dp
20832  kad(1:6*md_max) = 0.0_dp
20833  kac(1:6*mc_max) = 0.0_dp
20834  p_index = 0
20835  DO md = 1, md_max
20836  DO mc = 1, mc_max
20837  DO mb = 1, 7
20838  ks_bd = 0.0_dp
20839  ks_bc = 0.0_dp
20840  p_bd = pbd((md - 1)*7 + mb)
20841  p_bc = pbc((mc - 1)*7 + mb)
20842  DO ma = 1, 6
20843  p_index = p_index + 1
20844  tmp = scale*prim(p_index)
20845  ks_bc = ks_bc + tmp*pad((md - 1)*6 + ma)
20846  ks_bd = ks_bd + tmp*pac((mc - 1)*6 + ma)
20847  kad((md - 1)*6 + ma) = kad((md - 1)*6 + ma) - tmp*p_bc
20848  kac((mc - 1)*6 + ma) = kac((mc - 1)*6 + ma) - tmp*p_bd
20849  END DO
20850  kbd((md - 1)*7 + mb) = kbd((md - 1)*7 + mb) - ks_bd
20851  kbc((mc - 1)*7 + mb) = kbc((mc - 1)*7 + mb) - ks_bc
20852  END DO
20853  END DO
20854  END DO
20855  END SUBROUTINE block_6_7
20856 ! **************************************************************************************************
20857 !> \brief ...
20858 !> \param mc_max ...
20859 !> \param md_max ...
20860 !> \param kbd ...
20861 !> \param kbc ...
20862 !> \param kad ...
20863 !> \param kac ...
20864 !> \param pbd ...
20865 !> \param pbc ...
20866 !> \param pad ...
20867 !> \param pac ...
20868 !> \param prim ...
20869 !> \param scale ...
20870 ! **************************************************************************************************
20871  SUBROUTINE block_6_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
20872  INTEGER :: mc_max, md_max
20873  REAL(kind=dp) :: kbd(9*md_max), kbc(9*mc_max), kad(6*md_max), kac(6*mc_max), pbd(9*md_max), &
20874  pbc(9*mc_max), pad(6*md_max), pac(6*mc_max), prim(6*9*mc_max*md_max), scale
20875 
20876  INTEGER :: ma, mb, mc, md, p_index
20877  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
20878 
20879  kbd(1:9*md_max) = 0.0_dp
20880  kbc(1:9*mc_max) = 0.0_dp
20881  kad(1:6*md_max) = 0.0_dp
20882  kac(1:6*mc_max) = 0.0_dp
20883  p_index = 0
20884  DO md = 1, md_max
20885  DO mc = 1, mc_max
20886  DO mb = 1, 9
20887  ks_bd = 0.0_dp
20888  ks_bc = 0.0_dp
20889  p_bd = pbd((md - 1)*9 + mb)
20890  p_bc = pbc((mc - 1)*9 + mb)
20891  DO ma = 1, 6
20892  p_index = p_index + 1
20893  tmp = scale*prim(p_index)
20894  ks_bc = ks_bc + tmp*pad((md - 1)*6 + ma)
20895  ks_bd = ks_bd + tmp*pac((mc - 1)*6 + ma)
20896  kad((md - 1)*6 + ma) = kad((md - 1)*6 + ma) - tmp*p_bc
20897  kac((mc - 1)*6 + ma) = kac((mc - 1)*6 + ma) - tmp*p_bd
20898  END DO
20899  kbd((md - 1)*9 + mb) = kbd((md - 1)*9 + mb) - ks_bd
20900  kbc((mc - 1)*9 + mb) = kbc((mc - 1)*9 + mb) - ks_bc
20901  END DO
20902  END DO
20903  END DO
20904  END SUBROUTINE block_6_9
20905 ! **************************************************************************************************
20906 !> \brief ...
20907 !> \param mc_max ...
20908 !> \param md_max ...
20909 !> \param kbd ...
20910 !> \param kbc ...
20911 !> \param kad ...
20912 !> \param kac ...
20913 !> \param pbd ...
20914 !> \param pbc ...
20915 !> \param pad ...
20916 !> \param pac ...
20917 !> \param prim ...
20918 !> \param scale ...
20919 ! **************************************************************************************************
20920  SUBROUTINE block_6_10(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
20921  INTEGER :: mc_max, md_max
20922  REAL(kind=dp) :: kbd(10*md_max), kbc(10*mc_max), kad(6*md_max), kac(6*mc_max), &
20923  pbd(10*md_max), pbc(10*mc_max), pad(6*md_max), pac(6*mc_max), prim(6*10*mc_max*md_max), &
20924  scale
20925 
20926  INTEGER :: ma, mb, mc, md, p_index
20927  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
20928 
20929  kbd(1:10*md_max) = 0.0_dp
20930  kbc(1:10*mc_max) = 0.0_dp
20931  kad(1:6*md_max) = 0.0_dp
20932  kac(1:6*mc_max) = 0.0_dp
20933  p_index = 0
20934  DO md = 1, md_max
20935  DO mc = 1, mc_max
20936  DO mb = 1, 10
20937  ks_bd = 0.0_dp
20938  ks_bc = 0.0_dp
20939  p_bd = pbd((md - 1)*10 + mb)
20940  p_bc = pbc((mc - 1)*10 + mb)
20941  DO ma = 1, 6
20942  p_index = p_index + 1
20943  tmp = scale*prim(p_index)
20944  ks_bc = ks_bc + tmp*pad((md - 1)*6 + ma)
20945  ks_bd = ks_bd + tmp*pac((mc - 1)*6 + ma)
20946  kad((md - 1)*6 + ma) = kad((md - 1)*6 + ma) - tmp*p_bc
20947  kac((mc - 1)*6 + ma) = kac((mc - 1)*6 + ma) - tmp*p_bd
20948  END DO
20949  kbd((md - 1)*10 + mb) = kbd((md - 1)*10 + mb) - ks_bd
20950  kbc((mc - 1)*10 + mb) = kbc((mc - 1)*10 + mb) - ks_bc
20951  END DO
20952  END DO
20953  END DO
20954  END SUBROUTINE block_6_10
20955 ! **************************************************************************************************
20956 !> \brief ...
20957 !> \param mc_max ...
20958 !> \param md_max ...
20959 !> \param kbd ...
20960 !> \param kbc ...
20961 !> \param kad ...
20962 !> \param kac ...
20963 !> \param pbd ...
20964 !> \param pbc ...
20965 !> \param pad ...
20966 !> \param pac ...
20967 !> \param prim ...
20968 !> \param scale ...
20969 ! **************************************************************************************************
20970  SUBROUTINE block_6_11(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
20971  INTEGER :: mc_max, md_max
20972  REAL(kind=dp) :: kbd(11*md_max), kbc(11*mc_max), kad(6*md_max), kac(6*mc_max), &
20973  pbd(11*md_max), pbc(11*mc_max), pad(6*md_max), pac(6*mc_max), prim(6*11*mc_max*md_max), &
20974  scale
20975 
20976  INTEGER :: ma, mb, mc, md, p_index
20977  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
20978 
20979  kbd(1:11*md_max) = 0.0_dp
20980  kbc(1:11*mc_max) = 0.0_dp
20981  kad(1:6*md_max) = 0.0_dp
20982  kac(1:6*mc_max) = 0.0_dp
20983  p_index = 0
20984  DO md = 1, md_max
20985  DO mc = 1, mc_max
20986  DO mb = 1, 11
20987  ks_bd = 0.0_dp
20988  ks_bc = 0.0_dp
20989  p_bd = pbd((md - 1)*11 + mb)
20990  p_bc = pbc((mc - 1)*11 + mb)
20991  DO ma = 1, 6
20992  p_index = p_index + 1
20993  tmp = scale*prim(p_index)
20994  ks_bc = ks_bc + tmp*pad((md - 1)*6 + ma)
20995  ks_bd = ks_bd + tmp*pac((mc - 1)*6 + ma)
20996  kad((md - 1)*6 + ma) = kad((md - 1)*6 + ma) - tmp*p_bc
20997  kac((mc - 1)*6 + ma) = kac((mc - 1)*6 + ma) - tmp*p_bd
20998  END DO
20999  kbd((md - 1)*11 + mb) = kbd((md - 1)*11 + mb) - ks_bd
21000  kbc((mc - 1)*11 + mb) = kbc((mc - 1)*11 + mb) - ks_bc
21001  END DO
21002  END DO
21003  END DO
21004  END SUBROUTINE block_6_11
21005 ! **************************************************************************************************
21006 !> \brief ...
21007 !> \param mc_max ...
21008 !> \param md_max ...
21009 !> \param kbd ...
21010 !> \param kbc ...
21011 !> \param kad ...
21012 !> \param kac ...
21013 !> \param pbd ...
21014 !> \param pbc ...
21015 !> \param pad ...
21016 !> \param pac ...
21017 !> \param prim ...
21018 !> \param scale ...
21019 ! **************************************************************************************************
21020  SUBROUTINE block_6_15(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
21021  INTEGER :: mc_max, md_max
21022  REAL(kind=dp) :: kbd(15*md_max), kbc(15*mc_max), kad(6*md_max), kac(6*mc_max), &
21023  pbd(15*md_max), pbc(15*mc_max), pad(6*md_max), pac(6*mc_max), prim(6*15*mc_max*md_max), &
21024  scale
21025 
21026  INTEGER :: ma, mb, mc, md, p_index
21027  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
21028 
21029  kbd(1:15*md_max) = 0.0_dp
21030  kbc(1:15*mc_max) = 0.0_dp
21031  kad(1:6*md_max) = 0.0_dp
21032  kac(1:6*mc_max) = 0.0_dp
21033  p_index = 0
21034  DO md = 1, md_max
21035  DO mc = 1, mc_max
21036  DO mb = 1, 15
21037  ks_bd = 0.0_dp
21038  ks_bc = 0.0_dp
21039  p_bd = pbd((md - 1)*15 + mb)
21040  p_bc = pbc((mc - 1)*15 + mb)
21041  DO ma = 1, 6
21042  p_index = p_index + 1
21043  tmp = scale*prim(p_index)
21044  ks_bc = ks_bc + tmp*pad((md - 1)*6 + ma)
21045  ks_bd = ks_bd + tmp*pac((mc - 1)*6 + ma)
21046  kad((md - 1)*6 + ma) = kad((md - 1)*6 + ma) - tmp*p_bc
21047  kac((mc - 1)*6 + ma) = kac((mc - 1)*6 + ma) - tmp*p_bd
21048  END DO
21049  kbd((md - 1)*15 + mb) = kbd((md - 1)*15 + mb) - ks_bd
21050  kbc((mc - 1)*15 + mb) = kbc((mc - 1)*15 + mb) - ks_bc
21051  END DO
21052  END DO
21053  END DO
21054  END SUBROUTINE block_6_15
21055 ! **************************************************************************************************
21056 !> \brief ...
21057 !> \param kbd ...
21058 !> \param kbc ...
21059 !> \param kad ...
21060 !> \param kac ...
21061 !> \param pbd ...
21062 !> \param pbc ...
21063 !> \param pad ...
21064 !> \param pac ...
21065 !> \param prim ...
21066 !> \param scale ...
21067 ! **************************************************************************************************
21068  SUBROUTINE block_7_1_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
21069  REAL(kind=dp) :: kbd(1*1), kbc(1*1), kad(7*1), kac(7*1), &
21070  pbd(1*1), pbc(1*1), pad(7*1), &
21071  pac(7*1), prim(7*1*1*1), scale
21072 
21073  INTEGER :: ma, mb, mc, md, p_index
21074  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
21075 
21076  kbd(1:1*1) = 0.0_dp
21077  kbc(1:1*1) = 0.0_dp
21078  kad(1:7*1) = 0.0_dp
21079  kac(1:7*1) = 0.0_dp
21080  p_index = 0
21081  DO md = 1, 1
21082  DO mc = 1, 1
21083  DO mb = 1, 1
21084  ks_bd = 0.0_dp
21085  ks_bc = 0.0_dp
21086  p_bd = pbd((md - 1)*1 + mb)
21087  p_bc = pbc((mc - 1)*1 + mb)
21088  DO ma = 1, 7
21089  p_index = p_index + 1
21090  tmp = scale*prim(p_index)
21091  ks_bc = ks_bc + tmp*pad((md - 1)*7 + ma)
21092  ks_bd = ks_bd + tmp*pac((mc - 1)*7 + ma)
21093  kad((md - 1)*7 + ma) = kad((md - 1)*7 + ma) - tmp*p_bc
21094  kac((mc - 1)*7 + ma) = kac((mc - 1)*7 + ma) - tmp*p_bd
21095  END DO
21096  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
21097  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
21098  END DO
21099  END DO
21100  END DO
21101  END SUBROUTINE block_7_1_1_1
21102 ! **************************************************************************************************
21103 !> \brief ...
21104 !> \param kbd ...
21105 !> \param kbc ...
21106 !> \param kad ...
21107 !> \param kac ...
21108 !> \param pbd ...
21109 !> \param pbc ...
21110 !> \param pad ...
21111 !> \param pac ...
21112 !> \param prim ...
21113 !> \param scale ...
21114 ! **************************************************************************************************
21115  SUBROUTINE block_7_1_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
21116  REAL(kind=dp) :: kbd(1*2), kbc(1*1), kad(7*2), kac(7*1), &
21117  pbd(1*2), pbc(1*1), pad(7*2), &
21118  pac(7*1), prim(7*1*1*2), scale
21119 
21120  INTEGER :: ma, mb, mc, md, p_index
21121  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
21122 
21123  kbd(1:1*2) = 0.0_dp
21124  kbc(1:1*1) = 0.0_dp
21125  kad(1:7*2) = 0.0_dp
21126  kac(1:7*1) = 0.0_dp
21127  p_index = 0
21128  DO md = 1, 2
21129  DO mc = 1, 1
21130  DO mb = 1, 1
21131  ks_bd = 0.0_dp
21132  ks_bc = 0.0_dp
21133  p_bd = pbd((md - 1)*1 + mb)
21134  p_bc = pbc((mc - 1)*1 + mb)
21135  DO ma = 1, 7
21136  p_index = p_index + 1
21137  tmp = scale*prim(p_index)
21138  ks_bc = ks_bc + tmp*pad((md - 1)*7 + ma)
21139  ks_bd = ks_bd + tmp*pac((mc - 1)*7 + ma)
21140  kad((md - 1)*7 + ma) = kad((md - 1)*7 + ma) - tmp*p_bc
21141  kac((mc - 1)*7 + ma) = kac((mc - 1)*7 + ma) - tmp*p_bd
21142  END DO
21143  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
21144  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
21145  END DO
21146  END DO
21147  END DO
21148  END SUBROUTINE block_7_1_1_2
21149 ! **************************************************************************************************
21150 !> \brief ...
21151 !> \param md_max ...
21152 !> \param kbd ...
21153 !> \param kbc ...
21154 !> \param kad ...
21155 !> \param kac ...
21156 !> \param pbd ...
21157 !> \param pbc ...
21158 !> \param pad ...
21159 !> \param pac ...
21160 !> \param prim ...
21161 !> \param scale ...
21162 ! **************************************************************************************************
21163  SUBROUTINE block_7_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
21164  INTEGER :: md_max
21165  REAL(kind=dp) :: kbd(1*md_max), kbc(1*1), kad(7*md_max), kac(7*1), pbd(1*md_max), pbc(1*1), &
21166  pad(7*md_max), pac(7*1), prim(7*1*1*md_max), scale
21167 
21168  INTEGER :: ma, mb, mc, md, p_index
21169  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
21170 
21171  kbd(1:1*md_max) = 0.0_dp
21172  kbc(1:1*1) = 0.0_dp
21173  kad(1:7*md_max) = 0.0_dp
21174  kac(1:7*1) = 0.0_dp
21175  p_index = 0
21176  DO md = 1, md_max
21177  DO mc = 1, 1
21178  DO mb = 1, 1
21179  ks_bd = 0.0_dp
21180  ks_bc = 0.0_dp
21181  p_bd = pbd((md - 1)*1 + mb)
21182  p_bc = pbc((mc - 1)*1 + mb)
21183  DO ma = 1, 7
21184  p_index = p_index + 1
21185  tmp = scale*prim(p_index)
21186  ks_bc = ks_bc + tmp*pad((md - 1)*7 + ma)
21187  ks_bd = ks_bd + tmp*pac((mc - 1)*7 + ma)
21188  kad((md - 1)*7 + ma) = kad((md - 1)*7 + ma) - tmp*p_bc
21189  kac((mc - 1)*7 + ma) = kac((mc - 1)*7 + ma) - tmp*p_bd
21190  END DO
21191  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
21192  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
21193  END DO
21194  END DO
21195  END DO
21196  END SUBROUTINE block_7_1_1
21197 ! **************************************************************************************************
21198 !> \brief ...
21199 !> \param kbd ...
21200 !> \param kbc ...
21201 !> \param kad ...
21202 !> \param kac ...
21203 !> \param pbd ...
21204 !> \param pbc ...
21205 !> \param pad ...
21206 !> \param pac ...
21207 !> \param prim ...
21208 !> \param scale ...
21209 ! **************************************************************************************************
21210  SUBROUTINE block_7_1_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
21211  REAL(kind=dp) :: kbd(1*1), kbc(1*2), kad(7*1), kac(7*2), &
21212  pbd(1*1), pbc(1*2), pad(7*1), &
21213  pac(7*2), prim(7*1*2*1), scale
21214 
21215  INTEGER :: ma, mb, mc, md, p_index
21216  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
21217 
21218  kbd(1:1*1) = 0.0_dp
21219  kbc(1:1*2) = 0.0_dp
21220  kad(1:7*1) = 0.0_dp
21221  kac(1:7*2) = 0.0_dp
21222  p_index = 0
21223  DO md = 1, 1
21224  DO mc = 1, 2
21225  DO mb = 1, 1
21226  ks_bd = 0.0_dp
21227  ks_bc = 0.0_dp
21228  p_bd = pbd((md - 1)*1 + mb)
21229  p_bc = pbc((mc - 1)*1 + mb)
21230  DO ma = 1, 7
21231  p_index = p_index + 1
21232  tmp = scale*prim(p_index)
21233  ks_bc = ks_bc + tmp*pad((md - 1)*7 + ma)
21234  ks_bd = ks_bd + tmp*pac((mc - 1)*7 + ma)
21235  kad((md - 1)*7 + ma) = kad((md - 1)*7 + ma) - tmp*p_bc
21236  kac((mc - 1)*7 + ma) = kac((mc - 1)*7 + ma) - tmp*p_bd
21237  END DO
21238  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
21239  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
21240  END DO
21241  END DO
21242  END DO
21243  END SUBROUTINE block_7_1_2_1
21244 ! **************************************************************************************************
21245 !> \brief ...
21246 !> \param md_max ...
21247 !> \param kbd ...
21248 !> \param kbc ...
21249 !> \param kad ...
21250 !> \param kac ...
21251 !> \param pbd ...
21252 !> \param pbc ...
21253 !> \param pad ...
21254 !> \param pac ...
21255 !> \param prim ...
21256 !> \param scale ...
21257 ! **************************************************************************************************
21258  SUBROUTINE block_7_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
21259  INTEGER :: md_max
21260  REAL(kind=dp) :: kbd(1*md_max), kbc(1*2), kad(7*md_max), kac(7*2), pbd(1*md_max), pbc(1*2), &
21261  pad(7*md_max), pac(7*2), prim(7*1*2*md_max), scale
21262 
21263  INTEGER :: ma, mb, mc, md, p_index
21264  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
21265 
21266  kbd(1:1*md_max) = 0.0_dp
21267  kbc(1:1*2) = 0.0_dp
21268  kad(1:7*md_max) = 0.0_dp
21269  kac(1:7*2) = 0.0_dp
21270  p_index = 0
21271  DO md = 1, md_max
21272  DO mc = 1, 2
21273  DO mb = 1, 1
21274  ks_bd = 0.0_dp
21275  ks_bc = 0.0_dp
21276  p_bd = pbd((md - 1)*1 + mb)
21277  p_bc = pbc((mc - 1)*1 + mb)
21278  DO ma = 1, 7
21279  p_index = p_index + 1
21280  tmp = scale*prim(p_index)
21281  ks_bc = ks_bc + tmp*pad((md - 1)*7 + ma)
21282  ks_bd = ks_bd + tmp*pac((mc - 1)*7 + ma)
21283  kad((md - 1)*7 + ma) = kad((md - 1)*7 + ma) - tmp*p_bc
21284  kac((mc - 1)*7 + ma) = kac((mc - 1)*7 + ma) - tmp*p_bd
21285  END DO
21286  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
21287  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
21288  END DO
21289  END DO
21290  END DO
21291  END SUBROUTINE block_7_1_2
21292 ! **************************************************************************************************
21293 !> \brief ...
21294 !> \param mc_max ...
21295 !> \param md_max ...
21296 !> \param kbd ...
21297 !> \param kbc ...
21298 !> \param kad ...
21299 !> \param kac ...
21300 !> \param pbd ...
21301 !> \param pbc ...
21302 !> \param pad ...
21303 !> \param pac ...
21304 !> \param prim ...
21305 !> \param scale ...
21306 ! **************************************************************************************************
21307  SUBROUTINE block_7_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
21308  INTEGER :: mc_max, md_max
21309  REAL(kind=dp) :: kbd(1*md_max), kbc(1*mc_max), kad(7*md_max), kac(7*mc_max), pbd(1*md_max), &
21310  pbc(1*mc_max), pad(7*md_max), pac(7*mc_max), prim(7*1*mc_max*md_max), scale
21311 
21312  INTEGER :: ma, mb, mc, md, p_index
21313  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
21314 
21315  kbd(1:1*md_max) = 0.0_dp
21316  kbc(1:1*mc_max) = 0.0_dp
21317  kad(1:7*md_max) = 0.0_dp
21318  kac(1:7*mc_max) = 0.0_dp
21319  p_index = 0
21320  DO md = 1, md_max
21321  DO mc = 1, mc_max
21322  DO mb = 1, 1
21323  ks_bd = 0.0_dp
21324  ks_bc = 0.0_dp
21325  p_bd = pbd((md - 1)*1 + mb)
21326  p_bc = pbc((mc - 1)*1 + mb)
21327  DO ma = 1, 7
21328  p_index = p_index + 1
21329  tmp = scale*prim(p_index)
21330  ks_bc = ks_bc + tmp*pad((md - 1)*7 + ma)
21331  ks_bd = ks_bd + tmp*pac((mc - 1)*7 + ma)
21332  kad((md - 1)*7 + ma) = kad((md - 1)*7 + ma) - tmp*p_bc
21333  kac((mc - 1)*7 + ma) = kac((mc - 1)*7 + ma) - tmp*p_bd
21334  END DO
21335  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
21336  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
21337  END DO
21338  END DO
21339  END DO
21340  END SUBROUTINE block_7_1
21341 ! **************************************************************************************************
21342 !> \brief ...
21343 !> \param kbd ...
21344 !> \param kbc ...
21345 !> \param kad ...
21346 !> \param kac ...
21347 !> \param pbd ...
21348 !> \param pbc ...
21349 !> \param pad ...
21350 !> \param pac ...
21351 !> \param prim ...
21352 !> \param scale ...
21353 ! **************************************************************************************************
21354  SUBROUTINE block_7_2_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
21355  REAL(kind=dp) :: kbd(2*1), kbc(2*1), kad(7*1), kac(7*1), &
21356  pbd(2*1), pbc(2*1), pad(7*1), &
21357  pac(7*1), prim(7*2*1*1), scale
21358 
21359  INTEGER :: ma, mb, mc, md, p_index
21360  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
21361 
21362  kbd(1:2*1) = 0.0_dp
21363  kbc(1:2*1) = 0.0_dp
21364  kad(1:7*1) = 0.0_dp
21365  kac(1:7*1) = 0.0_dp
21366  p_index = 0
21367  DO md = 1, 1
21368  DO mc = 1, 1
21369  DO mb = 1, 2
21370  ks_bd = 0.0_dp
21371  ks_bc = 0.0_dp
21372  p_bd = pbd((md - 1)*2 + mb)
21373  p_bc = pbc((mc - 1)*2 + mb)
21374  DO ma = 1, 7
21375  p_index = p_index + 1
21376  tmp = scale*prim(p_index)
21377  ks_bc = ks_bc + tmp*pad((md - 1)*7 + ma)
21378  ks_bd = ks_bd + tmp*pac((mc - 1)*7 + ma)
21379  kad((md - 1)*7 + ma) = kad((md - 1)*7 + ma) - tmp*p_bc
21380  kac((mc - 1)*7 + ma) = kac((mc - 1)*7 + ma) - tmp*p_bd
21381  END DO
21382  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
21383  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
21384  END DO
21385  END DO
21386  END DO
21387  END SUBROUTINE block_7_2_1_1
21388 ! **************************************************************************************************
21389 !> \brief ...
21390 !> \param md_max ...
21391 !> \param kbd ...
21392 !> \param kbc ...
21393 !> \param kad ...
21394 !> \param kac ...
21395 !> \param pbd ...
21396 !> \param pbc ...
21397 !> \param pad ...
21398 !> \param pac ...
21399 !> \param prim ...
21400 !> \param scale ...
21401 ! **************************************************************************************************
21402  SUBROUTINE block_7_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
21403  INTEGER :: md_max
21404  REAL(kind=dp) :: kbd(2*md_max), kbc(2*1), kad(7*md_max), kac(7*1), pbd(2*md_max), pbc(2*1), &
21405  pad(7*md_max), pac(7*1), prim(7*2*1*md_max), scale
21406 
21407  INTEGER :: ma, mb, mc, md, p_index
21408  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
21409 
21410  kbd(1:2*md_max) = 0.0_dp
21411  kbc(1:2*1) = 0.0_dp
21412  kad(1:7*md_max) = 0.0_dp
21413  kac(1:7*1) = 0.0_dp
21414  p_index = 0
21415  DO md = 1, md_max
21416  DO mc = 1, 1
21417  DO mb = 1, 2
21418  ks_bd = 0.0_dp
21419  ks_bc = 0.0_dp
21420  p_bd = pbd((md - 1)*2 + mb)
21421  p_bc = pbc((mc - 1)*2 + mb)
21422  DO ma = 1, 7
21423  p_index = p_index + 1
21424  tmp = scale*prim(p_index)
21425  ks_bc = ks_bc + tmp*pad((md - 1)*7 + ma)
21426  ks_bd = ks_bd + tmp*pac((mc - 1)*7 + ma)
21427  kad((md - 1)*7 + ma) = kad((md - 1)*7 + ma) - tmp*p_bc
21428  kac((mc - 1)*7 + ma) = kac((mc - 1)*7 + ma) - tmp*p_bd
21429  END DO
21430  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
21431  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
21432  END DO
21433  END DO
21434  END DO
21435  END SUBROUTINE block_7_2_1
21436 ! **************************************************************************************************
21437 !> \brief ...
21438 !> \param mc_max ...
21439 !> \param md_max ...
21440 !> \param kbd ...
21441 !> \param kbc ...
21442 !> \param kad ...
21443 !> \param kac ...
21444 !> \param pbd ...
21445 !> \param pbc ...
21446 !> \param pad ...
21447 !> \param pac ...
21448 !> \param prim ...
21449 !> \param scale ...
21450 ! **************************************************************************************************
21451  SUBROUTINE block_7_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
21452  INTEGER :: mc_max, md_max
21453  REAL(kind=dp) :: kbd(2*md_max), kbc(2*mc_max), kad(7*md_max), kac(7*mc_max), pbd(2*md_max), &
21454  pbc(2*mc_max), pad(7*md_max), pac(7*mc_max), prim(7*2*mc_max*md_max), scale
21455 
21456  INTEGER :: ma, mb, mc, md, p_index
21457  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
21458 
21459  kbd(1:2*md_max) = 0.0_dp
21460  kbc(1:2*mc_max) = 0.0_dp
21461  kad(1:7*md_max) = 0.0_dp
21462  kac(1:7*mc_max) = 0.0_dp
21463  p_index = 0
21464  DO md = 1, md_max
21465  DO mc = 1, mc_max
21466  DO mb = 1, 2
21467  ks_bd = 0.0_dp
21468  ks_bc = 0.0_dp
21469  p_bd = pbd((md - 1)*2 + mb)
21470  p_bc = pbc((mc - 1)*2 + mb)
21471  DO ma = 1, 7
21472  p_index = p_index + 1
21473  tmp = scale*prim(p_index)
21474  ks_bc = ks_bc + tmp*pad((md - 1)*7 + ma)
21475  ks_bd = ks_bd + tmp*pac((mc - 1)*7 + ma)
21476  kad((md - 1)*7 + ma) = kad((md - 1)*7 + ma) - tmp*p_bc
21477  kac((mc - 1)*7 + ma) = kac((mc - 1)*7 + ma) - tmp*p_bd
21478  END DO
21479  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
21480  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
21481  END DO
21482  END DO
21483  END DO
21484  END SUBROUTINE block_7_2
21485 ! **************************************************************************************************
21486 !> \brief ...
21487 !> \param mc_max ...
21488 !> \param md_max ...
21489 !> \param kbd ...
21490 !> \param kbc ...
21491 !> \param kad ...
21492 !> \param kac ...
21493 !> \param pbd ...
21494 !> \param pbc ...
21495 !> \param pad ...
21496 !> \param pac ...
21497 !> \param prim ...
21498 !> \param scale ...
21499 ! **************************************************************************************************
21500  SUBROUTINE block_7_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
21501  INTEGER :: mc_max, md_max
21502  REAL(kind=dp) :: kbd(3*md_max), kbc(3*mc_max), kad(7*md_max), kac(7*mc_max), pbd(3*md_max), &
21503  pbc(3*mc_max), pad(7*md_max), pac(7*mc_max), prim(7*3*mc_max*md_max), scale
21504 
21505  INTEGER :: ma, mb, mc, md, p_index
21506  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
21507 
21508  kbd(1:3*md_max) = 0.0_dp
21509  kbc(1:3*mc_max) = 0.0_dp
21510  kad(1:7*md_max) = 0.0_dp
21511  kac(1:7*mc_max) = 0.0_dp
21512  p_index = 0
21513  DO md = 1, md_max
21514  DO mc = 1, mc_max
21515  DO mb = 1, 3
21516  ks_bd = 0.0_dp
21517  ks_bc = 0.0_dp
21518  p_bd = pbd((md - 1)*3 + mb)
21519  p_bc = pbc((mc - 1)*3 + mb)
21520  DO ma = 1, 7
21521  p_index = p_index + 1
21522  tmp = scale*prim(p_index)
21523  ks_bc = ks_bc + tmp*pad((md - 1)*7 + ma)
21524  ks_bd = ks_bd + tmp*pac((mc - 1)*7 + ma)
21525  kad((md - 1)*7 + ma) = kad((md - 1)*7 + ma) - tmp*p_bc
21526  kac((mc - 1)*7 + ma) = kac((mc - 1)*7 + ma) - tmp*p_bd
21527  END DO
21528  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
21529  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
21530  END DO
21531  END DO
21532  END DO
21533  END SUBROUTINE block_7_3
21534 ! **************************************************************************************************
21535 !> \brief ...
21536 !> \param mc_max ...
21537 !> \param md_max ...
21538 !> \param kbd ...
21539 !> \param kbc ...
21540 !> \param kad ...
21541 !> \param kac ...
21542 !> \param pbd ...
21543 !> \param pbc ...
21544 !> \param pad ...
21545 !> \param pac ...
21546 !> \param prim ...
21547 !> \param scale ...
21548 ! **************************************************************************************************
21549  SUBROUTINE block_7_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
21550  INTEGER :: mc_max, md_max
21551  REAL(kind=dp) :: kbd(4*md_max), kbc(4*mc_max), kad(7*md_max), kac(7*mc_max), pbd(4*md_max), &
21552  pbc(4*mc_max), pad(7*md_max), pac(7*mc_max), prim(7*4*mc_max*md_max), scale
21553 
21554  INTEGER :: ma, mb, mc, md, p_index
21555  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
21556 
21557  kbd(1:4*md_max) = 0.0_dp
21558  kbc(1:4*mc_max) = 0.0_dp
21559  kad(1:7*md_max) = 0.0_dp
21560  kac(1:7*mc_max) = 0.0_dp
21561  p_index = 0
21562  DO md = 1, md_max
21563  DO mc = 1, mc_max
21564  DO mb = 1, 4
21565  ks_bd = 0.0_dp
21566  ks_bc = 0.0_dp
21567  p_bd = pbd((md - 1)*4 + mb)
21568  p_bc = pbc((mc - 1)*4 + mb)
21569  DO ma = 1, 7
21570  p_index = p_index + 1
21571  tmp = scale*prim(p_index)
21572  ks_bc = ks_bc + tmp*pad((md - 1)*7 + ma)
21573  ks_bd = ks_bd + tmp*pac((mc - 1)*7 + ma)
21574  kad((md - 1)*7 + ma) = kad((md - 1)*7 + ma) - tmp*p_bc
21575  kac((mc - 1)*7 + ma) = kac((mc - 1)*7 + ma) - tmp*p_bd
21576  END DO
21577  kbd((md - 1)*4 + mb) = kbd((md - 1)*4 + mb) - ks_bd
21578  kbc((mc - 1)*4 + mb) = kbc((mc - 1)*4 + mb) - ks_bc
21579  END DO
21580  END DO
21581  END DO
21582  END SUBROUTINE block_7_4
21583 ! **************************************************************************************************
21584 !> \brief ...
21585 !> \param mc_max ...
21586 !> \param md_max ...
21587 !> \param kbd ...
21588 !> \param kbc ...
21589 !> \param kad ...
21590 !> \param kac ...
21591 !> \param pbd ...
21592 !> \param pbc ...
21593 !> \param pad ...
21594 !> \param pac ...
21595 !> \param prim ...
21596 !> \param scale ...
21597 ! **************************************************************************************************
21598  SUBROUTINE block_7_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
21599  INTEGER :: mc_max, md_max
21600  REAL(kind=dp) :: kbd(5*md_max), kbc(5*mc_max), kad(7*md_max), kac(7*mc_max), pbd(5*md_max), &
21601  pbc(5*mc_max), pad(7*md_max), pac(7*mc_max), prim(7*5*mc_max*md_max), scale
21602 
21603  INTEGER :: ma, mb, mc, md, p_index
21604  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
21605 
21606  kbd(1:5*md_max) = 0.0_dp
21607  kbc(1:5*mc_max) = 0.0_dp
21608  kad(1:7*md_max) = 0.0_dp
21609  kac(1:7*mc_max) = 0.0_dp
21610  p_index = 0
21611  DO md = 1, md_max
21612  DO mc = 1, mc_max
21613  DO mb = 1, 5
21614  ks_bd = 0.0_dp
21615  ks_bc = 0.0_dp
21616  p_bd = pbd((md - 1)*5 + mb)
21617  p_bc = pbc((mc - 1)*5 + mb)
21618  DO ma = 1, 7
21619  p_index = p_index + 1
21620  tmp = scale*prim(p_index)
21621  ks_bc = ks_bc + tmp*pad((md - 1)*7 + ma)
21622  ks_bd = ks_bd + tmp*pac((mc - 1)*7 + ma)
21623  kad((md - 1)*7 + ma) = kad((md - 1)*7 + ma) - tmp*p_bc
21624  kac((mc - 1)*7 + ma) = kac((mc - 1)*7 + ma) - tmp*p_bd
21625  END DO
21626  kbd((md - 1)*5 + mb) = kbd((md - 1)*5 + mb) - ks_bd
21627  kbc((mc - 1)*5 + mb) = kbc((mc - 1)*5 + mb) - ks_bc
21628  END DO
21629  END DO
21630  END DO
21631  END SUBROUTINE block_7_5
21632 ! **************************************************************************************************
21633 !> \brief ...
21634 !> \param mc_max ...
21635 !> \param md_max ...
21636 !> \param kbd ...
21637 !> \param kbc ...
21638 !> \param kad ...
21639 !> \param kac ...
21640 !> \param pbd ...
21641 !> \param pbc ...
21642 !> \param pad ...
21643 !> \param pac ...
21644 !> \param prim ...
21645 !> \param scale ...
21646 ! **************************************************************************************************
21647  SUBROUTINE block_7_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
21648  INTEGER :: mc_max, md_max
21649  REAL(kind=dp) :: kbd(6*md_max), kbc(6*mc_max), kad(7*md_max), kac(7*mc_max), pbd(6*md_max), &
21650  pbc(6*mc_max), pad(7*md_max), pac(7*mc_max), prim(7*6*mc_max*md_max), scale
21651 
21652  INTEGER :: ma, mb, mc, md, p_index
21653  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
21654 
21655  kbd(1:6*md_max) = 0.0_dp
21656  kbc(1:6*mc_max) = 0.0_dp
21657  kad(1:7*md_max) = 0.0_dp
21658  kac(1:7*mc_max) = 0.0_dp
21659  p_index = 0
21660  DO md = 1, md_max
21661  DO mc = 1, mc_max
21662  DO mb = 1, 6
21663  ks_bd = 0.0_dp
21664  ks_bc = 0.0_dp
21665  p_bd = pbd((md - 1)*6 + mb)
21666  p_bc = pbc((mc - 1)*6 + mb)
21667  DO ma = 1, 7
21668  p_index = p_index + 1
21669  tmp = scale*prim(p_index)
21670  ks_bc = ks_bc + tmp*pad((md - 1)*7 + ma)
21671  ks_bd = ks_bd + tmp*pac((mc - 1)*7 + ma)
21672  kad((md - 1)*7 + ma) = kad((md - 1)*7 + ma) - tmp*p_bc
21673  kac((mc - 1)*7 + ma) = kac((mc - 1)*7 + ma) - tmp*p_bd
21674  END DO
21675  kbd((md - 1)*6 + mb) = kbd((md - 1)*6 + mb) - ks_bd
21676  kbc((mc - 1)*6 + mb) = kbc((mc - 1)*6 + mb) - ks_bc
21677  END DO
21678  END DO
21679  END DO
21680  END SUBROUTINE block_7_6
21681 ! **************************************************************************************************
21682 !> \brief ...
21683 !> \param mc_max ...
21684 !> \param md_max ...
21685 !> \param kbd ...
21686 !> \param kbc ...
21687 !> \param kad ...
21688 !> \param kac ...
21689 !> \param pbd ...
21690 !> \param pbc ...
21691 !> \param pad ...
21692 !> \param pac ...
21693 !> \param prim ...
21694 !> \param scale ...
21695 ! **************************************************************************************************
21696  SUBROUTINE block_7_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
21697  INTEGER :: mc_max, md_max
21698  REAL(kind=dp) :: kbd(7*md_max), kbc(7*mc_max), kad(7*md_max), kac(7*mc_max), pbd(7*md_max), &
21699  pbc(7*mc_max), pad(7*md_max), pac(7*mc_max), prim(7*7*mc_max*md_max), scale
21700 
21701  INTEGER :: ma, mb, mc, md, p_index
21702  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
21703 
21704  kbd(1:7*md_max) = 0.0_dp
21705  kbc(1:7*mc_max) = 0.0_dp
21706  kad(1:7*md_max) = 0.0_dp
21707  kac(1:7*mc_max) = 0.0_dp
21708  p_index = 0
21709  DO md = 1, md_max
21710  DO mc = 1, mc_max
21711  DO mb = 1, 7
21712  ks_bd = 0.0_dp
21713  ks_bc = 0.0_dp
21714  p_bd = pbd((md - 1)*7 + mb)
21715  p_bc = pbc((mc - 1)*7 + mb)
21716  DO ma = 1, 7
21717  p_index = p_index + 1
21718  tmp = scale*prim(p_index)
21719  ks_bc = ks_bc + tmp*pad((md - 1)*7 + ma)
21720  ks_bd = ks_bd + tmp*pac((mc - 1)*7 + ma)
21721  kad((md - 1)*7 + ma) = kad((md - 1)*7 + ma) - tmp*p_bc
21722  kac((mc - 1)*7 + ma) = kac((mc - 1)*7 + ma) - tmp*p_bd
21723  END DO
21724  kbd((md - 1)*7 + mb) = kbd((md - 1)*7 + mb) - ks_bd
21725  kbc((mc - 1)*7 + mb) = kbc((mc - 1)*7 + mb) - ks_bc
21726  END DO
21727  END DO
21728  END DO
21729  END SUBROUTINE block_7_7
21730 ! **************************************************************************************************
21731 !> \brief ...
21732 !> \param mc_max ...
21733 !> \param md_max ...
21734 !> \param kbd ...
21735 !> \param kbc ...
21736 !> \param kad ...
21737 !> \param kac ...
21738 !> \param pbd ...
21739 !> \param pbc ...
21740 !> \param pad ...
21741 !> \param pac ...
21742 !> \param prim ...
21743 !> \param scale ...
21744 ! **************************************************************************************************
21745  SUBROUTINE block_7_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
21746  INTEGER :: mc_max, md_max
21747  REAL(kind=dp) :: kbd(9*md_max), kbc(9*mc_max), kad(7*md_max), kac(7*mc_max), pbd(9*md_max), &
21748  pbc(9*mc_max), pad(7*md_max), pac(7*mc_max), prim(7*9*mc_max*md_max), scale
21749 
21750  INTEGER :: ma, mb, mc, md, p_index
21751  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
21752 
21753  kbd(1:9*md_max) = 0.0_dp
21754  kbc(1:9*mc_max) = 0.0_dp
21755  kad(1:7*md_max) = 0.0_dp
21756  kac(1:7*mc_max) = 0.0_dp
21757  p_index = 0
21758  DO md = 1, md_max
21759  DO mc = 1, mc_max
21760  DO mb = 1, 9
21761  ks_bd = 0.0_dp
21762  ks_bc = 0.0_dp
21763  p_bd = pbd((md - 1)*9 + mb)
21764  p_bc = pbc((mc - 1)*9 + mb)
21765  DO ma = 1, 7
21766  p_index = p_index + 1
21767  tmp = scale*prim(p_index)
21768  ks_bc = ks_bc + tmp*pad((md - 1)*7 + ma)
21769  ks_bd = ks_bd + tmp*pac((mc - 1)*7 + ma)
21770  kad((md - 1)*7 + ma) = kad((md - 1)*7 + ma) - tmp*p_bc
21771  kac((mc - 1)*7 + ma) = kac((mc - 1)*7 + ma) - tmp*p_bd
21772  END DO
21773  kbd((md - 1)*9 + mb) = kbd((md - 1)*9 + mb) - ks_bd
21774  kbc((mc - 1)*9 + mb) = kbc((mc - 1)*9 + mb) - ks_bc
21775  END DO
21776  END DO
21777  END DO
21778  END SUBROUTINE block_7_9
21779 ! **************************************************************************************************
21780 !> \brief ...
21781 !> \param mc_max ...
21782 !> \param md_max ...
21783 !> \param kbd ...
21784 !> \param kbc ...
21785 !> \param kad ...
21786 !> \param kac ...
21787 !> \param pbd ...
21788 !> \param pbc ...
21789 !> \param pad ...
21790 !> \param pac ...
21791 !> \param prim ...
21792 !> \param scale ...
21793 ! **************************************************************************************************
21794  SUBROUTINE block_7_10(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
21795  INTEGER :: mc_max, md_max
21796  REAL(kind=dp) :: kbd(10*md_max), kbc(10*mc_max), kad(7*md_max), kac(7*mc_max), &
21797  pbd(10*md_max), pbc(10*mc_max), pad(7*md_max), pac(7*mc_max), prim(7*10*mc_max*md_max), &
21798  scale
21799 
21800  INTEGER :: ma, mb, mc, md, p_index
21801  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
21802 
21803  kbd(1:10*md_max) = 0.0_dp
21804  kbc(1:10*mc_max) = 0.0_dp
21805  kad(1:7*md_max) = 0.0_dp
21806  kac(1:7*mc_max) = 0.0_dp
21807  p_index = 0
21808  DO md = 1, md_max
21809  DO mc = 1, mc_max
21810  DO mb = 1, 10
21811  ks_bd = 0.0_dp
21812  ks_bc = 0.0_dp
21813  p_bd = pbd((md - 1)*10 + mb)
21814  p_bc = pbc((mc - 1)*10 + mb)
21815  DO ma = 1, 7
21816  p_index = p_index + 1
21817  tmp = scale*prim(p_index)
21818  ks_bc = ks_bc + tmp*pad((md - 1)*7 + ma)
21819  ks_bd = ks_bd + tmp*pac((mc - 1)*7 + ma)
21820  kad((md - 1)*7 + ma) = kad((md - 1)*7 + ma) - tmp*p_bc
21821  kac((mc - 1)*7 + ma) = kac((mc - 1)*7 + ma) - tmp*p_bd
21822  END DO
21823  kbd((md - 1)*10 + mb) = kbd((md - 1)*10 + mb) - ks_bd
21824  kbc((mc - 1)*10 + mb) = kbc((mc - 1)*10 + mb) - ks_bc
21825  END DO
21826  END DO
21827  END DO
21828  END SUBROUTINE block_7_10
21829 ! **************************************************************************************************
21830 !> \brief ...
21831 !> \param mc_max ...
21832 !> \param md_max ...
21833 !> \param kbd ...
21834 !> \param kbc ...
21835 !> \param kad ...
21836 !> \param kac ...
21837 !> \param pbd ...
21838 !> \param pbc ...
21839 !> \param pad ...
21840 !> \param pac ...
21841 !> \param prim ...
21842 !> \param scale ...
21843 ! **************************************************************************************************
21844  SUBROUTINE block_7_11(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
21845  INTEGER :: mc_max, md_max
21846  REAL(kind=dp) :: kbd(11*md_max), kbc(11*mc_max), kad(7*md_max), kac(7*mc_max), &
21847  pbd(11*md_max), pbc(11*mc_max), pad(7*md_max), pac(7*mc_max), prim(7*11*mc_max*md_max), &
21848  scale
21849 
21850  INTEGER :: ma, mb, mc, md, p_index
21851  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
21852 
21853  kbd(1:11*md_max) = 0.0_dp
21854  kbc(1:11*mc_max) = 0.0_dp
21855  kad(1:7*md_max) = 0.0_dp
21856  kac(1:7*mc_max) = 0.0_dp
21857  p_index = 0
21858  DO md = 1, md_max
21859  DO mc = 1, mc_max
21860  DO mb = 1, 11
21861  ks_bd = 0.0_dp
21862  ks_bc = 0.0_dp
21863  p_bd = pbd((md - 1)*11 + mb)
21864  p_bc = pbc((mc - 1)*11 + mb)
21865  DO ma = 1, 7
21866  p_index = p_index + 1
21867  tmp = scale*prim(p_index)
21868  ks_bc = ks_bc + tmp*pad((md - 1)*7 + ma)
21869  ks_bd = ks_bd + tmp*pac((mc - 1)*7 + ma)
21870  kad((md - 1)*7 + ma) = kad((md - 1)*7 + ma) - tmp*p_bc
21871  kac((mc - 1)*7 + ma) = kac((mc - 1)*7 + ma) - tmp*p_bd
21872  END DO
21873  kbd((md - 1)*11 + mb) = kbd((md - 1)*11 + mb) - ks_bd
21874  kbc((mc - 1)*11 + mb) = kbc((mc - 1)*11 + mb) - ks_bc
21875  END DO
21876  END DO
21877  END DO
21878  END SUBROUTINE block_7_11
21879 ! **************************************************************************************************
21880 !> \brief ...
21881 !> \param mc_max ...
21882 !> \param md_max ...
21883 !> \param kbd ...
21884 !> \param kbc ...
21885 !> \param kad ...
21886 !> \param kac ...
21887 !> \param pbd ...
21888 !> \param pbc ...
21889 !> \param pad ...
21890 !> \param pac ...
21891 !> \param prim ...
21892 !> \param scale ...
21893 ! **************************************************************************************************
21894  SUBROUTINE block_7_15(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
21895  INTEGER :: mc_max, md_max
21896  REAL(kind=dp) :: kbd(15*md_max), kbc(15*mc_max), kad(7*md_max), kac(7*mc_max), &
21897  pbd(15*md_max), pbc(15*mc_max), pad(7*md_max), pac(7*mc_max), prim(7*15*mc_max*md_max), &
21898  scale
21899 
21900  INTEGER :: ma, mb, mc, md, p_index
21901  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
21902 
21903  kbd(1:15*md_max) = 0.0_dp
21904  kbc(1:15*mc_max) = 0.0_dp
21905  kad(1:7*md_max) = 0.0_dp
21906  kac(1:7*mc_max) = 0.0_dp
21907  p_index = 0
21908  DO md = 1, md_max
21909  DO mc = 1, mc_max
21910  DO mb = 1, 15
21911  ks_bd = 0.0_dp
21912  ks_bc = 0.0_dp
21913  p_bd = pbd((md - 1)*15 + mb)
21914  p_bc = pbc((mc - 1)*15 + mb)
21915  DO ma = 1, 7
21916  p_index = p_index + 1
21917  tmp = scale*prim(p_index)
21918  ks_bc = ks_bc + tmp*pad((md - 1)*7 + ma)
21919  ks_bd = ks_bd + tmp*pac((mc - 1)*7 + ma)
21920  kad((md - 1)*7 + ma) = kad((md - 1)*7 + ma) - tmp*p_bc
21921  kac((mc - 1)*7 + ma) = kac((mc - 1)*7 + ma) - tmp*p_bd
21922  END DO
21923  kbd((md - 1)*15 + mb) = kbd((md - 1)*15 + mb) - ks_bd
21924  kbc((mc - 1)*15 + mb) = kbc((mc - 1)*15 + mb) - ks_bc
21925  END DO
21926  END DO
21927  END DO
21928  END SUBROUTINE block_7_15
21929 ! **************************************************************************************************
21930 !> \brief ...
21931 !> \param kbd ...
21932 !> \param kbc ...
21933 !> \param kad ...
21934 !> \param kac ...
21935 !> \param pbd ...
21936 !> \param pbc ...
21937 !> \param pad ...
21938 !> \param pac ...
21939 !> \param prim ...
21940 !> \param scale ...
21941 ! **************************************************************************************************
21942  SUBROUTINE block_9_1_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
21943  REAL(kind=dp) :: kbd(1*1), kbc(1*1), kad(9*1), kac(9*1), &
21944  pbd(1*1), pbc(1*1), pad(9*1), &
21945  pac(9*1), prim(9*1*1*1), scale
21946 
21947  INTEGER :: ma, mb, mc, md, p_index
21948  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
21949 
21950  kbd(1:1*1) = 0.0_dp
21951  kbc(1:1*1) = 0.0_dp
21952  kad(1:9*1) = 0.0_dp
21953  kac(1:9*1) = 0.0_dp
21954  p_index = 0
21955  DO md = 1, 1
21956  DO mc = 1, 1
21957  DO mb = 1, 1
21958  ks_bd = 0.0_dp
21959  ks_bc = 0.0_dp
21960  p_bd = pbd((md - 1)*1 + mb)
21961  p_bc = pbc((mc - 1)*1 + mb)
21962  DO ma = 1, 9
21963  p_index = p_index + 1
21964  tmp = scale*prim(p_index)
21965  ks_bc = ks_bc + tmp*pad((md - 1)*9 + ma)
21966  ks_bd = ks_bd + tmp*pac((mc - 1)*9 + ma)
21967  kad((md - 1)*9 + ma) = kad((md - 1)*9 + ma) - tmp*p_bc
21968  kac((mc - 1)*9 + ma) = kac((mc - 1)*9 + ma) - tmp*p_bd
21969  END DO
21970  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
21971  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
21972  END DO
21973  END DO
21974  END DO
21975  END SUBROUTINE block_9_1_1_1
21976 ! **************************************************************************************************
21977 !> \brief ...
21978 !> \param kbd ...
21979 !> \param kbc ...
21980 !> \param kad ...
21981 !> \param kac ...
21982 !> \param pbd ...
21983 !> \param pbc ...
21984 !> \param pad ...
21985 !> \param pac ...
21986 !> \param prim ...
21987 !> \param scale ...
21988 ! **************************************************************************************************
21989  SUBROUTINE block_9_1_1_2(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
21990  REAL(kind=dp) :: kbd(1*2), kbc(1*1), kad(9*2), kac(9*1), &
21991  pbd(1*2), pbc(1*1), pad(9*2), &
21992  pac(9*1), prim(9*1*1*2), scale
21993 
21994  INTEGER :: ma, mb, mc, md, p_index
21995  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
21996 
21997  kbd(1:1*2) = 0.0_dp
21998  kbc(1:1*1) = 0.0_dp
21999  kad(1:9*2) = 0.0_dp
22000  kac(1:9*1) = 0.0_dp
22001  p_index = 0
22002  DO md = 1, 2
22003  DO mc = 1, 1
22004  DO mb = 1, 1
22005  ks_bd = 0.0_dp
22006  ks_bc = 0.0_dp
22007  p_bd = pbd((md - 1)*1 + mb)
22008  p_bc = pbc((mc - 1)*1 + mb)
22009  DO ma = 1, 9
22010  p_index = p_index + 1
22011  tmp = scale*prim(p_index)
22012  ks_bc = ks_bc + tmp*pad((md - 1)*9 + ma)
22013  ks_bd = ks_bd + tmp*pac((mc - 1)*9 + ma)
22014  kad((md - 1)*9 + ma) = kad((md - 1)*9 + ma) - tmp*p_bc
22015  kac((mc - 1)*9 + ma) = kac((mc - 1)*9 + ma) - tmp*p_bd
22016  END DO
22017  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
22018  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
22019  END DO
22020  END DO
22021  END DO
22022  END SUBROUTINE block_9_1_1_2
22023 ! **************************************************************************************************
22024 !> \brief ...
22025 !> \param md_max ...
22026 !> \param kbd ...
22027 !> \param kbc ...
22028 !> \param kad ...
22029 !> \param kac ...
22030 !> \param pbd ...
22031 !> \param pbc ...
22032 !> \param pad ...
22033 !> \param pac ...
22034 !> \param prim ...
22035 !> \param scale ...
22036 ! **************************************************************************************************
22037  SUBROUTINE block_9_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
22038  INTEGER :: md_max
22039  REAL(kind=dp) :: kbd(1*md_max), kbc(1*1), kad(9*md_max), kac(9*1), pbd(1*md_max), pbc(1*1), &
22040  pad(9*md_max), pac(9*1), prim(9*1*1*md_max), scale
22041 
22042  INTEGER :: ma, mb, mc, md, p_index
22043  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
22044 
22045  kbd(1:1*md_max) = 0.0_dp
22046  kbc(1:1*1) = 0.0_dp
22047  kad(1:9*md_max) = 0.0_dp
22048  kac(1:9*1) = 0.0_dp
22049  p_index = 0
22050  DO md = 1, md_max
22051  DO mc = 1, 1
22052  DO mb = 1, 1
22053  ks_bd = 0.0_dp
22054  ks_bc = 0.0_dp
22055  p_bd = pbd((md - 1)*1 + mb)
22056  p_bc = pbc((mc - 1)*1 + mb)
22057  DO ma = 1, 9
22058  p_index = p_index + 1
22059  tmp = scale*prim(p_index)
22060  ks_bc = ks_bc + tmp*pad((md - 1)*9 + ma)
22061  ks_bd = ks_bd + tmp*pac((mc - 1)*9 + ma)
22062  kad((md - 1)*9 + ma) = kad((md - 1)*9 + ma) - tmp*p_bc
22063  kac((mc - 1)*9 + ma) = kac((mc - 1)*9 + ma) - tmp*p_bd
22064  END DO
22065  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
22066  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
22067  END DO
22068  END DO
22069  END DO
22070  END SUBROUTINE block_9_1_1
22071 ! **************************************************************************************************
22072 !> \brief ...
22073 !> \param kbd ...
22074 !> \param kbc ...
22075 !> \param kad ...
22076 !> \param kac ...
22077 !> \param pbd ...
22078 !> \param pbc ...
22079 !> \param pad ...
22080 !> \param pac ...
22081 !> \param prim ...
22082 !> \param scale ...
22083 ! **************************************************************************************************
22084  SUBROUTINE block_9_1_2_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
22085  REAL(kind=dp) :: kbd(1*1), kbc(1*2), kad(9*1), kac(9*2), &
22086  pbd(1*1), pbc(1*2), pad(9*1), &
22087  pac(9*2), prim(9*1*2*1), scale
22088 
22089  INTEGER :: ma, mb, mc, md, p_index
22090  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
22091 
22092  kbd(1:1*1) = 0.0_dp
22093  kbc(1:1*2) = 0.0_dp
22094  kad(1:9*1) = 0.0_dp
22095  kac(1:9*2) = 0.0_dp
22096  p_index = 0
22097  DO md = 1, 1
22098  DO mc = 1, 2
22099  DO mb = 1, 1
22100  ks_bd = 0.0_dp
22101  ks_bc = 0.0_dp
22102  p_bd = pbd((md - 1)*1 + mb)
22103  p_bc = pbc((mc - 1)*1 + mb)
22104  DO ma = 1, 9
22105  p_index = p_index + 1
22106  tmp = scale*prim(p_index)
22107  ks_bc = ks_bc + tmp*pad((md - 1)*9 + ma)
22108  ks_bd = ks_bd + tmp*pac((mc - 1)*9 + ma)
22109  kad((md - 1)*9 + ma) = kad((md - 1)*9 + ma) - tmp*p_bc
22110  kac((mc - 1)*9 + ma) = kac((mc - 1)*9 + ma) - tmp*p_bd
22111  END DO
22112  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
22113  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
22114  END DO
22115  END DO
22116  END DO
22117  END SUBROUTINE block_9_1_2_1
22118 ! **************************************************************************************************
22119 !> \brief ...
22120 !> \param md_max ...
22121 !> \param kbd ...
22122 !> \param kbc ...
22123 !> \param kad ...
22124 !> \param kac ...
22125 !> \param pbd ...
22126 !> \param pbc ...
22127 !> \param pad ...
22128 !> \param pac ...
22129 !> \param prim ...
22130 !> \param scale ...
22131 ! **************************************************************************************************
22132  SUBROUTINE block_9_1_2(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
22133  INTEGER :: md_max
22134  REAL(kind=dp) :: kbd(1*md_max), kbc(1*2), kad(9*md_max), kac(9*2), pbd(1*md_max), pbc(1*2), &
22135  pad(9*md_max), pac(9*2), prim(9*1*2*md_max), scale
22136 
22137  INTEGER :: ma, mb, mc, md, p_index
22138  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
22139 
22140  kbd(1:1*md_max) = 0.0_dp
22141  kbc(1:1*2) = 0.0_dp
22142  kad(1:9*md_max) = 0.0_dp
22143  kac(1:9*2) = 0.0_dp
22144  p_index = 0
22145  DO md = 1, md_max
22146  DO mc = 1, 2
22147  DO mb = 1, 1
22148  ks_bd = 0.0_dp
22149  ks_bc = 0.0_dp
22150  p_bd = pbd((md - 1)*1 + mb)
22151  p_bc = pbc((mc - 1)*1 + mb)
22152  DO ma = 1, 9
22153  p_index = p_index + 1
22154  tmp = scale*prim(p_index)
22155  ks_bc = ks_bc + tmp*pad((md - 1)*9 + ma)
22156  ks_bd = ks_bd + tmp*pac((mc - 1)*9 + ma)
22157  kad((md - 1)*9 + ma) = kad((md - 1)*9 + ma) - tmp*p_bc
22158  kac((mc - 1)*9 + ma) = kac((mc - 1)*9 + ma) - tmp*p_bd
22159  END DO
22160  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
22161  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
22162  END DO
22163  END DO
22164  END DO
22165  END SUBROUTINE block_9_1_2
22166 ! **************************************************************************************************
22167 !> \brief ...
22168 !> \param mc_max ...
22169 !> \param md_max ...
22170 !> \param kbd ...
22171 !> \param kbc ...
22172 !> \param kad ...
22173 !> \param kac ...
22174 !> \param pbd ...
22175 !> \param pbc ...
22176 !> \param pad ...
22177 !> \param pac ...
22178 !> \param prim ...
22179 !> \param scale ...
22180 ! **************************************************************************************************
22181  SUBROUTINE block_9_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
22182  INTEGER :: mc_max, md_max
22183  REAL(kind=dp) :: kbd(1*md_max), kbc(1*mc_max), kad(9*md_max), kac(9*mc_max), pbd(1*md_max), &
22184  pbc(1*mc_max), pad(9*md_max), pac(9*mc_max), prim(9*1*mc_max*md_max), scale
22185 
22186  INTEGER :: ma, mb, mc, md, p_index
22187  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
22188 
22189  kbd(1:1*md_max) = 0.0_dp
22190  kbc(1:1*mc_max) = 0.0_dp
22191  kad(1:9*md_max) = 0.0_dp
22192  kac(1:9*mc_max) = 0.0_dp
22193  p_index = 0
22194  DO md = 1, md_max
22195  DO mc = 1, mc_max
22196  DO mb = 1, 1
22197  ks_bd = 0.0_dp
22198  ks_bc = 0.0_dp
22199  p_bd = pbd((md - 1)*1 + mb)
22200  p_bc = pbc((mc - 1)*1 + mb)
22201  DO ma = 1, 9
22202  p_index = p_index + 1
22203  tmp = scale*prim(p_index)
22204  ks_bc = ks_bc + tmp*pad((md - 1)*9 + ma)
22205  ks_bd = ks_bd + tmp*pac((mc - 1)*9 + ma)
22206  kad((md - 1)*9 + ma) = kad((md - 1)*9 + ma) - tmp*p_bc
22207  kac((mc - 1)*9 + ma) = kac((mc - 1)*9 + ma) - tmp*p_bd
22208  END DO
22209  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
22210  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
22211  END DO
22212  END DO
22213  END DO
22214  END SUBROUTINE block_9_1
22215 ! **************************************************************************************************
22216 !> \brief ...
22217 !> \param kbd ...
22218 !> \param kbc ...
22219 !> \param kad ...
22220 !> \param kac ...
22221 !> \param pbd ...
22222 !> \param pbc ...
22223 !> \param pad ...
22224 !> \param pac ...
22225 !> \param prim ...
22226 !> \param scale ...
22227 ! **************************************************************************************************
22228  SUBROUTINE block_9_2_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
22229  REAL(kind=dp) :: kbd(2*1), kbc(2*1), kad(9*1), kac(9*1), &
22230  pbd(2*1), pbc(2*1), pad(9*1), &
22231  pac(9*1), prim(9*2*1*1), scale
22232 
22233  INTEGER :: ma, mb, mc, md, p_index
22234  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
22235 
22236  kbd(1:2*1) = 0.0_dp
22237  kbc(1:2*1) = 0.0_dp
22238  kad(1:9*1) = 0.0_dp
22239  kac(1:9*1) = 0.0_dp
22240  p_index = 0
22241  DO md = 1, 1
22242  DO mc = 1, 1
22243  DO mb = 1, 2
22244  ks_bd = 0.0_dp
22245  ks_bc = 0.0_dp
22246  p_bd = pbd((md - 1)*2 + mb)
22247  p_bc = pbc((mc - 1)*2 + mb)
22248  DO ma = 1, 9
22249  p_index = p_index + 1
22250  tmp = scale*prim(p_index)
22251  ks_bc = ks_bc + tmp*pad((md - 1)*9 + ma)
22252  ks_bd = ks_bd + tmp*pac((mc - 1)*9 + ma)
22253  kad((md - 1)*9 + ma) = kad((md - 1)*9 + ma) - tmp*p_bc
22254  kac((mc - 1)*9 + ma) = kac((mc - 1)*9 + ma) - tmp*p_bd
22255  END DO
22256  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
22257  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
22258  END DO
22259  END DO
22260  END DO
22261  END SUBROUTINE block_9_2_1_1
22262 ! **************************************************************************************************
22263 !> \brief ...
22264 !> \param md_max ...
22265 !> \param kbd ...
22266 !> \param kbc ...
22267 !> \param kad ...
22268 !> \param kac ...
22269 !> \param pbd ...
22270 !> \param pbc ...
22271 !> \param pad ...
22272 !> \param pac ...
22273 !> \param prim ...
22274 !> \param scale ...
22275 ! **************************************************************************************************
22276  SUBROUTINE block_9_2_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
22277  INTEGER :: md_max
22278  REAL(kind=dp) :: kbd(2*md_max), kbc(2*1), kad(9*md_max), kac(9*1), pbd(2*md_max), pbc(2*1), &
22279  pad(9*md_max), pac(9*1), prim(9*2*1*md_max), scale
22280 
22281  INTEGER :: ma, mb, mc, md, p_index
22282  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
22283 
22284  kbd(1:2*md_max) = 0.0_dp
22285  kbc(1:2*1) = 0.0_dp
22286  kad(1:9*md_max) = 0.0_dp
22287  kac(1:9*1) = 0.0_dp
22288  p_index = 0
22289  DO md = 1, md_max
22290  DO mc = 1, 1
22291  DO mb = 1, 2
22292  ks_bd = 0.0_dp
22293  ks_bc = 0.0_dp
22294  p_bd = pbd((md - 1)*2 + mb)
22295  p_bc = pbc((mc - 1)*2 + mb)
22296  DO ma = 1, 9
22297  p_index = p_index + 1
22298  tmp = scale*prim(p_index)
22299  ks_bc = ks_bc + tmp*pad((md - 1)*9 + ma)
22300  ks_bd = ks_bd + tmp*pac((mc - 1)*9 + ma)
22301  kad((md - 1)*9 + ma) = kad((md - 1)*9 + ma) - tmp*p_bc
22302  kac((mc - 1)*9 + ma) = kac((mc - 1)*9 + ma) - tmp*p_bd
22303  END DO
22304  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
22305  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
22306  END DO
22307  END DO
22308  END DO
22309  END SUBROUTINE block_9_2_1
22310 ! **************************************************************************************************
22311 !> \brief ...
22312 !> \param mc_max ...
22313 !> \param md_max ...
22314 !> \param kbd ...
22315 !> \param kbc ...
22316 !> \param kad ...
22317 !> \param kac ...
22318 !> \param pbd ...
22319 !> \param pbc ...
22320 !> \param pad ...
22321 !> \param pac ...
22322 !> \param prim ...
22323 !> \param scale ...
22324 ! **************************************************************************************************
22325  SUBROUTINE block_9_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
22326  INTEGER :: mc_max, md_max
22327  REAL(kind=dp) :: kbd(2*md_max), kbc(2*mc_max), kad(9*md_max), kac(9*mc_max), pbd(2*md_max), &
22328  pbc(2*mc_max), pad(9*md_max), pac(9*mc_max), prim(9*2*mc_max*md_max), scale
22329 
22330  INTEGER :: ma, mb, mc, md, p_index
22331  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
22332 
22333  kbd(1:2*md_max) = 0.0_dp
22334  kbc(1:2*mc_max) = 0.0_dp
22335  kad(1:9*md_max) = 0.0_dp
22336  kac(1:9*mc_max) = 0.0_dp
22337  p_index = 0
22338  DO md = 1, md_max
22339  DO mc = 1, mc_max
22340  DO mb = 1, 2
22341  ks_bd = 0.0_dp
22342  ks_bc = 0.0_dp
22343  p_bd = pbd((md - 1)*2 + mb)
22344  p_bc = pbc((mc - 1)*2 + mb)
22345  DO ma = 1, 9
22346  p_index = p_index + 1
22347  tmp = scale*prim(p_index)
22348  ks_bc = ks_bc + tmp*pad((md - 1)*9 + ma)
22349  ks_bd = ks_bd + tmp*pac((mc - 1)*9 + ma)
22350  kad((md - 1)*9 + ma) = kad((md - 1)*9 + ma) - tmp*p_bc
22351  kac((mc - 1)*9 + ma) = kac((mc - 1)*9 + ma) - tmp*p_bd
22352  END DO
22353  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
22354  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
22355  END DO
22356  END DO
22357  END DO
22358  END SUBROUTINE block_9_2
22359 ! **************************************************************************************************
22360 !> \brief ...
22361 !> \param mc_max ...
22362 !> \param md_max ...
22363 !> \param kbd ...
22364 !> \param kbc ...
22365 !> \param kad ...
22366 !> \param kac ...
22367 !> \param pbd ...
22368 !> \param pbc ...
22369 !> \param pad ...
22370 !> \param pac ...
22371 !> \param prim ...
22372 !> \param scale ...
22373 ! **************************************************************************************************
22374  SUBROUTINE block_9_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
22375  INTEGER :: mc_max, md_max
22376  REAL(kind=dp) :: kbd(3*md_max), kbc(3*mc_max), kad(9*md_max), kac(9*mc_max), pbd(3*md_max), &
22377  pbc(3*mc_max), pad(9*md_max), pac(9*mc_max), prim(9*3*mc_max*md_max), scale
22378 
22379  INTEGER :: ma, mb, mc, md, p_index
22380  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
22381 
22382  kbd(1:3*md_max) = 0.0_dp
22383  kbc(1:3*mc_max) = 0.0_dp
22384  kad(1:9*md_max) = 0.0_dp
22385  kac(1:9*mc_max) = 0.0_dp
22386  p_index = 0
22387  DO md = 1, md_max
22388  DO mc = 1, mc_max
22389  DO mb = 1, 3
22390  ks_bd = 0.0_dp
22391  ks_bc = 0.0_dp
22392  p_bd = pbd((md - 1)*3 + mb)
22393  p_bc = pbc((mc - 1)*3 + mb)
22394  DO ma = 1, 9
22395  p_index = p_index + 1
22396  tmp = scale*prim(p_index)
22397  ks_bc = ks_bc + tmp*pad((md - 1)*9 + ma)
22398  ks_bd = ks_bd + tmp*pac((mc - 1)*9 + ma)
22399  kad((md - 1)*9 + ma) = kad((md - 1)*9 + ma) - tmp*p_bc
22400  kac((mc - 1)*9 + ma) = kac((mc - 1)*9 + ma) - tmp*p_bd
22401  END DO
22402  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
22403  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
22404  END DO
22405  END DO
22406  END DO
22407  END SUBROUTINE block_9_3
22408 ! **************************************************************************************************
22409 !> \brief ...
22410 !> \param mc_max ...
22411 !> \param md_max ...
22412 !> \param kbd ...
22413 !> \param kbc ...
22414 !> \param kad ...
22415 !> \param kac ...
22416 !> \param pbd ...
22417 !> \param pbc ...
22418 !> \param pad ...
22419 !> \param pac ...
22420 !> \param prim ...
22421 !> \param scale ...
22422 ! **************************************************************************************************
22423  SUBROUTINE block_9_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
22424  INTEGER :: mc_max, md_max
22425  REAL(kind=dp) :: kbd(4*md_max), kbc(4*mc_max), kad(9*md_max), kac(9*mc_max), pbd(4*md_max), &
22426  pbc(4*mc_max), pad(9*md_max), pac(9*mc_max), prim(9*4*mc_max*md_max), scale
22427 
22428  INTEGER :: ma, mb, mc, md, p_index
22429  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
22430 
22431  kbd(1:4*md_max) = 0.0_dp
22432  kbc(1:4*mc_max) = 0.0_dp
22433  kad(1:9*md_max) = 0.0_dp
22434  kac(1:9*mc_max) = 0.0_dp
22435  p_index = 0
22436  DO md = 1, md_max
22437  DO mc = 1, mc_max
22438  DO mb = 1, 4
22439  ks_bd = 0.0_dp
22440  ks_bc = 0.0_dp
22441  p_bd = pbd((md - 1)*4 + mb)
22442  p_bc = pbc((mc - 1)*4 + mb)
22443  DO ma = 1, 9
22444  p_index = p_index + 1
22445  tmp = scale*prim(p_index)
22446  ks_bc = ks_bc + tmp*pad((md - 1)*9 + ma)
22447  ks_bd = ks_bd + tmp*pac((mc - 1)*9 + ma)
22448  kad((md - 1)*9 + ma) = kad((md - 1)*9 + ma) - tmp*p_bc
22449  kac((mc - 1)*9 + ma) = kac((mc - 1)*9 + ma) - tmp*p_bd
22450  END DO
22451  kbd((md - 1)*4 + mb) = kbd((md - 1)*4 + mb) - ks_bd
22452  kbc((mc - 1)*4 + mb) = kbc((mc - 1)*4 + mb) - ks_bc
22453  END DO
22454  END DO
22455  END DO
22456  END SUBROUTINE block_9_4
22457 ! **************************************************************************************************
22458 !> \brief ...
22459 !> \param mc_max ...
22460 !> \param md_max ...
22461 !> \param kbd ...
22462 !> \param kbc ...
22463 !> \param kad ...
22464 !> \param kac ...
22465 !> \param pbd ...
22466 !> \param pbc ...
22467 !> \param pad ...
22468 !> \param pac ...
22469 !> \param prim ...
22470 !> \param scale ...
22471 ! **************************************************************************************************
22472  SUBROUTINE block_9_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
22473  INTEGER :: mc_max, md_max
22474  REAL(kind=dp) :: kbd(5*md_max), kbc(5*mc_max), kad(9*md_max), kac(9*mc_max), pbd(5*md_max), &
22475  pbc(5*mc_max), pad(9*md_max), pac(9*mc_max), prim(9*5*mc_max*md_max), scale
22476 
22477  INTEGER :: ma, mb, mc, md, p_index
22478  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
22479 
22480  kbd(1:5*md_max) = 0.0_dp
22481  kbc(1:5*mc_max) = 0.0_dp
22482  kad(1:9*md_max) = 0.0_dp
22483  kac(1:9*mc_max) = 0.0_dp
22484  p_index = 0
22485  DO md = 1, md_max
22486  DO mc = 1, mc_max
22487  DO mb = 1, 5
22488  ks_bd = 0.0_dp
22489  ks_bc = 0.0_dp
22490  p_bd = pbd((md - 1)*5 + mb)
22491  p_bc = pbc((mc - 1)*5 + mb)
22492  DO ma = 1, 9
22493  p_index = p_index + 1
22494  tmp = scale*prim(p_index)
22495  ks_bc = ks_bc + tmp*pad((md - 1)*9 + ma)
22496  ks_bd = ks_bd + tmp*pac((mc - 1)*9 + ma)
22497  kad((md - 1)*9 + ma) = kad((md - 1)*9 + ma) - tmp*p_bc
22498  kac((mc - 1)*9 + ma) = kac((mc - 1)*9 + ma) - tmp*p_bd
22499  END DO
22500  kbd((md - 1)*5 + mb) = kbd((md - 1)*5 + mb) - ks_bd
22501  kbc((mc - 1)*5 + mb) = kbc((mc - 1)*5 + mb) - ks_bc
22502  END DO
22503  END DO
22504  END DO
22505  END SUBROUTINE block_9_5
22506 ! **************************************************************************************************
22507 !> \brief ...
22508 !> \param mc_max ...
22509 !> \param md_max ...
22510 !> \param kbd ...
22511 !> \param kbc ...
22512 !> \param kad ...
22513 !> \param kac ...
22514 !> \param pbd ...
22515 !> \param pbc ...
22516 !> \param pad ...
22517 !> \param pac ...
22518 !> \param prim ...
22519 !> \param scale ...
22520 ! **************************************************************************************************
22521  SUBROUTINE block_9_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
22522  INTEGER :: mc_max, md_max
22523  REAL(kind=dp) :: kbd(6*md_max), kbc(6*mc_max), kad(9*md_max), kac(9*mc_max), pbd(6*md_max), &
22524  pbc(6*mc_max), pad(9*md_max), pac(9*mc_max), prim(9*6*mc_max*md_max), scale
22525 
22526  INTEGER :: ma, mb, mc, md, p_index
22527  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
22528 
22529  kbd(1:6*md_max) = 0.0_dp
22530  kbc(1:6*mc_max) = 0.0_dp
22531  kad(1:9*md_max) = 0.0_dp
22532  kac(1:9*mc_max) = 0.0_dp
22533  p_index = 0
22534  DO md = 1, md_max
22535  DO mc = 1, mc_max
22536  DO mb = 1, 6
22537  ks_bd = 0.0_dp
22538  ks_bc = 0.0_dp
22539  p_bd = pbd((md - 1)*6 + mb)
22540  p_bc = pbc((mc - 1)*6 + mb)
22541  DO ma = 1, 9
22542  p_index = p_index + 1
22543  tmp = scale*prim(p_index)
22544  ks_bc = ks_bc + tmp*pad((md - 1)*9 + ma)
22545  ks_bd = ks_bd + tmp*pac((mc - 1)*9 + ma)
22546  kad((md - 1)*9 + ma) = kad((md - 1)*9 + ma) - tmp*p_bc
22547  kac((mc - 1)*9 + ma) = kac((mc - 1)*9 + ma) - tmp*p_bd
22548  END DO
22549  kbd((md - 1)*6 + mb) = kbd((md - 1)*6 + mb) - ks_bd
22550  kbc((mc - 1)*6 + mb) = kbc((mc - 1)*6 + mb) - ks_bc
22551  END DO
22552  END DO
22553  END DO
22554  END SUBROUTINE block_9_6
22555 ! **************************************************************************************************
22556 !> \brief ...
22557 !> \param mc_max ...
22558 !> \param md_max ...
22559 !> \param kbd ...
22560 !> \param kbc ...
22561 !> \param kad ...
22562 !> \param kac ...
22563 !> \param pbd ...
22564 !> \param pbc ...
22565 !> \param pad ...
22566 !> \param pac ...
22567 !> \param prim ...
22568 !> \param scale ...
22569 ! **************************************************************************************************
22570  SUBROUTINE block_9_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
22571  INTEGER :: mc_max, md_max
22572  REAL(kind=dp) :: kbd(7*md_max), kbc(7*mc_max), kad(9*md_max), kac(9*mc_max), pbd(7*md_max), &
22573  pbc(7*mc_max), pad(9*md_max), pac(9*mc_max), prim(9*7*mc_max*md_max), scale
22574 
22575  INTEGER :: ma, mb, mc, md, p_index
22576  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
22577 
22578  kbd(1:7*md_max) = 0.0_dp
22579  kbc(1:7*mc_max) = 0.0_dp
22580  kad(1:9*md_max) = 0.0_dp
22581  kac(1:9*mc_max) = 0.0_dp
22582  p_index = 0
22583  DO md = 1, md_max
22584  DO mc = 1, mc_max
22585  DO mb = 1, 7
22586  ks_bd = 0.0_dp
22587  ks_bc = 0.0_dp
22588  p_bd = pbd((md - 1)*7 + mb)
22589  p_bc = pbc((mc - 1)*7 + mb)
22590  DO ma = 1, 9
22591  p_index = p_index + 1
22592  tmp = scale*prim(p_index)
22593  ks_bc = ks_bc + tmp*pad((md - 1)*9 + ma)
22594  ks_bd = ks_bd + tmp*pac((mc - 1)*9 + ma)
22595  kad((md - 1)*9 + ma) = kad((md - 1)*9 + ma) - tmp*p_bc
22596  kac((mc - 1)*9 + ma) = kac((mc - 1)*9 + ma) - tmp*p_bd
22597  END DO
22598  kbd((md - 1)*7 + mb) = kbd((md - 1)*7 + mb) - ks_bd
22599  kbc((mc - 1)*7 + mb) = kbc((mc - 1)*7 + mb) - ks_bc
22600  END DO
22601  END DO
22602  END DO
22603  END SUBROUTINE block_9_7
22604 ! **************************************************************************************************
22605 !> \brief ...
22606 !> \param mc_max ...
22607 !> \param md_max ...
22608 !> \param kbd ...
22609 !> \param kbc ...
22610 !> \param kad ...
22611 !> \param kac ...
22612 !> \param pbd ...
22613 !> \param pbc ...
22614 !> \param pad ...
22615 !> \param pac ...
22616 !> \param prim ...
22617 !> \param scale ...
22618 ! **************************************************************************************************
22619  SUBROUTINE block_9_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
22620  INTEGER :: mc_max, md_max
22621  REAL(kind=dp) :: kbd(9*md_max), kbc(9*mc_max), kad(9*md_max), kac(9*mc_max), pbd(9*md_max), &
22622  pbc(9*mc_max), pad(9*md_max), pac(9*mc_max), prim(9*9*mc_max*md_max), scale
22623 
22624  INTEGER :: ma, mb, mc, md, p_index
22625  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
22626 
22627  kbd(1:9*md_max) = 0.0_dp
22628  kbc(1:9*mc_max) = 0.0_dp
22629  kad(1:9*md_max) = 0.0_dp
22630  kac(1:9*mc_max) = 0.0_dp
22631  p_index = 0
22632  DO md = 1, md_max
22633  DO mc = 1, mc_max
22634  DO mb = 1, 9
22635  ks_bd = 0.0_dp
22636  ks_bc = 0.0_dp
22637  p_bd = pbd((md - 1)*9 + mb)
22638  p_bc = pbc((mc - 1)*9 + mb)
22639  DO ma = 1, 9
22640  p_index = p_index + 1
22641  tmp = scale*prim(p_index)
22642  ks_bc = ks_bc + tmp*pad((md - 1)*9 + ma)
22643  ks_bd = ks_bd + tmp*pac((mc - 1)*9 + ma)
22644  kad((md - 1)*9 + ma) = kad((md - 1)*9 + ma) - tmp*p_bc
22645  kac((mc - 1)*9 + ma) = kac((mc - 1)*9 + ma) - tmp*p_bd
22646  END DO
22647  kbd((md - 1)*9 + mb) = kbd((md - 1)*9 + mb) - ks_bd
22648  kbc((mc - 1)*9 + mb) = kbc((mc - 1)*9 + mb) - ks_bc
22649  END DO
22650  END DO
22651  END DO
22652  END SUBROUTINE block_9_9
22653 ! **************************************************************************************************
22654 !> \brief ...
22655 !> \param mc_max ...
22656 !> \param md_max ...
22657 !> \param kbd ...
22658 !> \param kbc ...
22659 !> \param kad ...
22660 !> \param kac ...
22661 !> \param pbd ...
22662 !> \param pbc ...
22663 !> \param pad ...
22664 !> \param pac ...
22665 !> \param prim ...
22666 !> \param scale ...
22667 ! **************************************************************************************************
22668  SUBROUTINE block_9_10(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
22669  INTEGER :: mc_max, md_max
22670  REAL(kind=dp) :: kbd(10*md_max), kbc(10*mc_max), kad(9*md_max), kac(9*mc_max), &
22671  pbd(10*md_max), pbc(10*mc_max), pad(9*md_max), pac(9*mc_max), prim(9*10*mc_max*md_max), &
22672  scale
22673 
22674  INTEGER :: ma, mb, mc, md, p_index
22675  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
22676 
22677  kbd(1:10*md_max) = 0.0_dp
22678  kbc(1:10*mc_max) = 0.0_dp
22679  kad(1:9*md_max) = 0.0_dp
22680  kac(1:9*mc_max) = 0.0_dp
22681  p_index = 0
22682  DO md = 1, md_max
22683  DO mc = 1, mc_max
22684  DO mb = 1, 10
22685  ks_bd = 0.0_dp
22686  ks_bc = 0.0_dp
22687  p_bd = pbd((md - 1)*10 + mb)
22688  p_bc = pbc((mc - 1)*10 + mb)
22689  DO ma = 1, 9
22690  p_index = p_index + 1
22691  tmp = scale*prim(p_index)
22692  ks_bc = ks_bc + tmp*pad((md - 1)*9 + ma)
22693  ks_bd = ks_bd + tmp*pac((mc - 1)*9 + ma)
22694  kad((md - 1)*9 + ma) = kad((md - 1)*9 + ma) - tmp*p_bc
22695  kac((mc - 1)*9 + ma) = kac((mc - 1)*9 + ma) - tmp*p_bd
22696  END DO
22697  kbd((md - 1)*10 + mb) = kbd((md - 1)*10 + mb) - ks_bd
22698  kbc((mc - 1)*10 + mb) = kbc((mc - 1)*10 + mb) - ks_bc
22699  END DO
22700  END DO
22701  END DO
22702  END SUBROUTINE block_9_10
22703 ! **************************************************************************************************
22704 !> \brief ...
22705 !> \param mc_max ...
22706 !> \param md_max ...
22707 !> \param kbd ...
22708 !> \param kbc ...
22709 !> \param kad ...
22710 !> \param kac ...
22711 !> \param pbd ...
22712 !> \param pbc ...
22713 !> \param pad ...
22714 !> \param pac ...
22715 !> \param prim ...
22716 !> \param scale ...
22717 ! **************************************************************************************************
22718  SUBROUTINE block_9_11(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
22719  INTEGER :: mc_max, md_max
22720  REAL(kind=dp) :: kbd(11*md_max), kbc(11*mc_max), kad(9*md_max), kac(9*mc_max), &
22721  pbd(11*md_max), pbc(11*mc_max), pad(9*md_max), pac(9*mc_max), prim(9*11*mc_max*md_max), &
22722  scale
22723 
22724  INTEGER :: ma, mb, mc, md, p_index
22725  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
22726 
22727  kbd(1:11*md_max) = 0.0_dp
22728  kbc(1:11*mc_max) = 0.0_dp
22729  kad(1:9*md_max) = 0.0_dp
22730  kac(1:9*mc_max) = 0.0_dp
22731  p_index = 0
22732  DO md = 1, md_max
22733  DO mc = 1, mc_max
22734  DO mb = 1, 11
22735  ks_bd = 0.0_dp
22736  ks_bc = 0.0_dp
22737  p_bd = pbd((md - 1)*11 + mb)
22738  p_bc = pbc((mc - 1)*11 + mb)
22739  DO ma = 1, 9
22740  p_index = p_index + 1
22741  tmp = scale*prim(p_index)
22742  ks_bc = ks_bc + tmp*pad((md - 1)*9 + ma)
22743  ks_bd = ks_bd + tmp*pac((mc - 1)*9 + ma)
22744  kad((md - 1)*9 + ma) = kad((md - 1)*9 + ma) - tmp*p_bc
22745  kac((mc - 1)*9 + ma) = kac((mc - 1)*9 + ma) - tmp*p_bd
22746  END DO
22747  kbd((md - 1)*11 + mb) = kbd((md - 1)*11 + mb) - ks_bd
22748  kbc((mc - 1)*11 + mb) = kbc((mc - 1)*11 + mb) - ks_bc
22749  END DO
22750  END DO
22751  END DO
22752  END SUBROUTINE block_9_11
22753 ! **************************************************************************************************
22754 !> \brief ...
22755 !> \param mc_max ...
22756 !> \param md_max ...
22757 !> \param kbd ...
22758 !> \param kbc ...
22759 !> \param kad ...
22760 !> \param kac ...
22761 !> \param pbd ...
22762 !> \param pbc ...
22763 !> \param pad ...
22764 !> \param pac ...
22765 !> \param prim ...
22766 !> \param scale ...
22767 ! **************************************************************************************************
22768  SUBROUTINE block_9_15(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
22769  INTEGER :: mc_max, md_max
22770  REAL(kind=dp) :: kbd(15*md_max), kbc(15*mc_max), kad(9*md_max), kac(9*mc_max), &
22771  pbd(15*md_max), pbc(15*mc_max), pad(9*md_max), pac(9*mc_max), prim(9*15*mc_max*md_max), &
22772  scale
22773 
22774  INTEGER :: ma, mb, mc, md, p_index
22775  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
22776 
22777  kbd(1:15*md_max) = 0.0_dp
22778  kbc(1:15*mc_max) = 0.0_dp
22779  kad(1:9*md_max) = 0.0_dp
22780  kac(1:9*mc_max) = 0.0_dp
22781  p_index = 0
22782  DO md = 1, md_max
22783  DO mc = 1, mc_max
22784  DO mb = 1, 15
22785  ks_bd = 0.0_dp
22786  ks_bc = 0.0_dp
22787  p_bd = pbd((md - 1)*15 + mb)
22788  p_bc = pbc((mc - 1)*15 + mb)
22789  DO ma = 1, 9
22790  p_index = p_index + 1
22791  tmp = scale*prim(p_index)
22792  ks_bc = ks_bc + tmp*pad((md - 1)*9 + ma)
22793  ks_bd = ks_bd + tmp*pac((mc - 1)*9 + ma)
22794  kad((md - 1)*9 + ma) = kad((md - 1)*9 + ma) - tmp*p_bc
22795  kac((mc - 1)*9 + ma) = kac((mc - 1)*9 + ma) - tmp*p_bd
22796  END DO
22797  kbd((md - 1)*15 + mb) = kbd((md - 1)*15 + mb) - ks_bd
22798  kbc((mc - 1)*15 + mb) = kbc((mc - 1)*15 + mb) - ks_bc
22799  END DO
22800  END DO
22801  END DO
22802  END SUBROUTINE block_9_15
22803 ! **************************************************************************************************
22804 !> \brief ...
22805 !> \param kbd ...
22806 !> \param kbc ...
22807 !> \param kad ...
22808 !> \param kac ...
22809 !> \param pbd ...
22810 !> \param pbc ...
22811 !> \param pad ...
22812 !> \param pac ...
22813 !> \param prim ...
22814 !> \param scale ...
22815 ! **************************************************************************************************
22816  SUBROUTINE block_10_1_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
22817  REAL(kind=dp) :: kbd(1*1), kbc(1*1), kad(10*1), &
22818  kac(10*1), pbd(1*1), pbc(1*1), &
22819  pad(10*1), pac(10*1), prim(10*1*1*1), &
22820  scale
22821 
22822  INTEGER :: ma, mb, mc, md, p_index
22823  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
22824 
22825  kbd(1:1*1) = 0.0_dp
22826  kbc(1:1*1) = 0.0_dp
22827  kad(1:10*1) = 0.0_dp
22828  kac(1:10*1) = 0.0_dp
22829  p_index = 0
22830  DO md = 1, 1
22831  DO mc = 1, 1
22832  DO mb = 1, 1
22833  ks_bd = 0.0_dp
22834  ks_bc = 0.0_dp
22835  p_bd = pbd((md - 1)*1 + mb)
22836  p_bc = pbc((mc - 1)*1 + mb)
22837  DO ma = 1, 10
22838  p_index = p_index + 1
22839  tmp = scale*prim(p_index)
22840  ks_bc = ks_bc + tmp*pad((md - 1)*10 + ma)
22841  ks_bd = ks_bd + tmp*pac((mc - 1)*10 + ma)
22842  kad((md - 1)*10 + ma) = kad((md - 1)*10 + ma) - tmp*p_bc
22843  kac((mc - 1)*10 + ma) = kac((mc - 1)*10 + ma) - tmp*p_bd
22844  END DO
22845  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
22846  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
22847  END DO
22848  END DO
22849  END DO
22850  END SUBROUTINE block_10_1_1_1
22851 ! **************************************************************************************************
22852 !> \brief ...
22853 !> \param md_max ...
22854 !> \param kbd ...
22855 !> \param kbc ...
22856 !> \param kad ...
22857 !> \param kac ...
22858 !> \param pbd ...
22859 !> \param pbc ...
22860 !> \param pad ...
22861 !> \param pac ...
22862 !> \param prim ...
22863 !> \param scale ...
22864 ! **************************************************************************************************
22865  SUBROUTINE block_10_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
22866  INTEGER :: md_max
22867  REAL(kind=dp) :: kbd(1*md_max), kbc(1*1), kad(10*md_max), kac(10*1), pbd(1*md_max), &
22868  pbc(1*1), pad(10*md_max), pac(10*1), prim(10*1*1*md_max), scale
22869 
22870  INTEGER :: ma, mb, mc, md, p_index
22871  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
22872 
22873  kbd(1:1*md_max) = 0.0_dp
22874  kbc(1:1*1) = 0.0_dp
22875  kad(1:10*md_max) = 0.0_dp
22876  kac(1:10*1) = 0.0_dp
22877  p_index = 0
22878  DO md = 1, md_max
22879  DO mc = 1, 1
22880  DO mb = 1, 1
22881  ks_bd = 0.0_dp
22882  ks_bc = 0.0_dp
22883  p_bd = pbd((md - 1)*1 + mb)
22884  p_bc = pbc((mc - 1)*1 + mb)
22885  DO ma = 1, 10
22886  p_index = p_index + 1
22887  tmp = scale*prim(p_index)
22888  ks_bc = ks_bc + tmp*pad((md - 1)*10 + ma)
22889  ks_bd = ks_bd + tmp*pac((mc - 1)*10 + ma)
22890  kad((md - 1)*10 + ma) = kad((md - 1)*10 + ma) - tmp*p_bc
22891  kac((mc - 1)*10 + ma) = kac((mc - 1)*10 + ma) - tmp*p_bd
22892  END DO
22893  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
22894  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
22895  END DO
22896  END DO
22897  END DO
22898  END SUBROUTINE block_10_1_1
22899 ! **************************************************************************************************
22900 !> \brief ...
22901 !> \param mc_max ...
22902 !> \param md_max ...
22903 !> \param kbd ...
22904 !> \param kbc ...
22905 !> \param kad ...
22906 !> \param kac ...
22907 !> \param pbd ...
22908 !> \param pbc ...
22909 !> \param pad ...
22910 !> \param pac ...
22911 !> \param prim ...
22912 !> \param scale ...
22913 ! **************************************************************************************************
22914  SUBROUTINE block_10_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
22915  INTEGER :: mc_max, md_max
22916  REAL(kind=dp) :: kbd(1*md_max), kbc(1*mc_max), kad(10*md_max), kac(10*mc_max), &
22917  pbd(1*md_max), pbc(1*mc_max), pad(10*md_max), pac(10*mc_max), prim(10*1*mc_max*md_max), &
22918  scale
22919 
22920  INTEGER :: ma, mb, mc, md, p_index
22921  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
22922 
22923  kbd(1:1*md_max) = 0.0_dp
22924  kbc(1:1*mc_max) = 0.0_dp
22925  kad(1:10*md_max) = 0.0_dp
22926  kac(1:10*mc_max) = 0.0_dp
22927  p_index = 0
22928  DO md = 1, md_max
22929  DO mc = 1, mc_max
22930  DO mb = 1, 1
22931  ks_bd = 0.0_dp
22932  ks_bc = 0.0_dp
22933  p_bd = pbd((md - 1)*1 + mb)
22934  p_bc = pbc((mc - 1)*1 + mb)
22935  DO ma = 1, 10
22936  p_index = p_index + 1
22937  tmp = scale*prim(p_index)
22938  ks_bc = ks_bc + tmp*pad((md - 1)*10 + ma)
22939  ks_bd = ks_bd + tmp*pac((mc - 1)*10 + ma)
22940  kad((md - 1)*10 + ma) = kad((md - 1)*10 + ma) - tmp*p_bc
22941  kac((mc - 1)*10 + ma) = kac((mc - 1)*10 + ma) - tmp*p_bd
22942  END DO
22943  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
22944  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
22945  END DO
22946  END DO
22947  END DO
22948  END SUBROUTINE block_10_1
22949 ! **************************************************************************************************
22950 !> \brief ...
22951 !> \param mc_max ...
22952 !> \param md_max ...
22953 !> \param kbd ...
22954 !> \param kbc ...
22955 !> \param kad ...
22956 !> \param kac ...
22957 !> \param pbd ...
22958 !> \param pbc ...
22959 !> \param pad ...
22960 !> \param pac ...
22961 !> \param prim ...
22962 !> \param scale ...
22963 ! **************************************************************************************************
22964  SUBROUTINE block_10_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
22965  INTEGER :: mc_max, md_max
22966  REAL(kind=dp) :: kbd(2*md_max), kbc(2*mc_max), kad(10*md_max), kac(10*mc_max), &
22967  pbd(2*md_max), pbc(2*mc_max), pad(10*md_max), pac(10*mc_max), prim(10*2*mc_max*md_max), &
22968  scale
22969 
22970  INTEGER :: ma, mb, mc, md, p_index
22971  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
22972 
22973  kbd(1:2*md_max) = 0.0_dp
22974  kbc(1:2*mc_max) = 0.0_dp
22975  kad(1:10*md_max) = 0.0_dp
22976  kac(1:10*mc_max) = 0.0_dp
22977  p_index = 0
22978  DO md = 1, md_max
22979  DO mc = 1, mc_max
22980  DO mb = 1, 2
22981  ks_bd = 0.0_dp
22982  ks_bc = 0.0_dp
22983  p_bd = pbd((md - 1)*2 + mb)
22984  p_bc = pbc((mc - 1)*2 + mb)
22985  DO ma = 1, 10
22986  p_index = p_index + 1
22987  tmp = scale*prim(p_index)
22988  ks_bc = ks_bc + tmp*pad((md - 1)*10 + ma)
22989  ks_bd = ks_bd + tmp*pac((mc - 1)*10 + ma)
22990  kad((md - 1)*10 + ma) = kad((md - 1)*10 + ma) - tmp*p_bc
22991  kac((mc - 1)*10 + ma) = kac((mc - 1)*10 + ma) - tmp*p_bd
22992  END DO
22993  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
22994  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
22995  END DO
22996  END DO
22997  END DO
22998  END SUBROUTINE block_10_2
22999 ! **************************************************************************************************
23000 !> \brief ...
23001 !> \param mc_max ...
23002 !> \param md_max ...
23003 !> \param kbd ...
23004 !> \param kbc ...
23005 !> \param kad ...
23006 !> \param kac ...
23007 !> \param pbd ...
23008 !> \param pbc ...
23009 !> \param pad ...
23010 !> \param pac ...
23011 !> \param prim ...
23012 !> \param scale ...
23013 ! **************************************************************************************************
23014  SUBROUTINE block_10_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
23015  INTEGER :: mc_max, md_max
23016  REAL(kind=dp) :: kbd(3*md_max), kbc(3*mc_max), kad(10*md_max), kac(10*mc_max), &
23017  pbd(3*md_max), pbc(3*mc_max), pad(10*md_max), pac(10*mc_max), prim(10*3*mc_max*md_max), &
23018  scale
23019 
23020  INTEGER :: ma, mb, mc, md, p_index
23021  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
23022 
23023  kbd(1:3*md_max) = 0.0_dp
23024  kbc(1:3*mc_max) = 0.0_dp
23025  kad(1:10*md_max) = 0.0_dp
23026  kac(1:10*mc_max) = 0.0_dp
23027  p_index = 0
23028  DO md = 1, md_max
23029  DO mc = 1, mc_max
23030  DO mb = 1, 3
23031  ks_bd = 0.0_dp
23032  ks_bc = 0.0_dp
23033  p_bd = pbd((md - 1)*3 + mb)
23034  p_bc = pbc((mc - 1)*3 + mb)
23035  DO ma = 1, 10
23036  p_index = p_index + 1
23037  tmp = scale*prim(p_index)
23038  ks_bc = ks_bc + tmp*pad((md - 1)*10 + ma)
23039  ks_bd = ks_bd + tmp*pac((mc - 1)*10 + ma)
23040  kad((md - 1)*10 + ma) = kad((md - 1)*10 + ma) - tmp*p_bc
23041  kac((mc - 1)*10 + ma) = kac((mc - 1)*10 + ma) - tmp*p_bd
23042  END DO
23043  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
23044  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
23045  END DO
23046  END DO
23047  END DO
23048  END SUBROUTINE block_10_3
23049 ! **************************************************************************************************
23050 !> \brief ...
23051 !> \param mc_max ...
23052 !> \param md_max ...
23053 !> \param kbd ...
23054 !> \param kbc ...
23055 !> \param kad ...
23056 !> \param kac ...
23057 !> \param pbd ...
23058 !> \param pbc ...
23059 !> \param pad ...
23060 !> \param pac ...
23061 !> \param prim ...
23062 !> \param scale ...
23063 ! **************************************************************************************************
23064  SUBROUTINE block_10_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
23065  INTEGER :: mc_max, md_max
23066  REAL(kind=dp) :: kbd(4*md_max), kbc(4*mc_max), kad(10*md_max), kac(10*mc_max), &
23067  pbd(4*md_max), pbc(4*mc_max), pad(10*md_max), pac(10*mc_max), prim(10*4*mc_max*md_max), &
23068  scale
23069 
23070  INTEGER :: ma, mb, mc, md, p_index
23071  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
23072 
23073  kbd(1:4*md_max) = 0.0_dp
23074  kbc(1:4*mc_max) = 0.0_dp
23075  kad(1:10*md_max) = 0.0_dp
23076  kac(1:10*mc_max) = 0.0_dp
23077  p_index = 0
23078  DO md = 1, md_max
23079  DO mc = 1, mc_max
23080  DO mb = 1, 4
23081  ks_bd = 0.0_dp
23082  ks_bc = 0.0_dp
23083  p_bd = pbd((md - 1)*4 + mb)
23084  p_bc = pbc((mc - 1)*4 + mb)
23085  DO ma = 1, 10
23086  p_index = p_index + 1
23087  tmp = scale*prim(p_index)
23088  ks_bc = ks_bc + tmp*pad((md - 1)*10 + ma)
23089  ks_bd = ks_bd + tmp*pac((mc - 1)*10 + ma)
23090  kad((md - 1)*10 + ma) = kad((md - 1)*10 + ma) - tmp*p_bc
23091  kac((mc - 1)*10 + ma) = kac((mc - 1)*10 + ma) - tmp*p_bd
23092  END DO
23093  kbd((md - 1)*4 + mb) = kbd((md - 1)*4 + mb) - ks_bd
23094  kbc((mc - 1)*4 + mb) = kbc((mc - 1)*4 + mb) - ks_bc
23095  END DO
23096  END DO
23097  END DO
23098  END SUBROUTINE block_10_4
23099 ! **************************************************************************************************
23100 !> \brief ...
23101 !> \param mc_max ...
23102 !> \param md_max ...
23103 !> \param kbd ...
23104 !> \param kbc ...
23105 !> \param kad ...
23106 !> \param kac ...
23107 !> \param pbd ...
23108 !> \param pbc ...
23109 !> \param pad ...
23110 !> \param pac ...
23111 !> \param prim ...
23112 !> \param scale ...
23113 ! **************************************************************************************************
23114  SUBROUTINE block_10_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
23115  INTEGER :: mc_max, md_max
23116  REAL(kind=dp) :: kbd(5*md_max), kbc(5*mc_max), kad(10*md_max), kac(10*mc_max), &
23117  pbd(5*md_max), pbc(5*mc_max), pad(10*md_max), pac(10*mc_max), prim(10*5*mc_max*md_max), &
23118  scale
23119 
23120  INTEGER :: ma, mb, mc, md, p_index
23121  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
23122 
23123  kbd(1:5*md_max) = 0.0_dp
23124  kbc(1:5*mc_max) = 0.0_dp
23125  kad(1:10*md_max) = 0.0_dp
23126  kac(1:10*mc_max) = 0.0_dp
23127  p_index = 0
23128  DO md = 1, md_max
23129  DO mc = 1, mc_max
23130  DO mb = 1, 5
23131  ks_bd = 0.0_dp
23132  ks_bc = 0.0_dp
23133  p_bd = pbd((md - 1)*5 + mb)
23134  p_bc = pbc((mc - 1)*5 + mb)
23135  DO ma = 1, 10
23136  p_index = p_index + 1
23137  tmp = scale*prim(p_index)
23138  ks_bc = ks_bc + tmp*pad((md - 1)*10 + ma)
23139  ks_bd = ks_bd + tmp*pac((mc - 1)*10 + ma)
23140  kad((md - 1)*10 + ma) = kad((md - 1)*10 + ma) - tmp*p_bc
23141  kac((mc - 1)*10 + ma) = kac((mc - 1)*10 + ma) - tmp*p_bd
23142  END DO
23143  kbd((md - 1)*5 + mb) = kbd((md - 1)*5 + mb) - ks_bd
23144  kbc((mc - 1)*5 + mb) = kbc((mc - 1)*5 + mb) - ks_bc
23145  END DO
23146  END DO
23147  END DO
23148  END SUBROUTINE block_10_5
23149 ! **************************************************************************************************
23150 !> \brief ...
23151 !> \param mc_max ...
23152 !> \param md_max ...
23153 !> \param kbd ...
23154 !> \param kbc ...
23155 !> \param kad ...
23156 !> \param kac ...
23157 !> \param pbd ...
23158 !> \param pbc ...
23159 !> \param pad ...
23160 !> \param pac ...
23161 !> \param prim ...
23162 !> \param scale ...
23163 ! **************************************************************************************************
23164  SUBROUTINE block_10_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
23165  INTEGER :: mc_max, md_max
23166  REAL(kind=dp) :: kbd(6*md_max), kbc(6*mc_max), kad(10*md_max), kac(10*mc_max), &
23167  pbd(6*md_max), pbc(6*mc_max), pad(10*md_max), pac(10*mc_max), prim(10*6*mc_max*md_max), &
23168  scale
23169 
23170  INTEGER :: ma, mb, mc, md, p_index
23171  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
23172 
23173  kbd(1:6*md_max) = 0.0_dp
23174  kbc(1:6*mc_max) = 0.0_dp
23175  kad(1:10*md_max) = 0.0_dp
23176  kac(1:10*mc_max) = 0.0_dp
23177  p_index = 0
23178  DO md = 1, md_max
23179  DO mc = 1, mc_max
23180  DO mb = 1, 6
23181  ks_bd = 0.0_dp
23182  ks_bc = 0.0_dp
23183  p_bd = pbd((md - 1)*6 + mb)
23184  p_bc = pbc((mc - 1)*6 + mb)
23185  DO ma = 1, 10
23186  p_index = p_index + 1
23187  tmp = scale*prim(p_index)
23188  ks_bc = ks_bc + tmp*pad((md - 1)*10 + ma)
23189  ks_bd = ks_bd + tmp*pac((mc - 1)*10 + ma)
23190  kad((md - 1)*10 + ma) = kad((md - 1)*10 + ma) - tmp*p_bc
23191  kac((mc - 1)*10 + ma) = kac((mc - 1)*10 + ma) - tmp*p_bd
23192  END DO
23193  kbd((md - 1)*6 + mb) = kbd((md - 1)*6 + mb) - ks_bd
23194  kbc((mc - 1)*6 + mb) = kbc((mc - 1)*6 + mb) - ks_bc
23195  END DO
23196  END DO
23197  END DO
23198  END SUBROUTINE block_10_6
23199 ! **************************************************************************************************
23200 !> \brief ...
23201 !> \param mc_max ...
23202 !> \param md_max ...
23203 !> \param kbd ...
23204 !> \param kbc ...
23205 !> \param kad ...
23206 !> \param kac ...
23207 !> \param pbd ...
23208 !> \param pbc ...
23209 !> \param pad ...
23210 !> \param pac ...
23211 !> \param prim ...
23212 !> \param scale ...
23213 ! **************************************************************************************************
23214  SUBROUTINE block_10_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
23215  INTEGER :: mc_max, md_max
23216  REAL(kind=dp) :: kbd(7*md_max), kbc(7*mc_max), kad(10*md_max), kac(10*mc_max), &
23217  pbd(7*md_max), pbc(7*mc_max), pad(10*md_max), pac(10*mc_max), prim(10*7*mc_max*md_max), &
23218  scale
23219 
23220  INTEGER :: ma, mb, mc, md, p_index
23221  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
23222 
23223  kbd(1:7*md_max) = 0.0_dp
23224  kbc(1:7*mc_max) = 0.0_dp
23225  kad(1:10*md_max) = 0.0_dp
23226  kac(1:10*mc_max) = 0.0_dp
23227  p_index = 0
23228  DO md = 1, md_max
23229  DO mc = 1, mc_max
23230  DO mb = 1, 7
23231  ks_bd = 0.0_dp
23232  ks_bc = 0.0_dp
23233  p_bd = pbd((md - 1)*7 + mb)
23234  p_bc = pbc((mc - 1)*7 + mb)
23235  DO ma = 1, 10
23236  p_index = p_index + 1
23237  tmp = scale*prim(p_index)
23238  ks_bc = ks_bc + tmp*pad((md - 1)*10 + ma)
23239  ks_bd = ks_bd + tmp*pac((mc - 1)*10 + ma)
23240  kad((md - 1)*10 + ma) = kad((md - 1)*10 + ma) - tmp*p_bc
23241  kac((mc - 1)*10 + ma) = kac((mc - 1)*10 + ma) - tmp*p_bd
23242  END DO
23243  kbd((md - 1)*7 + mb) = kbd((md - 1)*7 + mb) - ks_bd
23244  kbc((mc - 1)*7 + mb) = kbc((mc - 1)*7 + mb) - ks_bc
23245  END DO
23246  END DO
23247  END DO
23248  END SUBROUTINE block_10_7
23249 ! **************************************************************************************************
23250 !> \brief ...
23251 !> \param mc_max ...
23252 !> \param md_max ...
23253 !> \param kbd ...
23254 !> \param kbc ...
23255 !> \param kad ...
23256 !> \param kac ...
23257 !> \param pbd ...
23258 !> \param pbc ...
23259 !> \param pad ...
23260 !> \param pac ...
23261 !> \param prim ...
23262 !> \param scale ...
23263 ! **************************************************************************************************
23264  SUBROUTINE block_10_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
23265  INTEGER :: mc_max, md_max
23266  REAL(kind=dp) :: kbd(9*md_max), kbc(9*mc_max), kad(10*md_max), kac(10*mc_max), &
23267  pbd(9*md_max), pbc(9*mc_max), pad(10*md_max), pac(10*mc_max), prim(10*9*mc_max*md_max), &
23268  scale
23269 
23270  INTEGER :: ma, mb, mc, md, p_index
23271  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
23272 
23273  kbd(1:9*md_max) = 0.0_dp
23274  kbc(1:9*mc_max) = 0.0_dp
23275  kad(1:10*md_max) = 0.0_dp
23276  kac(1:10*mc_max) = 0.0_dp
23277  p_index = 0
23278  DO md = 1, md_max
23279  DO mc = 1, mc_max
23280  DO mb = 1, 9
23281  ks_bd = 0.0_dp
23282  ks_bc = 0.0_dp
23283  p_bd = pbd((md - 1)*9 + mb)
23284  p_bc = pbc((mc - 1)*9 + mb)
23285  DO ma = 1, 10
23286  p_index = p_index + 1
23287  tmp = scale*prim(p_index)
23288  ks_bc = ks_bc + tmp*pad((md - 1)*10 + ma)
23289  ks_bd = ks_bd + tmp*pac((mc - 1)*10 + ma)
23290  kad((md - 1)*10 + ma) = kad((md - 1)*10 + ma) - tmp*p_bc
23291  kac((mc - 1)*10 + ma) = kac((mc - 1)*10 + ma) - tmp*p_bd
23292  END DO
23293  kbd((md - 1)*9 + mb) = kbd((md - 1)*9 + mb) - ks_bd
23294  kbc((mc - 1)*9 + mb) = kbc((mc - 1)*9 + mb) - ks_bc
23295  END DO
23296  END DO
23297  END DO
23298  END SUBROUTINE block_10_9
23299 ! **************************************************************************************************
23300 !> \brief ...
23301 !> \param mc_max ...
23302 !> \param md_max ...
23303 !> \param kbd ...
23304 !> \param kbc ...
23305 !> \param kad ...
23306 !> \param kac ...
23307 !> \param pbd ...
23308 !> \param pbc ...
23309 !> \param pad ...
23310 !> \param pac ...
23311 !> \param prim ...
23312 !> \param scale ...
23313 ! **************************************************************************************************
23314  SUBROUTINE block_10_10(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
23315  INTEGER :: mc_max, md_max
23316  REAL(kind=dp) :: kbd(10*md_max), kbc(10*mc_max), kad(10*md_max), kac(10*mc_max), &
23317  pbd(10*md_max), pbc(10*mc_max), pad(10*md_max), pac(10*mc_max), &
23318  prim(10*10*mc_max*md_max), scale
23319 
23320  INTEGER :: ma, mb, mc, md, p_index
23321  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
23322 
23323  kbd(1:10*md_max) = 0.0_dp
23324  kbc(1:10*mc_max) = 0.0_dp
23325  kad(1:10*md_max) = 0.0_dp
23326  kac(1:10*mc_max) = 0.0_dp
23327  p_index = 0
23328  DO md = 1, md_max
23329  DO mc = 1, mc_max
23330  DO mb = 1, 10
23331  ks_bd = 0.0_dp
23332  ks_bc = 0.0_dp
23333  p_bd = pbd((md - 1)*10 + mb)
23334  p_bc = pbc((mc - 1)*10 + mb)
23335  DO ma = 1, 10
23336  p_index = p_index + 1
23337  tmp = scale*prim(p_index)
23338  ks_bc = ks_bc + tmp*pad((md - 1)*10 + ma)
23339  ks_bd = ks_bd + tmp*pac((mc - 1)*10 + ma)
23340  kad((md - 1)*10 + ma) = kad((md - 1)*10 + ma) - tmp*p_bc
23341  kac((mc - 1)*10 + ma) = kac((mc - 1)*10 + ma) - tmp*p_bd
23342  END DO
23343  kbd((md - 1)*10 + mb) = kbd((md - 1)*10 + mb) - ks_bd
23344  kbc((mc - 1)*10 + mb) = kbc((mc - 1)*10 + mb) - ks_bc
23345  END DO
23346  END DO
23347  END DO
23348  END SUBROUTINE block_10_10
23349 ! **************************************************************************************************
23350 !> \brief ...
23351 !> \param mc_max ...
23352 !> \param md_max ...
23353 !> \param kbd ...
23354 !> \param kbc ...
23355 !> \param kad ...
23356 !> \param kac ...
23357 !> \param pbd ...
23358 !> \param pbc ...
23359 !> \param pad ...
23360 !> \param pac ...
23361 !> \param prim ...
23362 !> \param scale ...
23363 ! **************************************************************************************************
23364  SUBROUTINE block_10_11(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
23365  INTEGER :: mc_max, md_max
23366  REAL(kind=dp) :: kbd(11*md_max), kbc(11*mc_max), kad(10*md_max), kac(10*mc_max), &
23367  pbd(11*md_max), pbc(11*mc_max), pad(10*md_max), pac(10*mc_max), &
23368  prim(10*11*mc_max*md_max), scale
23369 
23370  INTEGER :: ma, mb, mc, md, p_index
23371  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
23372 
23373  kbd(1:11*md_max) = 0.0_dp
23374  kbc(1:11*mc_max) = 0.0_dp
23375  kad(1:10*md_max) = 0.0_dp
23376  kac(1:10*mc_max) = 0.0_dp
23377  p_index = 0
23378  DO md = 1, md_max
23379  DO mc = 1, mc_max
23380  DO mb = 1, 11
23381  ks_bd = 0.0_dp
23382  ks_bc = 0.0_dp
23383  p_bd = pbd((md - 1)*11 + mb)
23384  p_bc = pbc((mc - 1)*11 + mb)
23385  DO ma = 1, 10
23386  p_index = p_index + 1
23387  tmp = scale*prim(p_index)
23388  ks_bc = ks_bc + tmp*pad((md - 1)*10 + ma)
23389  ks_bd = ks_bd + tmp*pac((mc - 1)*10 + ma)
23390  kad((md - 1)*10 + ma) = kad((md - 1)*10 + ma) - tmp*p_bc
23391  kac((mc - 1)*10 + ma) = kac((mc - 1)*10 + ma) - tmp*p_bd
23392  END DO
23393  kbd((md - 1)*11 + mb) = kbd((md - 1)*11 + mb) - ks_bd
23394  kbc((mc - 1)*11 + mb) = kbc((mc - 1)*11 + mb) - ks_bc
23395  END DO
23396  END DO
23397  END DO
23398  END SUBROUTINE block_10_11
23399 ! **************************************************************************************************
23400 !> \brief ...
23401 !> \param mc_max ...
23402 !> \param md_max ...
23403 !> \param kbd ...
23404 !> \param kbc ...
23405 !> \param kad ...
23406 !> \param kac ...
23407 !> \param pbd ...
23408 !> \param pbc ...
23409 !> \param pad ...
23410 !> \param pac ...
23411 !> \param prim ...
23412 !> \param scale ...
23413 ! **************************************************************************************************
23414  SUBROUTINE block_10_15(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
23415  INTEGER :: mc_max, md_max
23416  REAL(kind=dp) :: kbd(15*md_max), kbc(15*mc_max), kad(10*md_max), kac(10*mc_max), &
23417  pbd(15*md_max), pbc(15*mc_max), pad(10*md_max), pac(10*mc_max), &
23418  prim(10*15*mc_max*md_max), scale
23419 
23420  INTEGER :: ma, mb, mc, md, p_index
23421  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
23422 
23423  kbd(1:15*md_max) = 0.0_dp
23424  kbc(1:15*mc_max) = 0.0_dp
23425  kad(1:10*md_max) = 0.0_dp
23426  kac(1:10*mc_max) = 0.0_dp
23427  p_index = 0
23428  DO md = 1, md_max
23429  DO mc = 1, mc_max
23430  DO mb = 1, 15
23431  ks_bd = 0.0_dp
23432  ks_bc = 0.0_dp
23433  p_bd = pbd((md - 1)*15 + mb)
23434  p_bc = pbc((mc - 1)*15 + mb)
23435  DO ma = 1, 10
23436  p_index = p_index + 1
23437  tmp = scale*prim(p_index)
23438  ks_bc = ks_bc + tmp*pad((md - 1)*10 + ma)
23439  ks_bd = ks_bd + tmp*pac((mc - 1)*10 + ma)
23440  kad((md - 1)*10 + ma) = kad((md - 1)*10 + ma) - tmp*p_bc
23441  kac((mc - 1)*10 + ma) = kac((mc - 1)*10 + ma) - tmp*p_bd
23442  END DO
23443  kbd((md - 1)*15 + mb) = kbd((md - 1)*15 + mb) - ks_bd
23444  kbc((mc - 1)*15 + mb) = kbc((mc - 1)*15 + mb) - ks_bc
23445  END DO
23446  END DO
23447  END DO
23448  END SUBROUTINE block_10_15
23449 ! **************************************************************************************************
23450 !> \brief ...
23451 !> \param kbd ...
23452 !> \param kbc ...
23453 !> \param kad ...
23454 !> \param kac ...
23455 !> \param pbd ...
23456 !> \param pbc ...
23457 !> \param pad ...
23458 !> \param pac ...
23459 !> \param prim ...
23460 !> \param scale ...
23461 ! **************************************************************************************************
23462  SUBROUTINE block_11_1_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
23463  REAL(kind=dp) :: kbd(1*1), kbc(1*1), kad(11*1), &
23464  kac(11*1), pbd(1*1), pbc(1*1), &
23465  pad(11*1), pac(11*1), prim(11*1*1*1), &
23466  scale
23467 
23468  INTEGER :: ma, mb, mc, md, p_index
23469  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
23470 
23471  kbd(1:1*1) = 0.0_dp
23472  kbc(1:1*1) = 0.0_dp
23473  kad(1:11*1) = 0.0_dp
23474  kac(1:11*1) = 0.0_dp
23475  p_index = 0
23476  DO md = 1, 1
23477  DO mc = 1, 1
23478  DO mb = 1, 1
23479  ks_bd = 0.0_dp
23480  ks_bc = 0.0_dp
23481  p_bd = pbd((md - 1)*1 + mb)
23482  p_bc = pbc((mc - 1)*1 + mb)
23483  DO ma = 1, 11
23484  p_index = p_index + 1
23485  tmp = scale*prim(p_index)
23486  ks_bc = ks_bc + tmp*pad((md - 1)*11 + ma)
23487  ks_bd = ks_bd + tmp*pac((mc - 1)*11 + ma)
23488  kad((md - 1)*11 + ma) = kad((md - 1)*11 + ma) - tmp*p_bc
23489  kac((mc - 1)*11 + ma) = kac((mc - 1)*11 + ma) - tmp*p_bd
23490  END DO
23491  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
23492  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
23493  END DO
23494  END DO
23495  END DO
23496  END SUBROUTINE block_11_1_1_1
23497 ! **************************************************************************************************
23498 !> \brief ...
23499 !> \param md_max ...
23500 !> \param kbd ...
23501 !> \param kbc ...
23502 !> \param kad ...
23503 !> \param kac ...
23504 !> \param pbd ...
23505 !> \param pbc ...
23506 !> \param pad ...
23507 !> \param pac ...
23508 !> \param prim ...
23509 !> \param scale ...
23510 ! **************************************************************************************************
23511  SUBROUTINE block_11_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
23512  INTEGER :: md_max
23513  REAL(kind=dp) :: kbd(1*md_max), kbc(1*1), kad(11*md_max), kac(11*1), pbd(1*md_max), &
23514  pbc(1*1), pad(11*md_max), pac(11*1), prim(11*1*1*md_max), scale
23515 
23516  INTEGER :: ma, mb, mc, md, p_index
23517  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
23518 
23519  kbd(1:1*md_max) = 0.0_dp
23520  kbc(1:1*1) = 0.0_dp
23521  kad(1:11*md_max) = 0.0_dp
23522  kac(1:11*1) = 0.0_dp
23523  p_index = 0
23524  DO md = 1, md_max
23525  DO mc = 1, 1
23526  DO mb = 1, 1
23527  ks_bd = 0.0_dp
23528  ks_bc = 0.0_dp
23529  p_bd = pbd((md - 1)*1 + mb)
23530  p_bc = pbc((mc - 1)*1 + mb)
23531  DO ma = 1, 11
23532  p_index = p_index + 1
23533  tmp = scale*prim(p_index)
23534  ks_bc = ks_bc + tmp*pad((md - 1)*11 + ma)
23535  ks_bd = ks_bd + tmp*pac((mc - 1)*11 + ma)
23536  kad((md - 1)*11 + ma) = kad((md - 1)*11 + ma) - tmp*p_bc
23537  kac((mc - 1)*11 + ma) = kac((mc - 1)*11 + ma) - tmp*p_bd
23538  END DO
23539  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
23540  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
23541  END DO
23542  END DO
23543  END DO
23544  END SUBROUTINE block_11_1_1
23545 ! **************************************************************************************************
23546 !> \brief ...
23547 !> \param mc_max ...
23548 !> \param md_max ...
23549 !> \param kbd ...
23550 !> \param kbc ...
23551 !> \param kad ...
23552 !> \param kac ...
23553 !> \param pbd ...
23554 !> \param pbc ...
23555 !> \param pad ...
23556 !> \param pac ...
23557 !> \param prim ...
23558 !> \param scale ...
23559 ! **************************************************************************************************
23560  SUBROUTINE block_11_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
23561  INTEGER :: mc_max, md_max
23562  REAL(kind=dp) :: kbd(1*md_max), kbc(1*mc_max), kad(11*md_max), kac(11*mc_max), &
23563  pbd(1*md_max), pbc(1*mc_max), pad(11*md_max), pac(11*mc_max), prim(11*1*mc_max*md_max), &
23564  scale
23565 
23566  INTEGER :: ma, mb, mc, md, p_index
23567  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
23568 
23569  kbd(1:1*md_max) = 0.0_dp
23570  kbc(1:1*mc_max) = 0.0_dp
23571  kad(1:11*md_max) = 0.0_dp
23572  kac(1:11*mc_max) = 0.0_dp
23573  p_index = 0
23574  DO md = 1, md_max
23575  DO mc = 1, mc_max
23576  DO mb = 1, 1
23577  ks_bd = 0.0_dp
23578  ks_bc = 0.0_dp
23579  p_bd = pbd((md - 1)*1 + mb)
23580  p_bc = pbc((mc - 1)*1 + mb)
23581  DO ma = 1, 11
23582  p_index = p_index + 1
23583  tmp = scale*prim(p_index)
23584  ks_bc = ks_bc + tmp*pad((md - 1)*11 + ma)
23585  ks_bd = ks_bd + tmp*pac((mc - 1)*11 + ma)
23586  kad((md - 1)*11 + ma) = kad((md - 1)*11 + ma) - tmp*p_bc
23587  kac((mc - 1)*11 + ma) = kac((mc - 1)*11 + ma) - tmp*p_bd
23588  END DO
23589  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
23590  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
23591  END DO
23592  END DO
23593  END DO
23594  END SUBROUTINE block_11_1
23595 ! **************************************************************************************************
23596 !> \brief ...
23597 !> \param mc_max ...
23598 !> \param md_max ...
23599 !> \param kbd ...
23600 !> \param kbc ...
23601 !> \param kad ...
23602 !> \param kac ...
23603 !> \param pbd ...
23604 !> \param pbc ...
23605 !> \param pad ...
23606 !> \param pac ...
23607 !> \param prim ...
23608 !> \param scale ...
23609 ! **************************************************************************************************
23610  SUBROUTINE block_11_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
23611  INTEGER :: mc_max, md_max
23612  REAL(kind=dp) :: kbd(2*md_max), kbc(2*mc_max), kad(11*md_max), kac(11*mc_max), &
23613  pbd(2*md_max), pbc(2*mc_max), pad(11*md_max), pac(11*mc_max), prim(11*2*mc_max*md_max), &
23614  scale
23615 
23616  INTEGER :: ma, mb, mc, md, p_index
23617  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
23618 
23619  kbd(1:2*md_max) = 0.0_dp
23620  kbc(1:2*mc_max) = 0.0_dp
23621  kad(1:11*md_max) = 0.0_dp
23622  kac(1:11*mc_max) = 0.0_dp
23623  p_index = 0
23624  DO md = 1, md_max
23625  DO mc = 1, mc_max
23626  DO mb = 1, 2
23627  ks_bd = 0.0_dp
23628  ks_bc = 0.0_dp
23629  p_bd = pbd((md - 1)*2 + mb)
23630  p_bc = pbc((mc - 1)*2 + mb)
23631  DO ma = 1, 11
23632  p_index = p_index + 1
23633  tmp = scale*prim(p_index)
23634  ks_bc = ks_bc + tmp*pad((md - 1)*11 + ma)
23635  ks_bd = ks_bd + tmp*pac((mc - 1)*11 + ma)
23636  kad((md - 1)*11 + ma) = kad((md - 1)*11 + ma) - tmp*p_bc
23637  kac((mc - 1)*11 + ma) = kac((mc - 1)*11 + ma) - tmp*p_bd
23638  END DO
23639  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
23640  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
23641  END DO
23642  END DO
23643  END DO
23644  END SUBROUTINE block_11_2
23645 ! **************************************************************************************************
23646 !> \brief ...
23647 !> \param mc_max ...
23648 !> \param md_max ...
23649 !> \param kbd ...
23650 !> \param kbc ...
23651 !> \param kad ...
23652 !> \param kac ...
23653 !> \param pbd ...
23654 !> \param pbc ...
23655 !> \param pad ...
23656 !> \param pac ...
23657 !> \param prim ...
23658 !> \param scale ...
23659 ! **************************************************************************************************
23660  SUBROUTINE block_11_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
23661  INTEGER :: mc_max, md_max
23662  REAL(kind=dp) :: kbd(3*md_max), kbc(3*mc_max), kad(11*md_max), kac(11*mc_max), &
23663  pbd(3*md_max), pbc(3*mc_max), pad(11*md_max), pac(11*mc_max), prim(11*3*mc_max*md_max), &
23664  scale
23665 
23666  INTEGER :: ma, mb, mc, md, p_index
23667  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
23668 
23669  kbd(1:3*md_max) = 0.0_dp
23670  kbc(1:3*mc_max) = 0.0_dp
23671  kad(1:11*md_max) = 0.0_dp
23672  kac(1:11*mc_max) = 0.0_dp
23673  p_index = 0
23674  DO md = 1, md_max
23675  DO mc = 1, mc_max
23676  DO mb = 1, 3
23677  ks_bd = 0.0_dp
23678  ks_bc = 0.0_dp
23679  p_bd = pbd((md - 1)*3 + mb)
23680  p_bc = pbc((mc - 1)*3 + mb)
23681  DO ma = 1, 11
23682  p_index = p_index + 1
23683  tmp = scale*prim(p_index)
23684  ks_bc = ks_bc + tmp*pad((md - 1)*11 + ma)
23685  ks_bd = ks_bd + tmp*pac((mc - 1)*11 + ma)
23686  kad((md - 1)*11 + ma) = kad((md - 1)*11 + ma) - tmp*p_bc
23687  kac((mc - 1)*11 + ma) = kac((mc - 1)*11 + ma) - tmp*p_bd
23688  END DO
23689  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
23690  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
23691  END DO
23692  END DO
23693  END DO
23694  END SUBROUTINE block_11_3
23695 ! **************************************************************************************************
23696 !> \brief ...
23697 !> \param mc_max ...
23698 !> \param md_max ...
23699 !> \param kbd ...
23700 !> \param kbc ...
23701 !> \param kad ...
23702 !> \param kac ...
23703 !> \param pbd ...
23704 !> \param pbc ...
23705 !> \param pad ...
23706 !> \param pac ...
23707 !> \param prim ...
23708 !> \param scale ...
23709 ! **************************************************************************************************
23710  SUBROUTINE block_11_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
23711  INTEGER :: mc_max, md_max
23712  REAL(kind=dp) :: kbd(4*md_max), kbc(4*mc_max), kad(11*md_max), kac(11*mc_max), &
23713  pbd(4*md_max), pbc(4*mc_max), pad(11*md_max), pac(11*mc_max), prim(11*4*mc_max*md_max), &
23714  scale
23715 
23716  INTEGER :: ma, mb, mc, md, p_index
23717  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
23718 
23719  kbd(1:4*md_max) = 0.0_dp
23720  kbc(1:4*mc_max) = 0.0_dp
23721  kad(1:11*md_max) = 0.0_dp
23722  kac(1:11*mc_max) = 0.0_dp
23723  p_index = 0
23724  DO md = 1, md_max
23725  DO mc = 1, mc_max
23726  DO mb = 1, 4
23727  ks_bd = 0.0_dp
23728  ks_bc = 0.0_dp
23729  p_bd = pbd((md - 1)*4 + mb)
23730  p_bc = pbc((mc - 1)*4 + mb)
23731  DO ma = 1, 11
23732  p_index = p_index + 1
23733  tmp = scale*prim(p_index)
23734  ks_bc = ks_bc + tmp*pad((md - 1)*11 + ma)
23735  ks_bd = ks_bd + tmp*pac((mc - 1)*11 + ma)
23736  kad((md - 1)*11 + ma) = kad((md - 1)*11 + ma) - tmp*p_bc
23737  kac((mc - 1)*11 + ma) = kac((mc - 1)*11 + ma) - tmp*p_bd
23738  END DO
23739  kbd((md - 1)*4 + mb) = kbd((md - 1)*4 + mb) - ks_bd
23740  kbc((mc - 1)*4 + mb) = kbc((mc - 1)*4 + mb) - ks_bc
23741  END DO
23742  END DO
23743  END DO
23744  END SUBROUTINE block_11_4
23745 ! **************************************************************************************************
23746 !> \brief ...
23747 !> \param mc_max ...
23748 !> \param md_max ...
23749 !> \param kbd ...
23750 !> \param kbc ...
23751 !> \param kad ...
23752 !> \param kac ...
23753 !> \param pbd ...
23754 !> \param pbc ...
23755 !> \param pad ...
23756 !> \param pac ...
23757 !> \param prim ...
23758 !> \param scale ...
23759 ! **************************************************************************************************
23760  SUBROUTINE block_11_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
23761  INTEGER :: mc_max, md_max
23762  REAL(kind=dp) :: kbd(5*md_max), kbc(5*mc_max), kad(11*md_max), kac(11*mc_max), &
23763  pbd(5*md_max), pbc(5*mc_max), pad(11*md_max), pac(11*mc_max), prim(11*5*mc_max*md_max), &
23764  scale
23765 
23766  INTEGER :: ma, mb, mc, md, p_index
23767  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
23768 
23769  kbd(1:5*md_max) = 0.0_dp
23770  kbc(1:5*mc_max) = 0.0_dp
23771  kad(1:11*md_max) = 0.0_dp
23772  kac(1:11*mc_max) = 0.0_dp
23773  p_index = 0
23774  DO md = 1, md_max
23775  DO mc = 1, mc_max
23776  DO mb = 1, 5
23777  ks_bd = 0.0_dp
23778  ks_bc = 0.0_dp
23779  p_bd = pbd((md - 1)*5 + mb)
23780  p_bc = pbc((mc - 1)*5 + mb)
23781  DO ma = 1, 11
23782  p_index = p_index + 1
23783  tmp = scale*prim(p_index)
23784  ks_bc = ks_bc + tmp*pad((md - 1)*11 + ma)
23785  ks_bd = ks_bd + tmp*pac((mc - 1)*11 + ma)
23786  kad((md - 1)*11 + ma) = kad((md - 1)*11 + ma) - tmp*p_bc
23787  kac((mc - 1)*11 + ma) = kac((mc - 1)*11 + ma) - tmp*p_bd
23788  END DO
23789  kbd((md - 1)*5 + mb) = kbd((md - 1)*5 + mb) - ks_bd
23790  kbc((mc - 1)*5 + mb) = kbc((mc - 1)*5 + mb) - ks_bc
23791  END DO
23792  END DO
23793  END DO
23794  END SUBROUTINE block_11_5
23795 ! **************************************************************************************************
23796 !> \brief ...
23797 !> \param mc_max ...
23798 !> \param md_max ...
23799 !> \param kbd ...
23800 !> \param kbc ...
23801 !> \param kad ...
23802 !> \param kac ...
23803 !> \param pbd ...
23804 !> \param pbc ...
23805 !> \param pad ...
23806 !> \param pac ...
23807 !> \param prim ...
23808 !> \param scale ...
23809 ! **************************************************************************************************
23810  SUBROUTINE block_11_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
23811  INTEGER :: mc_max, md_max
23812  REAL(kind=dp) :: kbd(6*md_max), kbc(6*mc_max), kad(11*md_max), kac(11*mc_max), &
23813  pbd(6*md_max), pbc(6*mc_max), pad(11*md_max), pac(11*mc_max), prim(11*6*mc_max*md_max), &
23814  scale
23815 
23816  INTEGER :: ma, mb, mc, md, p_index
23817  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
23818 
23819  kbd(1:6*md_max) = 0.0_dp
23820  kbc(1:6*mc_max) = 0.0_dp
23821  kad(1:11*md_max) = 0.0_dp
23822  kac(1:11*mc_max) = 0.0_dp
23823  p_index = 0
23824  DO md = 1, md_max
23825  DO mc = 1, mc_max
23826  DO mb = 1, 6
23827  ks_bd = 0.0_dp
23828  ks_bc = 0.0_dp
23829  p_bd = pbd((md - 1)*6 + mb)
23830  p_bc = pbc((mc - 1)*6 + mb)
23831  DO ma = 1, 11
23832  p_index = p_index + 1
23833  tmp = scale*prim(p_index)
23834  ks_bc = ks_bc + tmp*pad((md - 1)*11 + ma)
23835  ks_bd = ks_bd + tmp*pac((mc - 1)*11 + ma)
23836  kad((md - 1)*11 + ma) = kad((md - 1)*11 + ma) - tmp*p_bc
23837  kac((mc - 1)*11 + ma) = kac((mc - 1)*11 + ma) - tmp*p_bd
23838  END DO
23839  kbd((md - 1)*6 + mb) = kbd((md - 1)*6 + mb) - ks_bd
23840  kbc((mc - 1)*6 + mb) = kbc((mc - 1)*6 + mb) - ks_bc
23841  END DO
23842  END DO
23843  END DO
23844  END SUBROUTINE block_11_6
23845 ! **************************************************************************************************
23846 !> \brief ...
23847 !> \param mc_max ...
23848 !> \param md_max ...
23849 !> \param kbd ...
23850 !> \param kbc ...
23851 !> \param kad ...
23852 !> \param kac ...
23853 !> \param pbd ...
23854 !> \param pbc ...
23855 !> \param pad ...
23856 !> \param pac ...
23857 !> \param prim ...
23858 !> \param scale ...
23859 ! **************************************************************************************************
23860  SUBROUTINE block_11_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
23861  INTEGER :: mc_max, md_max
23862  REAL(kind=dp) :: kbd(7*md_max), kbc(7*mc_max), kad(11*md_max), kac(11*mc_max), &
23863  pbd(7*md_max), pbc(7*mc_max), pad(11*md_max), pac(11*mc_max), prim(11*7*mc_max*md_max), &
23864  scale
23865 
23866  INTEGER :: ma, mb, mc, md, p_index
23867  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
23868 
23869  kbd(1:7*md_max) = 0.0_dp
23870  kbc(1:7*mc_max) = 0.0_dp
23871  kad(1:11*md_max) = 0.0_dp
23872  kac(1:11*mc_max) = 0.0_dp
23873  p_index = 0
23874  DO md = 1, md_max
23875  DO mc = 1, mc_max
23876  DO mb = 1, 7
23877  ks_bd = 0.0_dp
23878  ks_bc = 0.0_dp
23879  p_bd = pbd((md - 1)*7 + mb)
23880  p_bc = pbc((mc - 1)*7 + mb)
23881  DO ma = 1, 11
23882  p_index = p_index + 1
23883  tmp = scale*prim(p_index)
23884  ks_bc = ks_bc + tmp*pad((md - 1)*11 + ma)
23885  ks_bd = ks_bd + tmp*pac((mc - 1)*11 + ma)
23886  kad((md - 1)*11 + ma) = kad((md - 1)*11 + ma) - tmp*p_bc
23887  kac((mc - 1)*11 + ma) = kac((mc - 1)*11 + ma) - tmp*p_bd
23888  END DO
23889  kbd((md - 1)*7 + mb) = kbd((md - 1)*7 + mb) - ks_bd
23890  kbc((mc - 1)*7 + mb) = kbc((mc - 1)*7 + mb) - ks_bc
23891  END DO
23892  END DO
23893  END DO
23894  END SUBROUTINE block_11_7
23895 ! **************************************************************************************************
23896 !> \brief ...
23897 !> \param mc_max ...
23898 !> \param md_max ...
23899 !> \param kbd ...
23900 !> \param kbc ...
23901 !> \param kad ...
23902 !> \param kac ...
23903 !> \param pbd ...
23904 !> \param pbc ...
23905 !> \param pad ...
23906 !> \param pac ...
23907 !> \param prim ...
23908 !> \param scale ...
23909 ! **************************************************************************************************
23910  SUBROUTINE block_11_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
23911  INTEGER :: mc_max, md_max
23912  REAL(kind=dp) :: kbd(9*md_max), kbc(9*mc_max), kad(11*md_max), kac(11*mc_max), &
23913  pbd(9*md_max), pbc(9*mc_max), pad(11*md_max), pac(11*mc_max), prim(11*9*mc_max*md_max), &
23914  scale
23915 
23916  INTEGER :: ma, mb, mc, md, p_index
23917  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
23918 
23919  kbd(1:9*md_max) = 0.0_dp
23920  kbc(1:9*mc_max) = 0.0_dp
23921  kad(1:11*md_max) = 0.0_dp
23922  kac(1:11*mc_max) = 0.0_dp
23923  p_index = 0
23924  DO md = 1, md_max
23925  DO mc = 1, mc_max
23926  DO mb = 1, 9
23927  ks_bd = 0.0_dp
23928  ks_bc = 0.0_dp
23929  p_bd = pbd((md - 1)*9 + mb)
23930  p_bc = pbc((mc - 1)*9 + mb)
23931  DO ma = 1, 11
23932  p_index = p_index + 1
23933  tmp = scale*prim(p_index)
23934  ks_bc = ks_bc + tmp*pad((md - 1)*11 + ma)
23935  ks_bd = ks_bd + tmp*pac((mc - 1)*11 + ma)
23936  kad((md - 1)*11 + ma) = kad((md - 1)*11 + ma) - tmp*p_bc
23937  kac((mc - 1)*11 + ma) = kac((mc - 1)*11 + ma) - tmp*p_bd
23938  END DO
23939  kbd((md - 1)*9 + mb) = kbd((md - 1)*9 + mb) - ks_bd
23940  kbc((mc - 1)*9 + mb) = kbc((mc - 1)*9 + mb) - ks_bc
23941  END DO
23942  END DO
23943  END DO
23944  END SUBROUTINE block_11_9
23945 ! **************************************************************************************************
23946 !> \brief ...
23947 !> \param mc_max ...
23948 !> \param md_max ...
23949 !> \param kbd ...
23950 !> \param kbc ...
23951 !> \param kad ...
23952 !> \param kac ...
23953 !> \param pbd ...
23954 !> \param pbc ...
23955 !> \param pad ...
23956 !> \param pac ...
23957 !> \param prim ...
23958 !> \param scale ...
23959 ! **************************************************************************************************
23960  SUBROUTINE block_11_10(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
23961  INTEGER :: mc_max, md_max
23962  REAL(kind=dp) :: kbd(10*md_max), kbc(10*mc_max), kad(11*md_max), kac(11*mc_max), &
23963  pbd(10*md_max), pbc(10*mc_max), pad(11*md_max), pac(11*mc_max), &
23964  prim(11*10*mc_max*md_max), scale
23965 
23966  INTEGER :: ma, mb, mc, md, p_index
23967  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
23968 
23969  kbd(1:10*md_max) = 0.0_dp
23970  kbc(1:10*mc_max) = 0.0_dp
23971  kad(1:11*md_max) = 0.0_dp
23972  kac(1:11*mc_max) = 0.0_dp
23973  p_index = 0
23974  DO md = 1, md_max
23975  DO mc = 1, mc_max
23976  DO mb = 1, 10
23977  ks_bd = 0.0_dp
23978  ks_bc = 0.0_dp
23979  p_bd = pbd((md - 1)*10 + mb)
23980  p_bc = pbc((mc - 1)*10 + mb)
23981  DO ma = 1, 11
23982  p_index = p_index + 1
23983  tmp = scale*prim(p_index)
23984  ks_bc = ks_bc + tmp*pad((md - 1)*11 + ma)
23985  ks_bd = ks_bd + tmp*pac((mc - 1)*11 + ma)
23986  kad((md - 1)*11 + ma) = kad((md - 1)*11 + ma) - tmp*p_bc
23987  kac((mc - 1)*11 + ma) = kac((mc - 1)*11 + ma) - tmp*p_bd
23988  END DO
23989  kbd((md - 1)*10 + mb) = kbd((md - 1)*10 + mb) - ks_bd
23990  kbc((mc - 1)*10 + mb) = kbc((mc - 1)*10 + mb) - ks_bc
23991  END DO
23992  END DO
23993  END DO
23994  END SUBROUTINE block_11_10
23995 ! **************************************************************************************************
23996 !> \brief ...
23997 !> \param mc_max ...
23998 !> \param md_max ...
23999 !> \param kbd ...
24000 !> \param kbc ...
24001 !> \param kad ...
24002 !> \param kac ...
24003 !> \param pbd ...
24004 !> \param pbc ...
24005 !> \param pad ...
24006 !> \param pac ...
24007 !> \param prim ...
24008 !> \param scale ...
24009 ! **************************************************************************************************
24010  SUBROUTINE block_11_11(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
24011  INTEGER :: mc_max, md_max
24012  REAL(kind=dp) :: kbd(11*md_max), kbc(11*mc_max), kad(11*md_max), kac(11*mc_max), &
24013  pbd(11*md_max), pbc(11*mc_max), pad(11*md_max), pac(11*mc_max), &
24014  prim(11*11*mc_max*md_max), scale
24015 
24016  INTEGER :: ma, mb, mc, md, p_index
24017  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
24018 
24019  kbd(1:11*md_max) = 0.0_dp
24020  kbc(1:11*mc_max) = 0.0_dp
24021  kad(1:11*md_max) = 0.0_dp
24022  kac(1:11*mc_max) = 0.0_dp
24023  p_index = 0
24024  DO md = 1, md_max
24025  DO mc = 1, mc_max
24026  DO mb = 1, 11
24027  ks_bd = 0.0_dp
24028  ks_bc = 0.0_dp
24029  p_bd = pbd((md - 1)*11 + mb)
24030  p_bc = pbc((mc - 1)*11 + mb)
24031  DO ma = 1, 11
24032  p_index = p_index + 1
24033  tmp = scale*prim(p_index)
24034  ks_bc = ks_bc + tmp*pad((md - 1)*11 + ma)
24035  ks_bd = ks_bd + tmp*pac((mc - 1)*11 + ma)
24036  kad((md - 1)*11 + ma) = kad((md - 1)*11 + ma) - tmp*p_bc
24037  kac((mc - 1)*11 + ma) = kac((mc - 1)*11 + ma) - tmp*p_bd
24038  END DO
24039  kbd((md - 1)*11 + mb) = kbd((md - 1)*11 + mb) - ks_bd
24040  kbc((mc - 1)*11 + mb) = kbc((mc - 1)*11 + mb) - ks_bc
24041  END DO
24042  END DO
24043  END DO
24044  END SUBROUTINE block_11_11
24045 ! **************************************************************************************************
24046 !> \brief ...
24047 !> \param mc_max ...
24048 !> \param md_max ...
24049 !> \param kbd ...
24050 !> \param kbc ...
24051 !> \param kad ...
24052 !> \param kac ...
24053 !> \param pbd ...
24054 !> \param pbc ...
24055 !> \param pad ...
24056 !> \param pac ...
24057 !> \param prim ...
24058 !> \param scale ...
24059 ! **************************************************************************************************
24060  SUBROUTINE block_11_15(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
24061  INTEGER :: mc_max, md_max
24062  REAL(kind=dp) :: kbd(15*md_max), kbc(15*mc_max), kad(11*md_max), kac(11*mc_max), &
24063  pbd(15*md_max), pbc(15*mc_max), pad(11*md_max), pac(11*mc_max), &
24064  prim(11*15*mc_max*md_max), scale
24065 
24066  INTEGER :: ma, mb, mc, md, p_index
24067  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
24068 
24069  kbd(1:15*md_max) = 0.0_dp
24070  kbc(1:15*mc_max) = 0.0_dp
24071  kad(1:11*md_max) = 0.0_dp
24072  kac(1:11*mc_max) = 0.0_dp
24073  p_index = 0
24074  DO md = 1, md_max
24075  DO mc = 1, mc_max
24076  DO mb = 1, 15
24077  ks_bd = 0.0_dp
24078  ks_bc = 0.0_dp
24079  p_bd = pbd((md - 1)*15 + mb)
24080  p_bc = pbc((mc - 1)*15 + mb)
24081  DO ma = 1, 11
24082  p_index = p_index + 1
24083  tmp = scale*prim(p_index)
24084  ks_bc = ks_bc + tmp*pad((md - 1)*11 + ma)
24085  ks_bd = ks_bd + tmp*pac((mc - 1)*11 + ma)
24086  kad((md - 1)*11 + ma) = kad((md - 1)*11 + ma) - tmp*p_bc
24087  kac((mc - 1)*11 + ma) = kac((mc - 1)*11 + ma) - tmp*p_bd
24088  END DO
24089  kbd((md - 1)*15 + mb) = kbd((md - 1)*15 + mb) - ks_bd
24090  kbc((mc - 1)*15 + mb) = kbc((mc - 1)*15 + mb) - ks_bc
24091  END DO
24092  END DO
24093  END DO
24094  END SUBROUTINE block_11_15
24095 ! **************************************************************************************************
24096 !> \brief ...
24097 !> \param kbd ...
24098 !> \param kbc ...
24099 !> \param kad ...
24100 !> \param kac ...
24101 !> \param pbd ...
24102 !> \param pbc ...
24103 !> \param pad ...
24104 !> \param pac ...
24105 !> \param prim ...
24106 !> \param scale ...
24107 ! **************************************************************************************************
24108  SUBROUTINE block_15_1_1_1(kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
24109  REAL(kind=dp) :: kbd(1*1), kbc(1*1), kad(15*1), &
24110  kac(15*1), pbd(1*1), pbc(1*1), &
24111  pad(15*1), pac(15*1), prim(15*1*1*1), &
24112  scale
24113 
24114  INTEGER :: ma, mb, mc, md, p_index
24115  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
24116 
24117  kbd(1:1*1) = 0.0_dp
24118  kbc(1:1*1) = 0.0_dp
24119  kad(1:15*1) = 0.0_dp
24120  kac(1:15*1) = 0.0_dp
24121  p_index = 0
24122  DO md = 1, 1
24123  DO mc = 1, 1
24124  DO mb = 1, 1
24125  ks_bd = 0.0_dp
24126  ks_bc = 0.0_dp
24127  p_bd = pbd((md - 1)*1 + mb)
24128  p_bc = pbc((mc - 1)*1 + mb)
24129  DO ma = 1, 15
24130  p_index = p_index + 1
24131  tmp = scale*prim(p_index)
24132  ks_bc = ks_bc + tmp*pad((md - 1)*15 + ma)
24133  ks_bd = ks_bd + tmp*pac((mc - 1)*15 + ma)
24134  kad((md - 1)*15 + ma) = kad((md - 1)*15 + ma) - tmp*p_bc
24135  kac((mc - 1)*15 + ma) = kac((mc - 1)*15 + ma) - tmp*p_bd
24136  END DO
24137  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
24138  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
24139  END DO
24140  END DO
24141  END DO
24142  END SUBROUTINE block_15_1_1_1
24143 ! **************************************************************************************************
24144 !> \brief ...
24145 !> \param md_max ...
24146 !> \param kbd ...
24147 !> \param kbc ...
24148 !> \param kad ...
24149 !> \param kac ...
24150 !> \param pbd ...
24151 !> \param pbc ...
24152 !> \param pad ...
24153 !> \param pac ...
24154 !> \param prim ...
24155 !> \param scale ...
24156 ! **************************************************************************************************
24157  SUBROUTINE block_15_1_1(md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
24158  INTEGER :: md_max
24159  REAL(kind=dp) :: kbd(1*md_max), kbc(1*1), kad(15*md_max), kac(15*1), pbd(1*md_max), &
24160  pbc(1*1), pad(15*md_max), pac(15*1), prim(15*1*1*md_max), scale
24161 
24162  INTEGER :: ma, mb, mc, md, p_index
24163  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
24164 
24165  kbd(1:1*md_max) = 0.0_dp
24166  kbc(1:1*1) = 0.0_dp
24167  kad(1:15*md_max) = 0.0_dp
24168  kac(1:15*1) = 0.0_dp
24169  p_index = 0
24170  DO md = 1, md_max
24171  DO mc = 1, 1
24172  DO mb = 1, 1
24173  ks_bd = 0.0_dp
24174  ks_bc = 0.0_dp
24175  p_bd = pbd((md - 1)*1 + mb)
24176  p_bc = pbc((mc - 1)*1 + mb)
24177  DO ma = 1, 15
24178  p_index = p_index + 1
24179  tmp = scale*prim(p_index)
24180  ks_bc = ks_bc + tmp*pad((md - 1)*15 + ma)
24181  ks_bd = ks_bd + tmp*pac((mc - 1)*15 + ma)
24182  kad((md - 1)*15 + ma) = kad((md - 1)*15 + ma) - tmp*p_bc
24183  kac((mc - 1)*15 + ma) = kac((mc - 1)*15 + ma) - tmp*p_bd
24184  END DO
24185  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
24186  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
24187  END DO
24188  END DO
24189  END DO
24190  END SUBROUTINE block_15_1_1
24191 ! **************************************************************************************************
24192 !> \brief ...
24193 !> \param mc_max ...
24194 !> \param md_max ...
24195 !> \param kbd ...
24196 !> \param kbc ...
24197 !> \param kad ...
24198 !> \param kac ...
24199 !> \param pbd ...
24200 !> \param pbc ...
24201 !> \param pad ...
24202 !> \param pac ...
24203 !> \param prim ...
24204 !> \param scale ...
24205 ! **************************************************************************************************
24206  SUBROUTINE block_15_1(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
24207  INTEGER :: mc_max, md_max
24208  REAL(kind=dp) :: kbd(1*md_max), kbc(1*mc_max), kad(15*md_max), kac(15*mc_max), &
24209  pbd(1*md_max), pbc(1*mc_max), pad(15*md_max), pac(15*mc_max), prim(15*1*mc_max*md_max), &
24210  scale
24211 
24212  INTEGER :: ma, mb, mc, md, p_index
24213  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
24214 
24215  kbd(1:1*md_max) = 0.0_dp
24216  kbc(1:1*mc_max) = 0.0_dp
24217  kad(1:15*md_max) = 0.0_dp
24218  kac(1:15*mc_max) = 0.0_dp
24219  p_index = 0
24220  DO md = 1, md_max
24221  DO mc = 1, mc_max
24222  DO mb = 1, 1
24223  ks_bd = 0.0_dp
24224  ks_bc = 0.0_dp
24225  p_bd = pbd((md - 1)*1 + mb)
24226  p_bc = pbc((mc - 1)*1 + mb)
24227  DO ma = 1, 15
24228  p_index = p_index + 1
24229  tmp = scale*prim(p_index)
24230  ks_bc = ks_bc + tmp*pad((md - 1)*15 + ma)
24231  ks_bd = ks_bd + tmp*pac((mc - 1)*15 + ma)
24232  kad((md - 1)*15 + ma) = kad((md - 1)*15 + ma) - tmp*p_bc
24233  kac((mc - 1)*15 + ma) = kac((mc - 1)*15 + ma) - tmp*p_bd
24234  END DO
24235  kbd((md - 1)*1 + mb) = kbd((md - 1)*1 + mb) - ks_bd
24236  kbc((mc - 1)*1 + mb) = kbc((mc - 1)*1 + mb) - ks_bc
24237  END DO
24238  END DO
24239  END DO
24240  END SUBROUTINE block_15_1
24241 ! **************************************************************************************************
24242 !> \brief ...
24243 !> \param mc_max ...
24244 !> \param md_max ...
24245 !> \param kbd ...
24246 !> \param kbc ...
24247 !> \param kad ...
24248 !> \param kac ...
24249 !> \param pbd ...
24250 !> \param pbc ...
24251 !> \param pad ...
24252 !> \param pac ...
24253 !> \param prim ...
24254 !> \param scale ...
24255 ! **************************************************************************************************
24256  SUBROUTINE block_15_2(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
24257  INTEGER :: mc_max, md_max
24258  REAL(kind=dp) :: kbd(2*md_max), kbc(2*mc_max), kad(15*md_max), kac(15*mc_max), &
24259  pbd(2*md_max), pbc(2*mc_max), pad(15*md_max), pac(15*mc_max), prim(15*2*mc_max*md_max), &
24260  scale
24261 
24262  INTEGER :: ma, mb, mc, md, p_index
24263  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
24264 
24265  kbd(1:2*md_max) = 0.0_dp
24266  kbc(1:2*mc_max) = 0.0_dp
24267  kad(1:15*md_max) = 0.0_dp
24268  kac(1:15*mc_max) = 0.0_dp
24269  p_index = 0
24270  DO md = 1, md_max
24271  DO mc = 1, mc_max
24272  DO mb = 1, 2
24273  ks_bd = 0.0_dp
24274  ks_bc = 0.0_dp
24275  p_bd = pbd((md - 1)*2 + mb)
24276  p_bc = pbc((mc - 1)*2 + mb)
24277  DO ma = 1, 15
24278  p_index = p_index + 1
24279  tmp = scale*prim(p_index)
24280  ks_bc = ks_bc + tmp*pad((md - 1)*15 + ma)
24281  ks_bd = ks_bd + tmp*pac((mc - 1)*15 + ma)
24282  kad((md - 1)*15 + ma) = kad((md - 1)*15 + ma) - tmp*p_bc
24283  kac((mc - 1)*15 + ma) = kac((mc - 1)*15 + ma) - tmp*p_bd
24284  END DO
24285  kbd((md - 1)*2 + mb) = kbd((md - 1)*2 + mb) - ks_bd
24286  kbc((mc - 1)*2 + mb) = kbc((mc - 1)*2 + mb) - ks_bc
24287  END DO
24288  END DO
24289  END DO
24290  END SUBROUTINE block_15_2
24291 ! **************************************************************************************************
24292 !> \brief ...
24293 !> \param mc_max ...
24294 !> \param md_max ...
24295 !> \param kbd ...
24296 !> \param kbc ...
24297 !> \param kad ...
24298 !> \param kac ...
24299 !> \param pbd ...
24300 !> \param pbc ...
24301 !> \param pad ...
24302 !> \param pac ...
24303 !> \param prim ...
24304 !> \param scale ...
24305 ! **************************************************************************************************
24306  SUBROUTINE block_15_3(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
24307  INTEGER :: mc_max, md_max
24308  REAL(kind=dp) :: kbd(3*md_max), kbc(3*mc_max), kad(15*md_max), kac(15*mc_max), &
24309  pbd(3*md_max), pbc(3*mc_max), pad(15*md_max), pac(15*mc_max), prim(15*3*mc_max*md_max), &
24310  scale
24311 
24312  INTEGER :: ma, mb, mc, md, p_index
24313  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
24314 
24315  kbd(1:3*md_max) = 0.0_dp
24316  kbc(1:3*mc_max) = 0.0_dp
24317  kad(1:15*md_max) = 0.0_dp
24318  kac(1:15*mc_max) = 0.0_dp
24319  p_index = 0
24320  DO md = 1, md_max
24321  DO mc = 1, mc_max
24322  DO mb = 1, 3
24323  ks_bd = 0.0_dp
24324  ks_bc = 0.0_dp
24325  p_bd = pbd((md - 1)*3 + mb)
24326  p_bc = pbc((mc - 1)*3 + mb)
24327  DO ma = 1, 15
24328  p_index = p_index + 1
24329  tmp = scale*prim(p_index)
24330  ks_bc = ks_bc + tmp*pad((md - 1)*15 + ma)
24331  ks_bd = ks_bd + tmp*pac((mc - 1)*15 + ma)
24332  kad((md - 1)*15 + ma) = kad((md - 1)*15 + ma) - tmp*p_bc
24333  kac((mc - 1)*15 + ma) = kac((mc - 1)*15 + ma) - tmp*p_bd
24334  END DO
24335  kbd((md - 1)*3 + mb) = kbd((md - 1)*3 + mb) - ks_bd
24336  kbc((mc - 1)*3 + mb) = kbc((mc - 1)*3 + mb) - ks_bc
24337  END DO
24338  END DO
24339  END DO
24340  END SUBROUTINE block_15_3
24341 ! **************************************************************************************************
24342 !> \brief ...
24343 !> \param mc_max ...
24344 !> \param md_max ...
24345 !> \param kbd ...
24346 !> \param kbc ...
24347 !> \param kad ...
24348 !> \param kac ...
24349 !> \param pbd ...
24350 !> \param pbc ...
24351 !> \param pad ...
24352 !> \param pac ...
24353 !> \param prim ...
24354 !> \param scale ...
24355 ! **************************************************************************************************
24356  SUBROUTINE block_15_4(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
24357  INTEGER :: mc_max, md_max
24358  REAL(kind=dp) :: kbd(4*md_max), kbc(4*mc_max), kad(15*md_max), kac(15*mc_max), &
24359  pbd(4*md_max), pbc(4*mc_max), pad(15*md_max), pac(15*mc_max), prim(15*4*mc_max*md_max), &
24360  scale
24361 
24362  INTEGER :: ma, mb, mc, md, p_index
24363  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
24364 
24365  kbd(1:4*md_max) = 0.0_dp
24366  kbc(1:4*mc_max) = 0.0_dp
24367  kad(1:15*md_max) = 0.0_dp
24368  kac(1:15*mc_max) = 0.0_dp
24369  p_index = 0
24370  DO md = 1, md_max
24371  DO mc = 1, mc_max
24372  DO mb = 1, 4
24373  ks_bd = 0.0_dp
24374  ks_bc = 0.0_dp
24375  p_bd = pbd((md - 1)*4 + mb)
24376  p_bc = pbc((mc - 1)*4 + mb)
24377  DO ma = 1, 15
24378  p_index = p_index + 1
24379  tmp = scale*prim(p_index)
24380  ks_bc = ks_bc + tmp*pad((md - 1)*15 + ma)
24381  ks_bd = ks_bd + tmp*pac((mc - 1)*15 + ma)
24382  kad((md - 1)*15 + ma) = kad((md - 1)*15 + ma) - tmp*p_bc
24383  kac((mc - 1)*15 + ma) = kac((mc - 1)*15 + ma) - tmp*p_bd
24384  END DO
24385  kbd((md - 1)*4 + mb) = kbd((md - 1)*4 + mb) - ks_bd
24386  kbc((mc - 1)*4 + mb) = kbc((mc - 1)*4 + mb) - ks_bc
24387  END DO
24388  END DO
24389  END DO
24390  END SUBROUTINE block_15_4
24391 ! **************************************************************************************************
24392 !> \brief ...
24393 !> \param mc_max ...
24394 !> \param md_max ...
24395 !> \param kbd ...
24396 !> \param kbc ...
24397 !> \param kad ...
24398 !> \param kac ...
24399 !> \param pbd ...
24400 !> \param pbc ...
24401 !> \param pad ...
24402 !> \param pac ...
24403 !> \param prim ...
24404 !> \param scale ...
24405 ! **************************************************************************************************
24406  SUBROUTINE block_15_5(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
24407  INTEGER :: mc_max, md_max
24408  REAL(kind=dp) :: kbd(5*md_max), kbc(5*mc_max), kad(15*md_max), kac(15*mc_max), &
24409  pbd(5*md_max), pbc(5*mc_max), pad(15*md_max), pac(15*mc_max), prim(15*5*mc_max*md_max), &
24410  scale
24411 
24412  INTEGER :: ma, mb, mc, md, p_index
24413  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
24414 
24415  kbd(1:5*md_max) = 0.0_dp
24416  kbc(1:5*mc_max) = 0.0_dp
24417  kad(1:15*md_max) = 0.0_dp
24418  kac(1:15*mc_max) = 0.0_dp
24419  p_index = 0
24420  DO md = 1, md_max
24421  DO mc = 1, mc_max
24422  DO mb = 1, 5
24423  ks_bd = 0.0_dp
24424  ks_bc = 0.0_dp
24425  p_bd = pbd((md - 1)*5 + mb)
24426  p_bc = pbc((mc - 1)*5 + mb)
24427  DO ma = 1, 15
24428  p_index = p_index + 1
24429  tmp = scale*prim(p_index)
24430  ks_bc = ks_bc + tmp*pad((md - 1)*15 + ma)
24431  ks_bd = ks_bd + tmp*pac((mc - 1)*15 + ma)
24432  kad((md - 1)*15 + ma) = kad((md - 1)*15 + ma) - tmp*p_bc
24433  kac((mc - 1)*15 + ma) = kac((mc - 1)*15 + ma) - tmp*p_bd
24434  END DO
24435  kbd((md - 1)*5 + mb) = kbd((md - 1)*5 + mb) - ks_bd
24436  kbc((mc - 1)*5 + mb) = kbc((mc - 1)*5 + mb) - ks_bc
24437  END DO
24438  END DO
24439  END DO
24440  END SUBROUTINE block_15_5
24441 ! **************************************************************************************************
24442 !> \brief ...
24443 !> \param mc_max ...
24444 !> \param md_max ...
24445 !> \param kbd ...
24446 !> \param kbc ...
24447 !> \param kad ...
24448 !> \param kac ...
24449 !> \param pbd ...
24450 !> \param pbc ...
24451 !> \param pad ...
24452 !> \param pac ...
24453 !> \param prim ...
24454 !> \param scale ...
24455 ! **************************************************************************************************
24456  SUBROUTINE block_15_6(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
24457  INTEGER :: mc_max, md_max
24458  REAL(kind=dp) :: kbd(6*md_max), kbc(6*mc_max), kad(15*md_max), kac(15*mc_max), &
24459  pbd(6*md_max), pbc(6*mc_max), pad(15*md_max), pac(15*mc_max), prim(15*6*mc_max*md_max), &
24460  scale
24461 
24462  INTEGER :: ma, mb, mc, md, p_index
24463  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
24464 
24465  kbd(1:6*md_max) = 0.0_dp
24466  kbc(1:6*mc_max) = 0.0_dp
24467  kad(1:15*md_max) = 0.0_dp
24468  kac(1:15*mc_max) = 0.0_dp
24469  p_index = 0
24470  DO md = 1, md_max
24471  DO mc = 1, mc_max
24472  DO mb = 1, 6
24473  ks_bd = 0.0_dp
24474  ks_bc = 0.0_dp
24475  p_bd = pbd((md - 1)*6 + mb)
24476  p_bc = pbc((mc - 1)*6 + mb)
24477  DO ma = 1, 15
24478  p_index = p_index + 1
24479  tmp = scale*prim(p_index)
24480  ks_bc = ks_bc + tmp*pad((md - 1)*15 + ma)
24481  ks_bd = ks_bd + tmp*pac((mc - 1)*15 + ma)
24482  kad((md - 1)*15 + ma) = kad((md - 1)*15 + ma) - tmp*p_bc
24483  kac((mc - 1)*15 + ma) = kac((mc - 1)*15 + ma) - tmp*p_bd
24484  END DO
24485  kbd((md - 1)*6 + mb) = kbd((md - 1)*6 + mb) - ks_bd
24486  kbc((mc - 1)*6 + mb) = kbc((mc - 1)*6 + mb) - ks_bc
24487  END DO
24488  END DO
24489  END DO
24490  END SUBROUTINE block_15_6
24491 ! **************************************************************************************************
24492 !> \brief ...
24493 !> \param mc_max ...
24494 !> \param md_max ...
24495 !> \param kbd ...
24496 !> \param kbc ...
24497 !> \param kad ...
24498 !> \param kac ...
24499 !> \param pbd ...
24500 !> \param pbc ...
24501 !> \param pad ...
24502 !> \param pac ...
24503 !> \param prim ...
24504 !> \param scale ...
24505 ! **************************************************************************************************
24506  SUBROUTINE block_15_7(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
24507  INTEGER :: mc_max, md_max
24508  REAL(kind=dp) :: kbd(7*md_max), kbc(7*mc_max), kad(15*md_max), kac(15*mc_max), &
24509  pbd(7*md_max), pbc(7*mc_max), pad(15*md_max), pac(15*mc_max), prim(15*7*mc_max*md_max), &
24510  scale
24511 
24512  INTEGER :: ma, mb, mc, md, p_index
24513  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
24514 
24515  kbd(1:7*md_max) = 0.0_dp
24516  kbc(1:7*mc_max) = 0.0_dp
24517  kad(1:15*md_max) = 0.0_dp
24518  kac(1:15*mc_max) = 0.0_dp
24519  p_index = 0
24520  DO md = 1, md_max
24521  DO mc = 1, mc_max
24522  DO mb = 1, 7
24523  ks_bd = 0.0_dp
24524  ks_bc = 0.0_dp
24525  p_bd = pbd((md - 1)*7 + mb)
24526  p_bc = pbc((mc - 1)*7 + mb)
24527  DO ma = 1, 15
24528  p_index = p_index + 1
24529  tmp = scale*prim(p_index)
24530  ks_bc = ks_bc + tmp*pad((md - 1)*15 + ma)
24531  ks_bd = ks_bd + tmp*pac((mc - 1)*15 + ma)
24532  kad((md - 1)*15 + ma) = kad((md - 1)*15 + ma) - tmp*p_bc
24533  kac((mc - 1)*15 + ma) = kac((mc - 1)*15 + ma) - tmp*p_bd
24534  END DO
24535  kbd((md - 1)*7 + mb) = kbd((md - 1)*7 + mb) - ks_bd
24536  kbc((mc - 1)*7 + mb) = kbc((mc - 1)*7 + mb) - ks_bc
24537  END DO
24538  END DO
24539  END DO
24540  END SUBROUTINE block_15_7
24541 ! **************************************************************************************************
24542 !> \brief ...
24543 !> \param mc_max ...
24544 !> \param md_max ...
24545 !> \param kbd ...
24546 !> \param kbc ...
24547 !> \param kad ...
24548 !> \param kac ...
24549 !> \param pbd ...
24550 !> \param pbc ...
24551 !> \param pad ...
24552 !> \param pac ...
24553 !> \param prim ...
24554 !> \param scale ...
24555 ! **************************************************************************************************
24556  SUBROUTINE block_15_9(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
24557  INTEGER :: mc_max, md_max
24558  REAL(kind=dp) :: kbd(9*md_max), kbc(9*mc_max), kad(15*md_max), kac(15*mc_max), &
24559  pbd(9*md_max), pbc(9*mc_max), pad(15*md_max), pac(15*mc_max), prim(15*9*mc_max*md_max), &
24560  scale
24561 
24562  INTEGER :: ma, mb, mc, md, p_index
24563  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
24564 
24565  kbd(1:9*md_max) = 0.0_dp
24566  kbc(1:9*mc_max) = 0.0_dp
24567  kad(1:15*md_max) = 0.0_dp
24568  kac(1:15*mc_max) = 0.0_dp
24569  p_index = 0
24570  DO md = 1, md_max
24571  DO mc = 1, mc_max
24572  DO mb = 1, 9
24573  ks_bd = 0.0_dp
24574  ks_bc = 0.0_dp
24575  p_bd = pbd((md - 1)*9 + mb)
24576  p_bc = pbc((mc - 1)*9 + mb)
24577  DO ma = 1, 15
24578  p_index = p_index + 1
24579  tmp = scale*prim(p_index)
24580  ks_bc = ks_bc + tmp*pad((md - 1)*15 + ma)
24581  ks_bd = ks_bd + tmp*pac((mc - 1)*15 + ma)
24582  kad((md - 1)*15 + ma) = kad((md - 1)*15 + ma) - tmp*p_bc
24583  kac((mc - 1)*15 + ma) = kac((mc - 1)*15 + ma) - tmp*p_bd
24584  END DO
24585  kbd((md - 1)*9 + mb) = kbd((md - 1)*9 + mb) - ks_bd
24586  kbc((mc - 1)*9 + mb) = kbc((mc - 1)*9 + mb) - ks_bc
24587  END DO
24588  END DO
24589  END DO
24590  END SUBROUTINE block_15_9
24591 ! **************************************************************************************************
24592 !> \brief ...
24593 !> \param mc_max ...
24594 !> \param md_max ...
24595 !> \param kbd ...
24596 !> \param kbc ...
24597 !> \param kad ...
24598 !> \param kac ...
24599 !> \param pbd ...
24600 !> \param pbc ...
24601 !> \param pad ...
24602 !> \param pac ...
24603 !> \param prim ...
24604 !> \param scale ...
24605 ! **************************************************************************************************
24606  SUBROUTINE block_15_10(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
24607  INTEGER :: mc_max, md_max
24608  REAL(kind=dp) :: kbd(10*md_max), kbc(10*mc_max), kad(15*md_max), kac(15*mc_max), &
24609  pbd(10*md_max), pbc(10*mc_max), pad(15*md_max), pac(15*mc_max), &
24610  prim(15*10*mc_max*md_max), scale
24611 
24612  INTEGER :: ma, mb, mc, md, p_index
24613  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
24614 
24615  kbd(1:10*md_max) = 0.0_dp
24616  kbc(1:10*mc_max) = 0.0_dp
24617  kad(1:15*md_max) = 0.0_dp
24618  kac(1:15*mc_max) = 0.0_dp
24619  p_index = 0
24620  DO md = 1, md_max
24621  DO mc = 1, mc_max
24622  DO mb = 1, 10
24623  ks_bd = 0.0_dp
24624  ks_bc = 0.0_dp
24625  p_bd = pbd((md - 1)*10 + mb)
24626  p_bc = pbc((mc - 1)*10 + mb)
24627  DO ma = 1, 15
24628  p_index = p_index + 1
24629  tmp = scale*prim(p_index)
24630  ks_bc = ks_bc + tmp*pad((md - 1)*15 + ma)
24631  ks_bd = ks_bd + tmp*pac((mc - 1)*15 + ma)
24632  kad((md - 1)*15 + ma) = kad((md - 1)*15 + ma) - tmp*p_bc
24633  kac((mc - 1)*15 + ma) = kac((mc - 1)*15 + ma) - tmp*p_bd
24634  END DO
24635  kbd((md - 1)*10 + mb) = kbd((md - 1)*10 + mb) - ks_bd
24636  kbc((mc - 1)*10 + mb) = kbc((mc - 1)*10 + mb) - ks_bc
24637  END DO
24638  END DO
24639  END DO
24640  END SUBROUTINE block_15_10
24641 ! **************************************************************************************************
24642 !> \brief ...
24643 !> \param mc_max ...
24644 !> \param md_max ...
24645 !> \param kbd ...
24646 !> \param kbc ...
24647 !> \param kad ...
24648 !> \param kac ...
24649 !> \param pbd ...
24650 !> \param pbc ...
24651 !> \param pad ...
24652 !> \param pac ...
24653 !> \param prim ...
24654 !> \param scale ...
24655 ! **************************************************************************************************
24656  SUBROUTINE block_15_11(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
24657  INTEGER :: mc_max, md_max
24658  REAL(kind=dp) :: kbd(11*md_max), kbc(11*mc_max), kad(15*md_max), kac(15*mc_max), &
24659  pbd(11*md_max), pbc(11*mc_max), pad(15*md_max), pac(15*mc_max), &
24660  prim(15*11*mc_max*md_max), scale
24661 
24662  INTEGER :: ma, mb, mc, md, p_index
24663  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
24664 
24665  kbd(1:11*md_max) = 0.0_dp
24666  kbc(1:11*mc_max) = 0.0_dp
24667  kad(1:15*md_max) = 0.0_dp
24668  kac(1:15*mc_max) = 0.0_dp
24669  p_index = 0
24670  DO md = 1, md_max
24671  DO mc = 1, mc_max
24672  DO mb = 1, 11
24673  ks_bd = 0.0_dp
24674  ks_bc = 0.0_dp
24675  p_bd = pbd((md - 1)*11 + mb)
24676  p_bc = pbc((mc - 1)*11 + mb)
24677  DO ma = 1, 15
24678  p_index = p_index + 1
24679  tmp = scale*prim(p_index)
24680  ks_bc = ks_bc + tmp*pad((md - 1)*15 + ma)
24681  ks_bd = ks_bd + tmp*pac((mc - 1)*15 + ma)
24682  kad((md - 1)*15 + ma) = kad((md - 1)*15 + ma) - tmp*p_bc
24683  kac((mc - 1)*15 + ma) = kac((mc - 1)*15 + ma) - tmp*p_bd
24684  END DO
24685  kbd((md - 1)*11 + mb) = kbd((md - 1)*11 + mb) - ks_bd
24686  kbc((mc - 1)*11 + mb) = kbc((mc - 1)*11 + mb) - ks_bc
24687  END DO
24688  END DO
24689  END DO
24690  END SUBROUTINE block_15_11
24691 ! **************************************************************************************************
24692 !> \brief ...
24693 !> \param mc_max ...
24694 !> \param md_max ...
24695 !> \param kbd ...
24696 !> \param kbc ...
24697 !> \param kad ...
24698 !> \param kac ...
24699 !> \param pbd ...
24700 !> \param pbc ...
24701 !> \param pad ...
24702 !> \param pac ...
24703 !> \param prim ...
24704 !> \param scale ...
24705 ! **************************************************************************************************
24706  SUBROUTINE block_15_15(mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
24707  INTEGER :: mc_max, md_max
24708  REAL(kind=dp) :: kbd(15*md_max), kbc(15*mc_max), kad(15*md_max), kac(15*mc_max), &
24709  pbd(15*md_max), pbc(15*mc_max), pad(15*md_max), pac(15*mc_max), &
24710  prim(15*15*mc_max*md_max), scale
24711 
24712  INTEGER :: ma, mb, mc, md, p_index
24713  REAL(kind=dp) :: ks_bc, ks_bd, p_bc, p_bd, tmp
24714 
24715  kbd(1:15*md_max) = 0.0_dp
24716  kbc(1:15*mc_max) = 0.0_dp
24717  kad(1:15*md_max) = 0.0_dp
24718  kac(1:15*mc_max) = 0.0_dp
24719  p_index = 0
24720  DO md = 1, md_max
24721  DO mc = 1, mc_max
24722  DO mb = 1, 15
24723  ks_bd = 0.0_dp
24724  ks_bc = 0.0_dp
24725  p_bd = pbd((md - 1)*15 + mb)
24726  p_bc = pbc((mc - 1)*15 + mb)
24727  DO ma = 1, 15
24728  p_index = p_index + 1
24729  tmp = scale*prim(p_index)
24730  ks_bc = ks_bc + tmp*pad((md - 1)*15 + ma)
24731  ks_bd = ks_bd + tmp*pac((mc - 1)*15 + ma)
24732  kad((md - 1)*15 + ma) = kad((md - 1)*15 + ma) - tmp*p_bc
24733  kac((mc - 1)*15 + ma) = kac((mc - 1)*15 + ma) - tmp*p_bd
24734  END DO
24735  kbd((md - 1)*15 + mb) = kbd((md - 1)*15 + mb) - ks_bd
24736  kbc((mc - 1)*15 + mb) = kbc((mc - 1)*15 + mb) - ks_bc
24737  END DO
24738  END DO
24739  END DO
24740  END SUBROUTINE block_15_15
24741 #endif
24742 END MODULE hfx_contract_block
subroutine pbc(r, r_pbc, s, s_pbc, a, b, c, alpha, beta, gamma, debug, info, pbc0, h, hinv)
...
Definition: dumpdcd.F:1203
routines to contract density matrix blocks with the for center integrals to yield the Kohn-Sham matri...
subroutine, public contract_block(ma_max, mb_max, mc_max, md_max, kbd, kbc, kad, kac, pbd, pbc, pad, pac, prim, scale)
...
Defines the basic variable types.
Definition: kinds.F:23
integer, parameter, public dp
Definition: kinds.F:34