10{
   15 
   19 
   20  
   21 
   22  t3dg_1(
i, 
j, 
k) = t3dg_2(
i, 
j, 
l) * t2_2(
k, 
l);
 
   24                  - (t3dg_2(0, 0, 0) * t2_2(0, 0)
   25                     + t3dg_2(0, 0, 1) * t2_2(0, 1)
   26                     + t3dg_2(0, 0, 2) * t2_2(0, 2)),
   27                "T3dg(i,j,l)*T2(k,l)(0,0,0)");
   29                  - (t3dg_2(0, 0, 0) * t2_2(1, 0)
   30                     + t3dg_2(0, 0, 1) * t2_2(1, 1)
   31                     + t3dg_2(0, 0, 2) * t2_2(1, 2)),
   32                "T3dg(i,j,l)*T2(k,l)(0,0,1)");
   34                  - (t3dg_2(0, 0, 0) * t2_2(2, 0)
   35                     + t3dg_2(0, 0, 1) * t2_2(2, 1)
   36                     + t3dg_2(0, 0, 2) * t2_2(2, 2)),
   37                "T3dg(i,j,l)*T2(k,l)(0,0,2)");
   39                  - (t3dg_2(0, 1, 0) * t2_2(0, 0)
   40                     + t3dg_2(0, 1, 1) * t2_2(0, 1)
   41                     + t3dg_2(0, 1, 2) * t2_2(0, 2)),
   42                "T3dg(i,j,l)*T2(k,l)(0,1,0)");
   44                  - (t3dg_2(0, 1, 0) * t2_2(1, 0)
   45                     + t3dg_2(0, 1, 1) * t2_2(1, 1)
   46                     + t3dg_2(0, 1, 2) * t2_2(1, 2)),
   47                "T3dg(i,j,l)*T2(k,l)(0,1,1)");
   49                  - (t3dg_2(0, 1, 0) * t2_2(2, 0)
   50                     + t3dg_2(0, 1, 1) * t2_2(2, 1)
   51                     + t3dg_2(0, 1, 2) * t2_2(2, 2)),
   52                "T3dg(i,j,l)*T2(k,l)(0,1,2)");
   54                  - (t3dg_2(0, 2, 0) * t2_2(0, 0)
   55                     + t3dg_2(0, 2, 1) * t2_2(0, 1)
   56                     + t3dg_2(0, 2, 2) * t2_2(0, 2)),
   57                "T3dg(i,j,l)*T2(k,l)(0,2,0)");
   59                  - (t3dg_2(0, 2, 0) * t2_2(1, 0)
   60                     + t3dg_2(0, 2, 1) * t2_2(1, 1)
   61                     + t3dg_2(0, 2, 2) * t2_2(1, 2)),
   62                "T3dg(i,j,l)*T2(k,l)(0,2,1)");
   64                  - (t3dg_2(0, 2, 0) * t2_2(2, 0)
   65                     + t3dg_2(0, 2, 1) * t2_2(2, 1)
   66                     + t3dg_2(0, 2, 2) * t2_2(2, 2)),
   67                "T3dg(i,j,l)*T2(k,l)(0,2,2)");
   69                  - (t3dg_2(1, 0, 0) * t2_2(0, 0)
   70                     + t3dg_2(1, 0, 1) * t2_2(0, 1)
   71                     + t3dg_2(1, 0, 2) * t2_2(0, 2)),
   72                "T3dg(i,j,l)*T2(k,l)(1,0,0)");
   74                  - (t3dg_2(1, 0, 0) * t2_2(1, 0)
   75                     + t3dg_2(1, 0, 1) * t2_2(1, 1)
   76                     + t3dg_2(1, 0, 2) * t2_2(1, 2)),
   77                "T3dg(i,j,l)*T2(k,l)(1,0,1)");
   79                  - (t3dg_2(1, 0, 0) * t2_2(2, 0)
   80                     + t3dg_2(1, 0, 1) * t2_2(2, 1)
   81                     + t3dg_2(1, 0, 2) * t2_2(2, 2)),
   82                "T3dg(i,j,l)*T2(k,l)(1,0,2)");
   84                  - (t3dg_2(1, 1, 0) * t2_2(0, 0)
   85                     + t3dg_2(1, 1, 1) * t2_2(0, 1)
   86                     + t3dg_2(1, 1, 2) * t2_2(0, 2)),
   87                "T3dg(i,j,l)*T2(k,l)(1,1,0)");
   89                  - (t3dg_2(1, 1, 0) * t2_2(1, 0)
   90                     + t3dg_2(1, 1, 1) * t2_2(1, 1)
   91                     + t3dg_2(1, 1, 2) * t2_2(1, 2)),
   92                "T3dg(i,j,l)*T2(k,l)(1,1,1)");
   94                  - (t3dg_2(1, 1, 0) * t2_2(2, 0)
   95                     + t3dg_2(1, 1, 1) * t2_2(2, 1)
   96                     + t3dg_2(1, 1, 2) * t2_2(2, 2)),
   97                "T3dg(i,j,l)*T2(k,l)(1,1,2)");
   99                  - (t3dg_2(1, 2, 0) * t2_2(0, 0)
  100                     + t3dg_2(1, 2, 1) * t2_2(0, 1)
  101                     + t3dg_2(1, 2, 2) * t2_2(0, 2)),
  102                "T3dg(i,j,l)*T2(k,l)(1,2,0)");
  104                  - (t3dg_2(1, 2, 0) * t2_2(1, 0)
  105                     + t3dg_2(1, 2, 1) * t2_2(1, 1)
  106                     + t3dg_2(1, 2, 2) * t2_2(1, 2)),
  107                "T3dg(i,j,l)*T2(k,l)(1,2,1)");
  109                  - (t3dg_2(1, 2, 0) * t2_2(2, 0)
  110                     + t3dg_2(1, 2, 1) * t2_2(2, 1)
  111                     + t3dg_2(1, 2, 2) * t2_2(2, 2)),
  112                "T3dg(i,j,l)*T2(k,l)(1,2,2)");
  114                  - (t3dg_2(2, 0, 0) * t2_2(0, 0)
  115                     + t3dg_2(2, 0, 1) * t2_2(0, 1)
  116                     + t3dg_2(2, 0, 2) * t2_2(0, 2)),
  117                "T3dg(i,j,l)*T2(k,l)(2,0,0)");
  119                  - (t3dg_2(2, 0, 0) * t2_2(1, 0)
  120                     + t3dg_2(2, 0, 1) * t2_2(1, 1)
  121                     + t3dg_2(2, 0, 2) * t2_2(1, 2)),
  122                "T3dg(i,j,l)*T2(k,l)(2,0,1)");
  124                  - (t3dg_2(2, 0, 0) * t2_2(2, 0)
  125                     + t3dg_2(2, 0, 1) * t2_2(2, 1)
  126                     + t3dg_2(2, 0, 2) * t2_2(2, 2)),
  127                "T3dg(i,j,l)*T2(k,l)(2,0,2)");
  129                  - (t3dg_2(2, 1, 0) * t2_2(0, 0)
  130                     + t3dg_2(2, 1, 1) * t2_2(0, 1)
  131                     + t3dg_2(2, 1, 2) * t2_2(0, 2)),
  132                "T3dg(i,j,l)*T2(k,l)(2,1,0)");
  134                  - (t3dg_2(2, 1, 0) * t2_2(1, 0)
  135                     + t3dg_2(2, 1, 1) * t2_2(1, 1)
  136                     + t3dg_2(2, 1, 2) * t2_2(1, 2)),
  137                "T3dg(i,j,l)*T2(k,l)(2,1,1)");
  139                  - (t3dg_2(2, 1, 0) * t2_2(2, 0)
  140                     + t3dg_2(2, 1, 1) * t2_2(2, 1)
  141                     + t3dg_2(2, 1, 2) * t2_2(2, 2)),
  142                "T3dg(i,j,l)*T2(k,l)(2,1,2)");
  144                  - (t3dg_2(2, 2, 0) * t2_2(0, 0)
  145                     + t3dg_2(2, 2, 1) * t2_2(0, 1)
  146                     + t3dg_2(2, 2, 2) * t2_2(0, 2)),
  147                "T3dg(i,j,l)*T2(k,l)(2,2,0)");
  149                  - (t3dg_2(2, 2, 0) * t2_2(1, 0)
  150                     + t3dg_2(2, 2, 1) * t2_2(1, 1)
  151                     + t3dg_2(2, 2, 2) * t2_2(1, 2)),
  152                "T3dg(i,j,l)*T2(k,l)(2,2,1)");
  154                  - (t3dg_2(2, 2, 0) * t2_2(2, 0)
  155                     + t3dg_2(2, 2, 1) * t2_2(2, 1)
  156                     + t3dg_2(2, 2, 2) * t2_2(2, 2)),
  157                "T3dg(i,j,l)*T2(k,l)(2,2,2)");
  158 
  159  t3dg_1(
i, 
j, 
k) = t2_2(
k, 
l) * t3dg_3(
i, 
j, 
l);
 
  161                  - (t3dg_3(0, 0, 0) * t2_2(0, 0)
  162                     + t3dg_3(0, 0, 1) * t2_2(0, 1)
  163                     + t3dg_3(0, 0, 2) * t2_2(0, 2)),
  164                "T2(k,l)*T3dg(i,j,l)(0,0,0)");
  166                  - (t3dg_3(0, 0, 0) * t2_2(1, 0)
  167                     + t3dg_3(0, 0, 1) * t2_2(1, 1)
  168                     + t3dg_3(0, 0, 2) * t2_2(1, 2)),
  169                "T2(k,l)*T3dg(i,j,l)(0,0,1)");
  171                  - (t3dg_3(0, 0, 0) * t2_2(2, 0)
  172                     + t3dg_3(0, 0, 1) * t2_2(2, 1)
  173                     + t3dg_3(0, 0, 2) * t2_2(2, 2)),
  174                "T2(k,l)*T3dg(i,j,l)(0,0,2)");
  176                  - (t3dg_3(0, 1, 0) * t2_2(0, 0)
  177                     + t3dg_3(0, 1, 1) * t2_2(0, 1)
  178                     + t3dg_3(0, 1, 2) * t2_2(0, 2)),
  179                "T2(k,l)*T3dg(i,j,l)(0,1,0)");
  181                  - (t3dg_3(0, 1, 0) * t2_2(1, 0)
  182                     + t3dg_3(0, 1, 1) * t2_2(1, 1)
  183                     + t3dg_3(0, 1, 2) * t2_2(1, 2)),
  184                "T2(k,l)*T3dg(i,j,l)(0,1,1)");
  186                  - (t3dg_3(0, 1, 0) * t2_2(2, 0)
  187                     + t3dg_3(0, 1, 1) * t2_2(2, 1)
  188                     + t3dg_3(0, 1, 2) * t2_2(2, 2)),
  189                "T2(k,l)*T3dg(i,j,l)(0,1,2)");
  191                  - (t3dg_3(0, 2, 0) * t2_2(0, 0)
  192                     + t3dg_3(0, 2, 1) * t2_2(0, 1)
  193                     + t3dg_3(0, 2, 2) * t2_2(0, 2)),
  194                "T2(k,l)*T3dg(i,j,l)(0,2,0)");
  196                  - (t3dg_3(0, 2, 0) * t2_2(1, 0)
  197                     + t3dg_3(0, 2, 1) * t2_2(1, 1)
  198                     + t3dg_3(0, 2, 2) * t2_2(1, 2)),
  199                "T2(k,l)*T3dg(i,j,l)(0,2,1)");
  201                  - (t3dg_3(0, 2, 0) * t2_2(2, 0)
  202                     + t3dg_3(0, 2, 1) * t2_2(2, 1)
  203                     + t3dg_3(0, 2, 2) * t2_2(2, 2)),
  204                "T2(k,l)*T3dg(i,j,l)(0,2,2)");
  206                  - (t3dg_3(1, 0, 0) * t2_2(0, 0)
  207                     + t3dg_3(1, 0, 1) * t2_2(0, 1)
  208                     + t3dg_3(1, 0, 2) * t2_2(0, 2)),
  209                "T2(k,l)*T3dg(i,j,l)(1,0,0)");
  211                  - (t3dg_3(1, 0, 0) * t2_2(1, 0)
  212                     + t3dg_3(1, 0, 1) * t2_2(1, 1)
  213                     + t3dg_3(1, 0, 2) * t2_2(1, 2)),
  214                "T2(k,l)*T3dg(i,j,l)(1,0,1)");
  216                  - (t3dg_3(1, 0, 0) * t2_2(2, 0)
  217                     + t3dg_3(1, 0, 1) * t2_2(2, 1)
  218                     + t3dg_3(1, 0, 2) * t2_2(2, 2)),
  219                "T2(k,l)*T3dg(i,j,l)(1,0,2)");
  221                  - (t3dg_3(1, 1, 0) * t2_2(0, 0)
  222                     + t3dg_3(1, 1, 1) * t2_2(0, 1)
  223                     + t3dg_3(1, 1, 2) * t2_2(0, 2)),
  224                "T2(k,l)*T3dg(i,j,l)(1,1,0)");
  226                  - (t3dg_3(1, 1, 0) * t2_2(1, 0)
  227                     + t3dg_3(1, 1, 1) * t2_2(1, 1)
  228                     + t3dg_3(1, 1, 2) * t2_2(1, 2)),
  229                "T2(k,l)*T3dg(i,j,l)(1,1,1)");
  231                  - (t3dg_3(1, 1, 0) * t2_2(2, 0)
  232                     + t3dg_3(1, 1, 1) * t2_2(2, 1)
  233                     + t3dg_3(1, 1, 2) * t2_2(2, 2)),
  234                "T2(k,l)*T3dg(i,j,l)(1,1,2)");
  236                  - (t3dg_3(1, 2, 0) * t2_2(0, 0)
  237                     + t3dg_3(1, 2, 1) * t2_2(0, 1)
  238                     + t3dg_3(1, 2, 2) * t2_2(0, 2)),
  239                "T2(k,l)*T3dg(i,j,l)(1,2,0)");
  241                  - (t3dg_3(1, 2, 0) * t2_2(1, 0)
  242                     + t3dg_3(1, 2, 1) * t2_2(1, 1)
  243                     + t3dg_3(1, 2, 2) * t2_2(1, 2)),
  244                "T2(k,l)*T3dg(i,j,l)(1,2,1)");
  246                  - (t3dg_3(1, 2, 0) * t2_2(2, 0)
  247                     + t3dg_3(1, 2, 1) * t2_2(2, 1)
  248                     + t3dg_3(1, 2, 2) * t2_2(2, 2)),
  249                "T2(k,l)*T3dg(i,j,l)(1,2,2)");
  251                  - (t3dg_3(2, 0, 0) * t2_2(0, 0)
  252                     + t3dg_3(2, 0, 1) * t2_2(0, 1)
  253                     + t3dg_3(2, 0, 2) * t2_2(0, 2)),
  254                "T2(k,l)*T3dg(i,j,l)(2,0,0)");
  256                  - (t3dg_3(2, 0, 0) * t2_2(1, 0)
  257                     + t3dg_3(2, 0, 1) * t2_2(1, 1)
  258                     + t3dg_3(2, 0, 2) * t2_2(1, 2)),
  259                "T2(k,l)*T3dg(i,j,l)(2,0,1)");
  261                  - (t3dg_3(2, 0, 0) * t2_2(2, 0)
  262                     + t3dg_3(2, 0, 1) * t2_2(2, 1)
  263                     + t3dg_3(2, 0, 2) * t2_2(2, 2)),
  264                "T2(k,l)*T3dg(i,j,l)(2,0,2)");
  266                  - (t3dg_3(2, 1, 0) * t2_2(0, 0)
  267                     + t3dg_3(2, 1, 1) * t2_2(0, 1)
  268                     + t3dg_3(2, 1, 2) * t2_2(0, 2)),
  269                "T2(k,l)*T3dg(i,j,l)(2,1,0)");
  271                  - (t3dg_3(2, 1, 0) * t2_2(1, 0)
  272                     + t3dg_3(2, 1, 1) * t2_2(1, 1)
  273                     + t3dg_3(2, 1, 2) * t2_2(1, 2)),
  274                "T2(k,l)*T3dg(i,j,l)(2,1,1)");
  276                  - (t3dg_3(2, 1, 0) * t2_2(2, 0)
  277                     + t3dg_3(2, 1, 1) * t2_2(2, 1)
  278                     + t3dg_3(2, 1, 2) * t2_2(2, 2)),
  279                "T2(k,l)*T3dg(i,j,l)(2,1,2)");
  281                  - (t3dg_3(2, 2, 0) * t2_2(0, 0)
  282                     + t3dg_3(2, 2, 1) * t2_2(0, 1)
  283                     + t3dg_3(2, 2, 2) * t2_2(0, 2)),
  284                "T2(k,l)*T3dg(i,j,l)(2,2,0)");
  286                  - (t3dg_3(2, 2, 0) * t2_2(1, 0)
  287                     + t3dg_3(2, 2, 1) * t2_2(1, 1)
  288                     + t3dg_3(2, 2, 2) * t2_2(1, 2)),
  289                "T2(k,l)*T3dg(i,j,l)(2,2,1)");
  291                  - (t3dg_3(2, 2, 0) * t2_2(2, 0)
  292                     + t3dg_3(2, 2, 1) * t2_2(2, 1)
  293                     + t3dg_3(2, 2, 2) * t2_2(2, 2)),
  294                "T2(k,l)*T3dg(i,j,l)(2,2,2)");
  295}
FTensor::Index< 'i', SPACE_DIM > i
FTensor::Index< 'l', 3 > l
FTensor::Index< 'j', 3 > j
FTensor::Index< 'k', 3 > k
void test_for_zero(const T &t, const std::string &s)