8                                                               {
   15 
   17  t4ddg_3_1(
i, 
j, 
k, 
l) = t2s_2(
i, 
j) * t2s_3(
k, 
l);
 
   18 
   19  { 
   21    t4ddg_3_2(
i, 
j, 
k, 
l) = t4ddg_3_1(
m, 
n, 
i, 
j) * t4ddg_3_1(
m, 
n, 
k, 
l);
 
   22    t4ddg_3_2(
i, 
j, 
k, 
l) -=
 
   23        (t2s_3(
i, 
j) * t2s_3(
k, 
l)) * (t2s_2(
m, 
n) * t2s_2(
m, 
n));
 
   24    for (int ii = 0; ii != 3; ++ii)
   25      for (int jj = 0; jj != 3; ++jj)
   26        for (int kk = 0; kk != 3; ++kk)
   27          for (int ll = 0; ll != 3; ++ll) {
   28            test_for_zero(t4ddg_3_2(ii, jj, kk, ll), 
"t4ddg_3_2(i, j, k, l)");
 
   29          }
   30  }
   31 
   32  { 
   34    t4ddg_3_2(
i, 
j, 
k, 
l) = t4ddg_3_1(
i, 
j, 
m, 
n) * t4ddg_3_1(
m, 
n, 
k, 
l);
 
   35    t4ddg_3_2(
i, 
j, 
k, 
l) -=
 
   36        (t2s_2(
i, 
j) * t2s_3(
k, 
l)) * (t2s_3(
m, 
n) * t2s_2(
m, 
n));
 
   37    for (int ii = 0; ii != 3; ++ii)
   38      for (int jj = 0; jj != 3; ++jj)
   39        for (int kk = 0; kk != 3; ++kk)
   40          for (int ll = 0; ll != 3; ++ll) {
   41            test_for_zero(t4ddg_3_2(ii, jj, kk, ll), 
"t4ddg_3_2(i, j, k, l)");
 
   42          }
   43  }
   44 
   45  { 
   47    t4ddg_3_2(
i, 
j, 
k, 
l) = t4ddg_3_1(
m, 
n, 
i, 
j) * t4ddg_3_1(
k, 
l, 
m, 
n);
 
   48    t4ddg_3_2(
i, 
j, 
k, 
l) -=
 
   49        (t2s_3(
i, 
j) * t2s_2(
k, 
l)) * (t2s_2(
m, 
n) * t2s_3(
m, 
n));
 
   50    for (int ii = 0; ii != 3; ++ii)
   51      for (int jj = 0; jj != 3; ++jj)
   52        for (int kk = 0; kk != 3; ++kk)
   53          for (int ll = 0; ll != 3; ++ll) {
   54            test_for_zero(t4ddg_3_2(ii, jj, kk, ll), 
"t4ddg_3_2(i, j, k, l)");
 
   55          }
   56  }
   57 
   58  { 
   60    t4ddg_3_2(
i, 
j, 
k, 
l) = t4ddg_3_1(
i, 
j, 
m, 
n) * t4ddg_3_1(
k, 
l, 
m, 
n);
 
   61    t4ddg_3_2(
i, 
j, 
k, 
l) -=
 
   62        (t2s_2(
i, 
j) * t2s_2(
k, 
l)) * (t2s_3(
m, 
n) * t2s_3(
m, 
n));
 
   63    for (int ii = 0; ii != 3; ++ii)
   64      for (int jj = 0; jj != 3; ++jj)
   65        for (int kk = 0; kk != 3; ++kk)
   66          for (int ll = 0; ll != 3; ++ll) {
   67            test_for_zero(t4ddg_3_2(ii, jj, kk, ll), 
"t4ddg_3_2(i, j, k, l)");
 
   68          }
   69  }
   70 
   72  t1_1(0) = 1;
   73  t1_1(1) = 10;
   74  t1_1(2) = 100;
   75 
   76  {
   78    t3dg_3_1(
i, 
j, 
l) = t4ddg_3_1(
i, 
j, 
k, 
l) * t1_1(
k);
 
   79    t3dg_3_2(
i, 
j, 
l) = t2s_2(
i, 
j) * (t2s_3(
k, 
l) * t1_1(
k));
 
   80 
   81    for (int ii = 0; ii != 3; ++ii)
   82      for (int jj = 0; jj != 3; ++jj)
   83        for (int ll = 0; ll != 3; ++ll) {
   85                        "t4ddg_3_1(i, j, k, l) * t1_1(k)(" + to_string(ii) +
   86                            "," + to_string(jj) + "," + to_string(ll) + ")");
   87        }
   88  }
   89 
   90  {
   92    t3ch_3_1(
l, 
j, 
k) = t4ddg_3_1(
i, 
j, 
k, 
l) * t1_1(
i);
 
   93    t3ch_3_2(
i, 
j, 
k) = 0;
 
   94    for (int jj = 0; jj != 3; ++jj)
   95      for (int kk = 0; kk != 3; ++kk)
   96        for (int ll = kk; ll != 3; ++ll) {
   97          auto &
v = t3ch_3_2(jj, kk, ll);
 
   98          for (int ii = 0; ii != 3; ++ii) {
   99            v += (t2s_2(ii, jj) * t1_1(ii)) * t2s_3(kk, ll);
 
  100          }
  101        }
  102 
  103    for (int jj = 0; jj != 3; ++jj)
  104      for (int kk = 0; kk != 3; ++kk)
  105        for (int ll = 0; ll != 3; ++ll) {
  107                        "t4ddg_3_1(i, j, k, l) * t1_1(i)(" + to_string(jj) +
  108                            "," + to_string(kk) + "," + to_string(ll) + ")");
  109        }
  110 
  112   t3ch_3_3(
l, 
i, 
k) = t4ddg_3_1(
i, 
j, 
k, 
l) * t1_1(
j);
 
  113   for (int jj = 0; jj != 3; ++jj)
  114     for (int kk = 0; kk != 3; ++kk)
  115       for (int ll = 0; ll != 3; ++ll) {
  117                       "t4ddg_3_3(i, j, k, l) * t1_1(i)(" + to_string(jj) +
  118                           "," + to_string(kk) + "," + to_string(ll) + ")");
  119       }
  120 
  121  }
  122 
  123 
  124  {
  126    t3ch_3_1(
i, 
j, 
k) = t4ddg_3_1(
i, 
j, 
k, 
l) * t1_1(
l);
 
  127    t3ch_3_2(
i, 
j, 
k) = t4ddg_3_1(
i, 
j, 
l, 
k) * t1_1(
l);;
 
  128 
  129    for (int jj = 0; jj != 3; ++jj)
  130      for (int kk = 0; kk != 3; ++kk)
  131        for (int ll = 0; ll != 3; ++ll) {
  133                        "t4ddg_3_3(i, j, k, l) * t1_1(i)(" + to_string(jj) +
  134                            "," + to_string(kk) + "," + to_string(ll) + ")");
  135        }
  136  }
  137 
  138}
FTensor::Index< 'i', SPACE_DIM > i
const double v
phase velocity of light in medium (cm/ns)
const double n
refractive index of diffusive medium
FTensor::Index< 'l', 3 > l
FTensor::Index< 'j', 3 > j
FTensor::Index< 'k', 3 > k
FTensor::Index< 'm', 3 > m
void test_for_zero(const T &t, const std::string &s)