1 //
2 // BAGEL - Brilliantly Advanced General Electronic Structure Library
3 // Filename: MRCI_residualqq.cc
4 // Copyright (C) 2014 Toru Shiozaki
5 //
6 // Author: Toru Shiozaki <shiozaki@northwestern.edu>
7 // Maintainer: Shiozaki group
8 //
9 // This file is part of the BAGEL package.
10 //
11 // This program is free software: you can redistribute it and/or modify
12 // it under the terms of the GNU General Public License as published by
13 // the Free Software Foundation, either version 3 of the License, or
14 // (at your option) any later version.
15 //
16 // This program is distributed in the hope that it will be useful,
17 // but WITHOUT ANY WARRANTY; without even the implied warranty of
18 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19 // GNU General Public License for more details.
20 //
21 // You should have received a copy of the GNU General Public License
22 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
23 //
24 
25 #include <bagel_config.h>
26 #ifdef COMPILE_SMITH
27 
28 
29 #include <src/smith/mrci/MRCI.h>
30 #include <src/smith/mrci/MRCI_tasks13.h>
31 #include <src/smith/mrci/MRCI_tasks14.h>
32 #include <src/smith/mrci/MRCI_tasks15.h>
33 
34 using namespace std;
35 using namespace bagel;
36 using namespace bagel::SMITH;
37 
make_residualq7(shared_ptr<Queue> residualq,shared_ptr<Task> task108,const bool diagonal)38 void MRCI::MRCI::make_residualq7(shared_ptr<Queue> residualq, shared_ptr<Task> task108, const bool diagonal) {
39   array<shared_ptr<const IndexRange>,3> pindex = {{rclosed_, ractive_, rvirt_}};
40 
41   vector<IndexRange> I162_index = {virt_, closed_, virt_, closed_};
42   auto I162 = make_shared<Tensor>(I162_index);
43   auto tensor603 = vector<shared_ptr<Tensor>>{r, I162};
44   auto task603 = make_shared<Task603>(tensor603, pindex);
45   task603->add_dep(task108);
46   residualq->add_task(task603);
47 
48   vector<IndexRange> I163_index = {virt_, active_};
49   auto I163 = make_shared<Tensor>(I163_index);
50   auto tensor604 = vector<shared_ptr<Tensor>>{I162, t2, I163};
51   auto task604 = make_shared<Task604>(tensor604, pindex);
52   task603->add_dep(task604);
53   task604->add_dep(task108);
54   residualq->add_task(task604);
55 
56   auto tensor605 = vector<shared_ptr<Tensor>>{I163, Gamma12_(), h1_};
57   auto task605 = make_shared<Task605>(tensor605, pindex);
58   task604->add_dep(task605);
59   task605->add_dep(task108);
60   residualq->add_task(task605);
61 
62   vector<IndexRange> I166_index = {virt_, active_};
63   auto I166 = make_shared<Tensor>(I166_index);
64   auto tensor606 = vector<shared_ptr<Tensor>>{I162, t2, I166};
65   auto task606 = make_shared<Task606>(tensor606, pindex);
66   task603->add_dep(task606);
67   task606->add_dep(task108);
68   residualq->add_task(task606);
69 
70   auto tensor607 = vector<shared_ptr<Tensor>>{I166, Gamma12_(), h1_};
71   auto task607 = make_shared<Task607>(tensor607, pindex);
72   task606->add_dep(task607);
73   task607->add_dep(task108);
74   residualq->add_task(task607);
75 
76   vector<IndexRange> I169_index = {virt_, closed_};
77   auto I169 = make_shared<Tensor>(I169_index);
78   auto tensor608 = vector<shared_ptr<Tensor>>{I162, h1_, I169};
79   auto task608 = make_shared<Task608>(tensor608, pindex);
80   task603->add_dep(task608);
81   task608->add_dep(task108);
82   residualq->add_task(task608);
83 
84   vector<IndexRange> I170_index = {active_, virt_, closed_, active_};
85   auto I170 = make_shared<Tensor>(I170_index);
86   auto tensor609 = vector<shared_ptr<Tensor>>{I169, Gamma32_(), I170};
87   auto task609 = make_shared<Task609>(tensor609, pindex);
88   task608->add_dep(task609);
89   task609->add_dep(task108);
90   residualq->add_task(task609);
91 
92   auto tensor610 = vector<shared_ptr<Tensor>>{I170, t2};
93   auto task610 = make_shared<Task610>(tensor610, pindex);
94   task609->add_dep(task610);
95   task610->add_dep(task108);
96   residualq->add_task(task610);
97 
98   vector<IndexRange> I172_index = {virt_, closed_};
99   auto I172 = make_shared<Tensor>(I172_index);
100   auto tensor611 = vector<shared_ptr<Tensor>>{I162, h1_, I172};
101   auto task611 = make_shared<Task611>(tensor611, pindex);
102   task603->add_dep(task611);
103   task611->add_dep(task108);
104   residualq->add_task(task611);
105 
106   vector<IndexRange> I173_index = {active_, virt_, closed_, active_};
107   auto I173 = make_shared<Tensor>(I173_index);
108   auto tensor612 = vector<shared_ptr<Tensor>>{I172, Gamma32_(), I173};
109   auto task612 = make_shared<Task612>(tensor612, pindex);
110   task611->add_dep(task612);
111   task612->add_dep(task108);
112   residualq->add_task(task612);
113 
114   auto tensor613 = vector<shared_ptr<Tensor>>{I173, t2};
115   auto task613 = make_shared<Task613>(tensor613, pindex);
116   task612->add_dep(task613);
117   task613->add_dep(task108);
118   residualq->add_task(task613);
119 
120   vector<IndexRange> I181_index = {closed_, closed_};
121   auto I181 = make_shared<Tensor>(I181_index);
122   auto tensor614 = vector<shared_ptr<Tensor>>{I162, t2, I181};
123   auto task614 = make_shared<Task614>(tensor614, pindex);
124   task603->add_dep(task614);
125   task614->add_dep(task108);
126   residualq->add_task(task614);
127 
128   shared_ptr<Task615> task615;
129   if (diagonal) {
130     auto tensor615 = vector<shared_ptr<Tensor>>{I181, h1_};
131     task615 = make_shared<Task615>(tensor615, pindex);
132     task614->add_dep(task615);
133     task615->add_dep(task108);
134     residualq->add_task(task615);
135   }
136 
137   vector<IndexRange> I1243_index = {closed_, closed_, active_, active_};
138   auto I1243 = make_shared<Tensor>(I1243_index);
139   auto tensor616 = vector<shared_ptr<Tensor>>{I181, Gamma32_(), I1243};
140   auto task616 = make_shared<Task616>(tensor616, pindex);
141   task614->add_dep(task616);
142   task616->add_dep(task108);
143   residualq->add_task(task616);
144 
145   auto tensor617 = vector<shared_ptr<Tensor>>{I1243, v2_};
146   auto task617 = make_shared<Task617>(tensor617, pindex);
147   task616->add_dep(task617);
148   task617->add_dep(task108);
149   residualq->add_task(task617);
150 
151   auto tensor618 = vector<shared_ptr<Tensor>>{I181, Gamma12_(), v2_};
152   auto task618 = make_shared<Task618>(tensor618, pindex);
153   task614->add_dep(task618);
154   task618->add_dep(task108);
155   residualq->add_task(task618);
156 
157   vector<IndexRange> I183_index = {closed_, closed_};
158   auto I183 = make_shared<Tensor>(I183_index);
159   auto tensor619 = vector<shared_ptr<Tensor>>{I162, t2, I183};
160   auto task619 = make_shared<Task619>(tensor619, pindex);
161   task603->add_dep(task619);
162   task619->add_dep(task108);
163   residualq->add_task(task619);
164 
165   shared_ptr<Task620> task620;
166   if (diagonal) {
167     auto tensor620 = vector<shared_ptr<Tensor>>{I183, h1_};
168     task620 = make_shared<Task620>(tensor620, pindex);
169     task619->add_dep(task620);
170     task620->add_dep(task108);
171     residualq->add_task(task620);
172   }
173 
174   vector<IndexRange> I1246_index = {closed_, closed_, active_, active_};
175   auto I1246 = make_shared<Tensor>(I1246_index);
176   auto tensor621 = vector<shared_ptr<Tensor>>{I183, Gamma32_(), I1246};
177   auto task621 = make_shared<Task621>(tensor621, pindex);
178   task619->add_dep(task621);
179   task621->add_dep(task108);
180   residualq->add_task(task621);
181 
182   auto tensor622 = vector<shared_ptr<Tensor>>{I1246, v2_};
183   auto task622 = make_shared<Task622>(tensor622, pindex);
184   task621->add_dep(task622);
185   task622->add_dep(task108);
186   residualq->add_task(task622);
187 
188   auto tensor623 = vector<shared_ptr<Tensor>>{I183, Gamma12_(), v2_};
189   auto task623 = make_shared<Task623>(tensor623, pindex);
190   task619->add_dep(task623);
191   task623->add_dep(task108);
192   residualq->add_task(task623);
193 
194   vector<IndexRange> I185_index = {virt_, virt_};
195   auto I185 = make_shared<Tensor>(I185_index);
196   auto tensor624 = vector<shared_ptr<Tensor>>{I162, t2, I185};
197   auto task624 = make_shared<Task624>(tensor624, pindex);
198   task603->add_dep(task624);
199   task624->add_dep(task108);
200   residualq->add_task(task624);
201 
202   shared_ptr<Task625> task625;
203   if (diagonal) {
204     auto tensor625 = vector<shared_ptr<Tensor>>{I185, h1_};
205     task625 = make_shared<Task625>(tensor625, pindex);
206     task624->add_dep(task625);
207     task625->add_dep(task108);
208     residualq->add_task(task625);
209   }
210 
211   vector<IndexRange> I1249_index = {virt_, virt_, active_, active_};
212   auto I1249 = make_shared<Tensor>(I1249_index);
213   auto tensor626 = vector<shared_ptr<Tensor>>{I185, Gamma32_(), I1249};
214   auto task626 = make_shared<Task626>(tensor626, pindex);
215   task624->add_dep(task626);
216   task626->add_dep(task108);
217   residualq->add_task(task626);
218 
219   auto tensor627 = vector<shared_ptr<Tensor>>{I1249, v2_};
220   auto task627 = make_shared<Task627>(tensor627, pindex);
221   task626->add_dep(task627);
222   task627->add_dep(task108);
223   residualq->add_task(task627);
224 
225   auto tensor628 = vector<shared_ptr<Tensor>>{I185, Gamma12_(), v2_};
226   auto task628 = make_shared<Task628>(tensor628, pindex);
227   task624->add_dep(task628);
228   task628->add_dep(task108);
229   residualq->add_task(task628);
230 
231   vector<IndexRange> I187_index = {virt_, virt_};
232   auto I187 = make_shared<Tensor>(I187_index);
233   auto tensor629 = vector<shared_ptr<Tensor>>{I162, t2, I187};
234   auto task629 = make_shared<Task629>(tensor629, pindex);
235   task603->add_dep(task629);
236   task629->add_dep(task108);
237   residualq->add_task(task629);
238 
239   shared_ptr<Task630> task630;
240   if (diagonal) {
241     auto tensor630 = vector<shared_ptr<Tensor>>{I187, h1_};
242     task630 = make_shared<Task630>(tensor630, pindex);
243     task629->add_dep(task630);
244     task630->add_dep(task108);
245     residualq->add_task(task630);
246   }
247 
248   vector<IndexRange> I1252_index = {virt_, virt_, active_, active_};
249   auto I1252 = make_shared<Tensor>(I1252_index);
250   auto tensor631 = vector<shared_ptr<Tensor>>{I187, Gamma32_(), I1252};
251   auto task631 = make_shared<Task631>(tensor631, pindex);
252   task629->add_dep(task631);
253   task631->add_dep(task108);
254   residualq->add_task(task631);
255 
256   auto tensor632 = vector<shared_ptr<Tensor>>{I1252, v2_};
257   auto task632 = make_shared<Task632>(tensor632, pindex);
258   task631->add_dep(task632);
259   task632->add_dep(task108);
260   residualq->add_task(task632);
261 
262   auto tensor633 = vector<shared_ptr<Tensor>>{I187, Gamma12_(), v2_};
263   auto task633 = make_shared<Task633>(tensor633, pindex);
264   task629->add_dep(task633);
265   task633->add_dep(task108);
266   residualq->add_task(task633);
267 
268   vector<IndexRange> I189_index = {closed_, active_};
269   auto I189 = make_shared<Tensor>(I189_index);
270   auto tensor634 = vector<shared_ptr<Tensor>>{I162, t2, I189};
271   auto task634 = make_shared<Task634>(tensor634, pindex);
272   task603->add_dep(task634);
273   task634->add_dep(task108);
274   residualq->add_task(task634);
275 
276   auto tensor635 = vector<shared_ptr<Tensor>>{I189, Gamma32_(), h1_};
277   auto task635 = make_shared<Task635>(tensor635, pindex);
278   task634->add_dep(task635);
279   task635->add_dep(task108);
280   residualq->add_task(task635);
281 
282   vector<IndexRange> I192_index = {closed_, active_};
283   auto I192 = make_shared<Tensor>(I192_index);
284   auto tensor636 = vector<shared_ptr<Tensor>>{I162, t2, I192};
285   auto task636 = make_shared<Task636>(tensor636, pindex);
286   task603->add_dep(task636);
287   task636->add_dep(task108);
288   residualq->add_task(task636);
289 
290   auto tensor637 = vector<shared_ptr<Tensor>>{I192, Gamma32_(), h1_};
291   auto task637 = make_shared<Task637>(tensor637, pindex);
292   task636->add_dep(task637);
293   task637->add_dep(task108);
294   residualq->add_task(task637);
295 
296   vector<IndexRange> I1116_index = {closed_, active_};
297   auto I1116 = make_shared<Tensor>(I1116_index);
298   auto tensor638 = vector<shared_ptr<Tensor>>{I162, v2_, I1116};
299   auto task638 = make_shared<Task638>(tensor638, pindex);
300   task603->add_dep(task638);
301   task638->add_dep(task108);
302   residualq->add_task(task638);
303 
304   auto tensor639 = vector<shared_ptr<Tensor>>{I1116, Gamma10_(), t2};
305   auto task639 = make_shared<Task639>(tensor639, pindex);
306   task638->add_dep(task639);
307   task639->add_dep(task108);
308   residualq->add_task(task639);
309 
310   vector<IndexRange> I1119_index = {closed_, active_};
311   auto I1119 = make_shared<Tensor>(I1119_index);
312   auto tensor640 = vector<shared_ptr<Tensor>>{I162, v2_, I1119};
313   auto task640 = make_shared<Task640>(tensor640, pindex);
314   task603->add_dep(task640);
315   task640->add_dep(task108);
316   residualq->add_task(task640);
317 
318   auto tensor641 = vector<shared_ptr<Tensor>>{I1119, Gamma10_(), t2};
319   auto task641 = make_shared<Task641>(tensor641, pindex);
320   task640->add_dep(task641);
321   task641->add_dep(task108);
322   residualq->add_task(task641);
323 
324   vector<IndexRange> I1122_index = {virt_, active_};
325   auto I1122 = make_shared<Tensor>(I1122_index);
326   auto tensor642 = vector<shared_ptr<Tensor>>{I162, t2, I1122};
327   auto task642 = make_shared<Task642>(tensor642, pindex);
328   task603->add_dep(task642);
329   task642->add_dep(task108);
330   residualq->add_task(task642);
331 
332   auto tensor643 = vector<shared_ptr<Tensor>>{I1122, Gamma5_(), v2_};
333   auto task643 = make_shared<Task643>(tensor643, pindex);
334   task642->add_dep(task643);
335   task643->add_dep(task108);
336   residualq->add_task(task643);
337 
338   auto tensor644 = vector<shared_ptr<Tensor>>{I1122, Gamma197_(), v2_};
339   auto task644 = make_shared<Task644>(tensor644, pindex);
340   task642->add_dep(task644);
341   task644->add_dep(task108);
342   residualq->add_task(task644);
343 
344   vector<IndexRange> I1125_index = {virt_, active_};
345   auto I1125 = make_shared<Tensor>(I1125_index);
346   auto tensor645 = vector<shared_ptr<Tensor>>{I162, t2, I1125};
347   auto task645 = make_shared<Task645>(tensor645, pindex);
348   task603->add_dep(task645);
349   task645->add_dep(task108);
350   residualq->add_task(task645);
351 
352   auto tensor646 = vector<shared_ptr<Tensor>>{I1125, Gamma5_(), v2_};
353   auto task646 = make_shared<Task646>(tensor646, pindex);
354   task645->add_dep(task646);
355   task646->add_dep(task108);
356   residualq->add_task(task646);
357 
358   auto tensor647 = vector<shared_ptr<Tensor>>{I1125, Gamma197_(), v2_};
359   auto task647 = make_shared<Task647>(tensor647, pindex);
360   task645->add_dep(task647);
361   task647->add_dep(task108);
362   residualq->add_task(task647);
363 
364   vector<IndexRange> I1134_index = {closed_, closed_, virt_, active_};
365   auto I1134 = make_shared<Tensor>(I1134_index);
366   auto tensor648 = vector<shared_ptr<Tensor>>{I162, t2, I1134};
367   auto task648 = make_shared<Task648>(tensor648, pindex);
368   task603->add_dep(task648);
369   task648->add_dep(task108);
370   residualq->add_task(task648);
371 
372   vector<IndexRange> I1135_index = {active_, closed_, closed_, virt_};
373   auto I1135 = make_shared<Tensor>(I1135_index);
374   auto tensor649 = vector<shared_ptr<Tensor>>{I1134, Gamma12_(), I1135};
375   auto task649 = make_shared<Task649>(tensor649, pindex);
376   task648->add_dep(task649);
377   task649->add_dep(task108);
378   residualq->add_task(task649);
379 
380   auto tensor650 = vector<shared_ptr<Tensor>>{I1135, v2_};
381   auto task650 = make_shared<Task650>(tensor650, pindex);
382   task649->add_dep(task650);
383   task650->add_dep(task108);
384   residualq->add_task(task650);
385 
386   vector<IndexRange> I1137_index = {closed_, closed_, virt_, active_};
387   auto I1137 = make_shared<Tensor>(I1137_index);
388   auto tensor651 = vector<shared_ptr<Tensor>>{I162, t2, I1137};
389   auto task651 = make_shared<Task651>(tensor651, pindex);
390   task603->add_dep(task651);
391   task651->add_dep(task108);
392   residualq->add_task(task651);
393 
394   vector<IndexRange> I1138_index = {active_, closed_, closed_, virt_};
395   auto I1138 = make_shared<Tensor>(I1138_index);
396   auto tensor652 = vector<shared_ptr<Tensor>>{I1137, Gamma12_(), I1138};
397   auto task652 = make_shared<Task652>(tensor652, pindex);
398   task651->add_dep(task652);
399   task652->add_dep(task108);
400   residualq->add_task(task652);
401 
402   auto tensor653 = vector<shared_ptr<Tensor>>{I1138, v2_};
403   auto task653 = make_shared<Task653>(tensor653, pindex);
404   task652->add_dep(task653);
405   task653->add_dep(task108);
406   residualq->add_task(task653);
407 
408   vector<IndexRange> I1146_index = {closed_, closed_, virt_, active_};
409   auto I1146 = make_shared<Tensor>(I1146_index);
410   auto tensor654 = vector<shared_ptr<Tensor>>{I162, t2, I1146};
411   auto task654 = make_shared<Task654>(tensor654, pindex);
412   task603->add_dep(task654);
413   task654->add_dep(task108);
414   residualq->add_task(task654);
415 
416   vector<IndexRange> I1147_index = {active_, closed_, closed_, virt_};
417   auto I1147 = make_shared<Tensor>(I1147_index);
418   auto tensor655 = vector<shared_ptr<Tensor>>{I1146, Gamma12_(), I1147};
419   auto task655 = make_shared<Task655>(tensor655, pindex);
420   task654->add_dep(task655);
421   task655->add_dep(task108);
422   residualq->add_task(task655);
423 
424   auto tensor656 = vector<shared_ptr<Tensor>>{I1147, v2_};
425   auto task656 = make_shared<Task656>(tensor656, pindex);
426   task655->add_dep(task656);
427   task656->add_dep(task108);
428   residualq->add_task(task656);
429 
430   vector<IndexRange> I1149_index = {closed_, closed_, virt_, active_};
431   auto I1149 = make_shared<Tensor>(I1149_index);
432   auto tensor657 = vector<shared_ptr<Tensor>>{I162, t2, I1149};
433   auto task657 = make_shared<Task657>(tensor657, pindex);
434   task603->add_dep(task657);
435   task657->add_dep(task108);
436   residualq->add_task(task657);
437 
438   vector<IndexRange> I1150_index = {active_, closed_, closed_, virt_};
439   auto I1150 = make_shared<Tensor>(I1150_index);
440   auto tensor658 = vector<shared_ptr<Tensor>>{I1149, Gamma12_(), I1150};
441   auto task658 = make_shared<Task658>(tensor658, pindex);
442   task657->add_dep(task658);
443   task658->add_dep(task108);
444   residualq->add_task(task658);
445 
446   auto tensor659 = vector<shared_ptr<Tensor>>{I1150, v2_};
447   auto task659 = make_shared<Task659>(tensor659, pindex);
448   task658->add_dep(task659);
449   task659->add_dep(task108);
450   residualq->add_task(task659);
451 
452   vector<IndexRange> I1158_index = {closed_, virt_, closed_, active_};
453   auto I1158 = make_shared<Tensor>(I1158_index);
454   auto tensor660 = vector<shared_ptr<Tensor>>{I162, v2_, I1158};
455   auto task660 = make_shared<Task660>(tensor660, pindex);
456   task603->add_dep(task660);
457   task660->add_dep(task108);
458   residualq->add_task(task660);
459 
460   auto tensor661 = vector<shared_ptr<Tensor>>{I1158, Gamma12_(), t2};
461   auto task661 = make_shared<Task661>(tensor661, pindex);
462   task660->add_dep(task661);
463   task661->add_dep(task108);
464   residualq->add_task(task661);
465 
466   vector<IndexRange> I1161_index = {closed_, virt_, closed_, active_};
467   auto I1161 = make_shared<Tensor>(I1161_index);
468   auto tensor662 = vector<shared_ptr<Tensor>>{I162, v2_, I1161};
469   auto task662 = make_shared<Task662>(tensor662, pindex);
470   task603->add_dep(task662);
471   task662->add_dep(task108);
472   residualq->add_task(task662);
473 
474   auto tensor663 = vector<shared_ptr<Tensor>>{I1161, Gamma12_(), t2};
475   auto task663 = make_shared<Task663>(tensor663, pindex);
476   task662->add_dep(task663);
477   task663->add_dep(task108);
478   residualq->add_task(task663);
479 
480   vector<IndexRange> I1164_index = {closed_, virt_, active_, active_};
481   auto I1164 = make_shared<Tensor>(I1164_index);
482   auto tensor664 = vector<shared_ptr<Tensor>>{I162, t2, I1164};
483   auto task664 = make_shared<Task664>(tensor664, pindex);
484   task603->add_dep(task664);
485   task664->add_dep(task108);
486   residualq->add_task(task664);
487 
488   vector<IndexRange> I1165_index = {closed_, virt_, active_, active_};
489   auto I1165 = make_shared<Tensor>(I1165_index);
490   auto tensor665 = vector<shared_ptr<Tensor>>{I1164, Gamma29_(), I1165};
491   auto task665 = make_shared<Task665>(tensor665, pindex);
492   task664->add_dep(task665);
493   task665->add_dep(task108);
494   residualq->add_task(task665);
495 
496   auto tensor666 = vector<shared_ptr<Tensor>>{I1165, v2_};
497   auto task666 = make_shared<Task666>(tensor666, pindex);
498   task665->add_dep(task666);
499   task666->add_dep(task108);
500   residualq->add_task(task666);
501 
502   auto tensor667 = vector<shared_ptr<Tensor>>{I1164, Gamma18_(), v2_};
503   auto task667 = make_shared<Task667>(tensor667, pindex);
504   task664->add_dep(task667);
505   task667->add_dep(task108);
506   residualq->add_task(task667);
507 
508   auto tensor668 = vector<shared_ptr<Tensor>>{I1164, Gamma27_(), v2_};
509   auto task668 = make_shared<Task668>(tensor668, pindex);
510   task664->add_dep(task668);
511   task668->add_dep(task108);
512   residualq->add_task(task668);
513 
514   vector<IndexRange> I1167_index = {closed_, virt_, active_, active_};
515   auto I1167 = make_shared<Tensor>(I1167_index);
516   auto tensor669 = vector<shared_ptr<Tensor>>{I162, t2, I1167};
517   auto task669 = make_shared<Task669>(tensor669, pindex);
518   task603->add_dep(task669);
519   task669->add_dep(task108);
520   residualq->add_task(task669);
521 
522   vector<IndexRange> I1168_index = {closed_, virt_, active_, active_};
523   auto I1168 = make_shared<Tensor>(I1168_index);
524   auto tensor670 = vector<shared_ptr<Tensor>>{I1167, Gamma29_(), I1168};
525   auto task670 = make_shared<Task670>(tensor670, pindex);
526   task669->add_dep(task670);
527   task670->add_dep(task108);
528   residualq->add_task(task670);
529 
530   auto tensor671 = vector<shared_ptr<Tensor>>{I1168, v2_};
531   auto task671 = make_shared<Task671>(tensor671, pindex);
532   task670->add_dep(task671);
533   task671->add_dep(task108);
534   residualq->add_task(task671);
535 
536   auto tensor672 = vector<shared_ptr<Tensor>>{I1167, Gamma10_(), v2_};
537   auto task672 = make_shared<Task672>(tensor672, pindex);
538   task669->add_dep(task672);
539   task672->add_dep(task108);
540   residualq->add_task(task672);
541 
542   vector<IndexRange> I1188_index = {virt_, closed_};
543   auto I1188 = make_shared<Tensor>(I1188_index);
544   auto tensor673 = vector<shared_ptr<Tensor>>{I162, v2_, I1188};
545   auto task673 = make_shared<Task673>(tensor673, pindex);
546   task603->add_dep(task673);
547   task673->add_dep(task108);
548   residualq->add_task(task673);
549 
550   vector<IndexRange> I1189_index = {active_, virt_, closed_, active_};
551   auto I1189 = make_shared<Tensor>(I1189_index);
552   auto tensor674 = vector<shared_ptr<Tensor>>{I1188, Gamma32_(), I1189};
553   auto task674 = make_shared<Task674>(tensor674, pindex);
554   task673->add_dep(task674);
555   task674->add_dep(task108);
556   residualq->add_task(task674);
557 
558   auto tensor675 = vector<shared_ptr<Tensor>>{I1189, t2};
559   auto task675 = make_shared<Task675>(tensor675, pindex);
560   task674->add_dep(task675);
561   task675->add_dep(task108);
562   residualq->add_task(task675);
563 
564   vector<IndexRange> I1191_index = {virt_, closed_};
565   auto I1191 = make_shared<Tensor>(I1191_index);
566   auto tensor676 = vector<shared_ptr<Tensor>>{I162, v2_, I1191};
567   auto task676 = make_shared<Task676>(tensor676, pindex);
568   task603->add_dep(task676);
569   task676->add_dep(task108);
570   residualq->add_task(task676);
571 
572   vector<IndexRange> I1192_index = {active_, virt_, closed_, active_};
573   auto I1192 = make_shared<Tensor>(I1192_index);
574   auto tensor677 = vector<shared_ptr<Tensor>>{I1191, Gamma32_(), I1192};
575   auto task677 = make_shared<Task677>(tensor677, pindex);
576   task676->add_dep(task677);
577   task677->add_dep(task108);
578   residualq->add_task(task677);
579 
580   auto tensor678 = vector<shared_ptr<Tensor>>{I1192, t2};
581   auto task678 = make_shared<Task678>(tensor678, pindex);
582   task677->add_dep(task678);
583   task678->add_dep(task108);
584   residualq->add_task(task678);
585 
586   vector<IndexRange> I1194_index = {virt_, closed_};
587   auto I1194 = make_shared<Tensor>(I1194_index);
588   auto tensor679 = vector<shared_ptr<Tensor>>{I162, v2_, I1194};
589   auto task679 = make_shared<Task679>(tensor679, pindex);
590   task603->add_dep(task679);
591   task679->add_dep(task108);
592   residualq->add_task(task679);
593 
594   vector<IndexRange> I1195_index = {active_, virt_, closed_, active_};
595   auto I1195 = make_shared<Tensor>(I1195_index);
596   auto tensor680 = vector<shared_ptr<Tensor>>{I1194, Gamma32_(), I1195};
597   auto task680 = make_shared<Task680>(tensor680, pindex);
598   task679->add_dep(task680);
599   task680->add_dep(task108);
600   residualq->add_task(task680);
601 
602   auto tensor681 = vector<shared_ptr<Tensor>>{I1195, t2};
603   auto task681 = make_shared<Task681>(tensor681, pindex);
604   task680->add_dep(task681);
605   task681->add_dep(task108);
606   residualq->add_task(task681);
607 
608   vector<IndexRange> I1197_index = {virt_, closed_};
609   auto I1197 = make_shared<Tensor>(I1197_index);
610   auto tensor682 = vector<shared_ptr<Tensor>>{I162, v2_, I1197};
611   auto task682 = make_shared<Task682>(tensor682, pindex);
612   task603->add_dep(task682);
613   task682->add_dep(task108);
614   residualq->add_task(task682);
615 
616   vector<IndexRange> I1198_index = {active_, virt_, closed_, active_};
617   auto I1198 = make_shared<Tensor>(I1198_index);
618   auto tensor683 = vector<shared_ptr<Tensor>>{I1197, Gamma32_(), I1198};
619   auto task683 = make_shared<Task683>(tensor683, pindex);
620   task682->add_dep(task683);
621   task683->add_dep(task108);
622   residualq->add_task(task683);
623 
624   auto tensor684 = vector<shared_ptr<Tensor>>{I1198, t2};
625   auto task684 = make_shared<Task684>(tensor684, pindex);
626   task683->add_dep(task684);
627   task684->add_dep(task108);
628   residualq->add_task(task684);
629 
630   vector<IndexRange> I1200_index = {closed_, virt_, active_, active_};
631   auto I1200 = make_shared<Tensor>(I1200_index);
632   auto tensor685 = vector<shared_ptr<Tensor>>{I162, t2, I1200};
633   auto task685 = make_shared<Task685>(tensor685, pindex);
634   task603->add_dep(task685);
635   task685->add_dep(task108);
636   residualq->add_task(task685);
637 
638   vector<IndexRange> I1201_index = {closed_, virt_, active_, active_};
639   auto I1201 = make_shared<Tensor>(I1201_index);
640   auto tensor686 = vector<shared_ptr<Tensor>>{I1200, Gamma29_(), I1201};
641   auto task686 = make_shared<Task686>(tensor686, pindex);
642   task685->add_dep(task686);
643   task686->add_dep(task108);
644   residualq->add_task(task686);
645 
646   auto tensor687 = vector<shared_ptr<Tensor>>{I1201, v2_};
647   auto task687 = make_shared<Task687>(tensor687, pindex);
648   task686->add_dep(task687);
649   task687->add_dep(task108);
650   residualq->add_task(task687);
651 
652   auto tensor688 = vector<shared_ptr<Tensor>>{I1200, Gamma10_(), v2_};
653   auto task688 = make_shared<Task688>(tensor688, pindex);
654   task685->add_dep(task688);
655   task688->add_dep(task108);
656   residualq->add_task(task688);
657 
658   vector<IndexRange> I1203_index = {closed_, virt_, active_, active_};
659   auto I1203 = make_shared<Tensor>(I1203_index);
660   auto tensor689 = vector<shared_ptr<Tensor>>{I162, t2, I1203};
661   auto task689 = make_shared<Task689>(tensor689, pindex);
662   task603->add_dep(task689);
663   task689->add_dep(task108);
664   residualq->add_task(task689);
665 
666   vector<IndexRange> I1204_index = {closed_, virt_, active_, active_};
667   auto I1204 = make_shared<Tensor>(I1204_index);
668   auto tensor690 = vector<shared_ptr<Tensor>>{I1203, Gamma29_(), I1204};
669   auto task690 = make_shared<Task690>(tensor690, pindex);
670   task689->add_dep(task690);
671   task690->add_dep(task108);
672   residualq->add_task(task690);
673 
674   auto tensor691 = vector<shared_ptr<Tensor>>{I1204, v2_};
675   auto task691 = make_shared<Task691>(tensor691, pindex);
676   task690->add_dep(task691);
677   task691->add_dep(task108);
678   residualq->add_task(task691);
679 
680   auto tensor692 = vector<shared_ptr<Tensor>>{I1203, Gamma10_(), v2_};
681   auto task692 = make_shared<Task692>(tensor692, pindex);
682   task689->add_dep(task692);
683   task692->add_dep(task108);
684   residualq->add_task(task692);
685 
686   vector<IndexRange> I1236_index = {virt_, active_};
687   auto I1236 = make_shared<Tensor>(I1236_index);
688   auto tensor693 = vector<shared_ptr<Tensor>>{I162, v2_, I1236};
689   auto task693 = make_shared<Task693>(tensor693, pindex);
690   task603->add_dep(task693);
691   task693->add_dep(task108);
692   residualq->add_task(task693);
693 
694   auto tensor694 = vector<shared_ptr<Tensor>>{I1236, Gamma51_(), t2};
695   auto task694 = make_shared<Task694>(tensor694, pindex);
696   task693->add_dep(task694);
697   task694->add_dep(task108);
698   residualq->add_task(task694);
699 
700   vector<IndexRange> I1239_index = {virt_, active_};
701   auto I1239 = make_shared<Tensor>(I1239_index);
702   auto tensor695 = vector<shared_ptr<Tensor>>{I162, v2_, I1239};
703   auto task695 = make_shared<Task695>(tensor695, pindex);
704   task603->add_dep(task695);
705   task695->add_dep(task108);
706   residualq->add_task(task695);
707 
708   auto tensor696 = vector<shared_ptr<Tensor>>{I1239, Gamma51_(), t2};
709   auto task696 = make_shared<Task696>(tensor696, pindex);
710   task695->add_dep(task696);
711   task696->add_dep(task108);
712   residualq->add_task(task696);
713 
714   shared_ptr<Task697> task697;
715   if (diagonal) {
716     auto tensor697 = vector<shared_ptr<Tensor>>{I162, t2, v2_};
717     task697 = make_shared<Task697>(tensor697, pindex);
718     task603->add_dep(task697);
719     task697->add_dep(task108);
720     residualq->add_task(task697);
721   }
722 
723   shared_ptr<Task698> task698;
724   if (diagonal) {
725     auto tensor698 = vector<shared_ptr<Tensor>>{I162, t2, v2_};
726     task698 = make_shared<Task698>(tensor698, pindex);
727     task603->add_dep(task698);
728     task698->add_dep(task108);
729     residualq->add_task(task698);
730   }
731 
732   shared_ptr<Task699> task699;
733   if (diagonal) {
734     auto tensor699 = vector<shared_ptr<Tensor>>{I162, t2, v2_};
735     task699 = make_shared<Task699>(tensor699, pindex);
736     task603->add_dep(task699);
737     task699->add_dep(task108);
738     residualq->add_task(task699);
739   }
740 
741   shared_ptr<Task700> task700;
742   if (diagonal) {
743     auto tensor700 = vector<shared_ptr<Tensor>>{I162, t2, v2_};
744     task700 = make_shared<Task700>(tensor700, pindex);
745     task603->add_dep(task700);
746     task700->add_dep(task108);
747     residualq->add_task(task700);
748   }
749 
750   shared_ptr<Task701> task701;
751   if (diagonal) {
752     auto tensor701 = vector<shared_ptr<Tensor>>{I162, t2, v2_};
753     task701 = make_shared<Task701>(tensor701, pindex);
754     task603->add_dep(task701);
755     task701->add_dep(task108);
756     residualq->add_task(task701);
757   }
758 
759   shared_ptr<Task702> task702;
760   if (diagonal) {
761     auto tensor702 = vector<shared_ptr<Tensor>>{I162, t2, v2_};
762     task702 = make_shared<Task702>(tensor702, pindex);
763     task603->add_dep(task702);
764     task702->add_dep(task108);
765     residualq->add_task(task702);
766   }
767 
768   shared_ptr<Task703> task703;
769   if (diagonal) {
770     auto tensor703 = vector<shared_ptr<Tensor>>{I162, t2, v2_};
771     task703 = make_shared<Task703>(tensor703, pindex);
772     task603->add_dep(task703);
773     task703->add_dep(task108);
774     residualq->add_task(task703);
775   }
776 
777   shared_ptr<Task704> task704;
778   if (diagonal) {
779     auto tensor704 = vector<shared_ptr<Tensor>>{I162, t2, v2_};
780     task704 = make_shared<Task704>(tensor704, pindex);
781     task603->add_dep(task704);
782     task704->add_dep(task108);
783     residualq->add_task(task704);
784   }
785 
786   vector<IndexRange> I1310_index = {closed_, active_};
787   auto I1310 = make_shared<Tensor>(I1310_index);
788   auto tensor705 = vector<shared_ptr<Tensor>>{I162, t2, I1310};
789   auto task705 = make_shared<Task705>(tensor705, pindex);
790   task603->add_dep(task705);
791   task705->add_dep(task108);
792   residualq->add_task(task705);
793 
794   auto tensor706 = vector<shared_ptr<Tensor>>{I1310, Gamma29_(), v2_};
795   auto task706 = make_shared<Task706>(tensor706, pindex);
796   task705->add_dep(task706);
797   task706->add_dep(task108);
798   residualq->add_task(task706);
799 
800   auto tensor707 = vector<shared_ptr<Tensor>>{I1310, Gamma51_(), v2_};
801   auto task707 = make_shared<Task707>(tensor707, pindex);
802   task705->add_dep(task707);
803   task707->add_dep(task108);
804   residualq->add_task(task707);
805 
806   vector<IndexRange> I1313_index = {closed_, active_};
807   auto I1313 = make_shared<Tensor>(I1313_index);
808   auto tensor708 = vector<shared_ptr<Tensor>>{I162, t2, I1313};
809   auto task708 = make_shared<Task708>(tensor708, pindex);
810   task603->add_dep(task708);
811   task708->add_dep(task108);
812   residualq->add_task(task708);
813 
814   auto tensor709 = vector<shared_ptr<Tensor>>{I1313, Gamma29_(), v2_};
815   auto task709 = make_shared<Task709>(tensor709, pindex);
816   task708->add_dep(task709);
817   task709->add_dep(task108);
818   residualq->add_task(task709);
819 
820   auto tensor710 = vector<shared_ptr<Tensor>>{I1313, Gamma51_(), v2_};
821   auto task710 = make_shared<Task710>(tensor710, pindex);
822   task708->add_dep(task710);
823   task710->add_dep(task108);
824   residualq->add_task(task710);
825 
826   vector<IndexRange> I1322_index = {closed_, closed_, closed_, active_};
827   auto I1322 = make_shared<Tensor>(I1322_index);
828   auto tensor711 = vector<shared_ptr<Tensor>>{I162, t2, I1322};
829   auto task711 = make_shared<Task711>(tensor711, pindex);
830   task603->add_dep(task711);
831   task711->add_dep(task108);
832   residualq->add_task(task711);
833 
834   auto tensor712 = vector<shared_ptr<Tensor>>{I1322, Gamma32_(), v2_};
835   auto task712 = make_shared<Task712>(tensor712, pindex);
836   task711->add_dep(task712);
837   task712->add_dep(task108);
838   residualq->add_task(task712);
839 
840   vector<IndexRange> I1325_index = {closed_, closed_, closed_, active_};
841   auto I1325 = make_shared<Tensor>(I1325_index);
842   auto tensor713 = vector<shared_ptr<Tensor>>{I162, t2, I1325};
843   auto task713 = make_shared<Task713>(tensor713, pindex);
844   task603->add_dep(task713);
845   task713->add_dep(task108);
846   residualq->add_task(task713);
847 
848   auto tensor714 = vector<shared_ptr<Tensor>>{I1325, Gamma32_(), v2_};
849   auto task714 = make_shared<Task714>(tensor714, pindex);
850   task713->add_dep(task714);
851   task714->add_dep(task108);
852   residualq->add_task(task714);
853 
854   vector<IndexRange> I1328_index = {virt_, closed_, virt_, active_};
855   auto I1328 = make_shared<Tensor>(I1328_index);
856   auto tensor715 = vector<shared_ptr<Tensor>>{I162, t2, I1328};
857   auto task715 = make_shared<Task715>(tensor715, pindex);
858   task603->add_dep(task715);
859   task715->add_dep(task108);
860   residualq->add_task(task715);
861 
862   vector<IndexRange> I1329_index = {virt_, active_, closed_, virt_};
863   auto I1329 = make_shared<Tensor>(I1329_index);
864   auto tensor716 = vector<shared_ptr<Tensor>>{I1328, Gamma32_(), I1329};
865   auto task716 = make_shared<Task716>(tensor716, pindex);
866   task715->add_dep(task716);
867   task716->add_dep(task108);
868   residualq->add_task(task716);
869 
870   auto tensor717 = vector<shared_ptr<Tensor>>{I1329, v2_};
871   auto task717 = make_shared<Task717>(tensor717, pindex);
872   task716->add_dep(task717);
873   task717->add_dep(task108);
874   residualq->add_task(task717);
875 
876   vector<IndexRange> I1331_index = {virt_, closed_, virt_, active_};
877   auto I1331 = make_shared<Tensor>(I1331_index);
878   auto tensor718 = vector<shared_ptr<Tensor>>{I162, t2, I1331};
879   auto task718 = make_shared<Task718>(tensor718, pindex);
880   task603->add_dep(task718);
881   task718->add_dep(task108);
882   residualq->add_task(task718);
883 
884   vector<IndexRange> I1332_index = {virt_, active_, closed_, virt_};
885   auto I1332 = make_shared<Tensor>(I1332_index);
886   auto tensor719 = vector<shared_ptr<Tensor>>{I1331, Gamma32_(), I1332};
887   auto task719 = make_shared<Task719>(tensor719, pindex);
888   task718->add_dep(task719);
889   task719->add_dep(task108);
890   residualq->add_task(task719);
891 
892   auto tensor720 = vector<shared_ptr<Tensor>>{I1332, v2_};
893   auto task720 = make_shared<Task720>(tensor720, pindex);
894   task719->add_dep(task720);
895   task720->add_dep(task108);
896   residualq->add_task(task720);
897 
898   vector<IndexRange> I1334_index = {virt_, closed_, virt_, active_};
899   auto I1334 = make_shared<Tensor>(I1334_index);
900   auto tensor721 = vector<shared_ptr<Tensor>>{I162, t2, I1334};
901   auto task721 = make_shared<Task721>(tensor721, pindex);
902   task603->add_dep(task721);
903   task721->add_dep(task108);
904   residualq->add_task(task721);
905 
906   vector<IndexRange> I1335_index = {virt_, active_, closed_, virt_};
907   auto I1335 = make_shared<Tensor>(I1335_index);
908   auto tensor722 = vector<shared_ptr<Tensor>>{I1334, Gamma32_(), I1335};
909   auto task722 = make_shared<Task722>(tensor722, pindex);
910   task721->add_dep(task722);
911   task722->add_dep(task108);
912   residualq->add_task(task722);
913 
914   auto tensor723 = vector<shared_ptr<Tensor>>{I1335, v2_};
915   auto task723 = make_shared<Task723>(tensor723, pindex);
916   task722->add_dep(task723);
917   task723->add_dep(task108);
918   residualq->add_task(task723);
919 
920   vector<IndexRange> I1337_index = {virt_, closed_, virt_, active_};
921   auto I1337 = make_shared<Tensor>(I1337_index);
922   auto tensor724 = vector<shared_ptr<Tensor>>{I162, t2, I1337};
923   auto task724 = make_shared<Task724>(tensor724, pindex);
924   task603->add_dep(task724);
925   task724->add_dep(task108);
926   residualq->add_task(task724);
927 
928   vector<IndexRange> I1338_index = {virt_, active_, closed_, virt_};
929   auto I1338 = make_shared<Tensor>(I1338_index);
930   auto tensor725 = vector<shared_ptr<Tensor>>{I1337, Gamma32_(), I1338};
931   auto task725 = make_shared<Task725>(tensor725, pindex);
932   task724->add_dep(task725);
933   task725->add_dep(task108);
934   residualq->add_task(task725);
935 
936   auto tensor726 = vector<shared_ptr<Tensor>>{I1338, v2_};
937   auto task726 = make_shared<Task726>(tensor726, pindex);
938   task725->add_dep(task726);
939   task726->add_dep(task108);
940   residualq->add_task(task726);
941 }
942 
943 #endif
944