19{
20 adtl::setNumDir(6);
23
26
29
30 int dd0 = 0;
31 for(int ii = 0; ii != 2; ii++, dd0++)
32 {
33 a_t1(ii).setValue(t1(ii));
34 for(int kk = 0; kk != 6; kk++)
35 {
36 if(dd0 == kk)
37 {
38 a_t1(ii).setADValue(kk, 1);
39 }
40 else
41 {
42 a_t1(ii).setADValue(kk, 0);
43 }
44 }
45 }
46 for(int ii = 0; ii != 2; ii++)
47 {
48 for(int jj = 0; jj != 2; jj++, dd0++)
49 {
50 a_t2(ii, jj).setValue(t2(ii, jj));
51 for(int kk = 0; kk != 6; kk++)
52 {
53 if(kk == dd0)
54 {
55 a_t2(ii, jj).setADValue(kk, 1);
56 }
57 else
58 {
59 a_t2(ii, jj).setADValue(kk, 0);
60 }
61 }
62 }
63 }
64 for(int ii = 0; ii != 2; ii++)
65 {
66 std::cout << "a_t1 ( " << ii << " ) = " << a_t1(ii) << std::endl;
67 }
68 for(int ii = 0; ii != 2; ii++)
69 {
70 for(int jj = 0; jj != 2; jj++)
71 {
72 std::cout << "a_t1 ( " << ii << "," << jj << " ) = " << a_t2(ii, jj)
73 << std::endl;
74 }
75 }
76
77 adtl::adouble a_t0 = a_t1(
I) * a_t2(
I,
J) * a_t1(
J);
78
79 double t0;
80 t0 = a_t0.getValue();
81 std::cout << "Value: " << t0 << " ( " << a_t0 << " ) " << std::endl;
82
85
87 for(
int ii = 0; ii != 2; ii++,
dd++)
88 {
89 ad_t0_t1(ii) = a_t0.getADValue(dd);
90 }
91 for(int ii = 0; ii != 2; ii++)
92 {
93 for(
int jj = 0; jj != 2; jj++,
dd++)
94 {
95 ad_t0_t2(ii, jj) = a_t0.getADValue(dd);
96 }
97 }
98
99
101
102 std::cout << "Derivatives t0_t1" << std::endl;
103 for(
int ii = 0; ii != 2; ii++,
dd++)
104 {
105 std::cout << ad_t0_t1(ii) << std::endl;
106 if(ad_t0_t1(ii) != 2)
107 {
108 std::cerr << "Wrong result, should be 2" << std::endl;
109 exit(-1);
110 }
111 }
112 std::cout << "Derivatives t0_t2" << std::endl;
113 for(int ii = 0; ii != 2; ii++)
114 {
115 for(
int jj = 0; jj != 2; jj++,
dd++)
116 {
117 std::cout << ad_t0_t2(ii, jj) << " ";
118 if(ad_t0_t2(ii, ii) != 1)
119 {
120 std::cerr << "Wrong result, should be 1" << std::endl;
121 exit(-1);
122 }
123 }
124 std::cout << "\n";
125 }
126
127 return 0;
128}
const Tensor2_symmetric_Expr< const ddTensor0< T, Dim, i, j >, typename promote< T, double >::V, Dim, i, j > dd(const Tensor0< T * > &a, const Index< i, Dim > index1, const Index< j, Dim > index2, const Tensor1< int, Dim > &d_ijk, const Tensor1< double, Dim > &d_xyz)
constexpr IntegrationType I