31 #include "autodiff/forward/dual/dual.hpp"
32 #include "unsupported/Eigen/CXX11/Tensor"
34 #include <Fastor/Fastor.h>
39 bool checkIfEqual(
const double a,
const double b,
const double tol = 1e-15 );
41 bool checkIfEqual(
const autodiff::dual a,
const autodiff::dual b,
const double tol = 1e-15 );
43 bool checkIfEqual(
const std::complex< double > a,
const std::complex< double > b,
const double tol = 1e-15 );
48 template <
typename T >
50 const Eigen::Matrix< T, -1, -1 >& b,
51 const double tol = 1e-15 )
53 if ( a.rows() != b.rows() || a.cols() != b.cols() ) {
56 for (
int i = 0;
i < a.rows();
i++ ) {
57 for (
int j = 0;
j < a.cols();
j++ ) {
60 std::cout <<
" -> HINT: a(" <<
i <<
"," <<
j <<
") = " <<
getString( a(
i,
j ) ) <<
" != b(" <<
i <<
","
69 template <
typename T,
long int... Rest >
70 bool checkIfEqual(
const Eigen::TensorFixedSize< T, Eigen::Sizes< Rest... > >& a,
71 const Eigen::TensorFixedSize< T, Eigen::Sizes< Rest... > >& b,
72 const double tol = 1e-15 )
74 const T* a_data = a.data();
75 const T* b_data = b.data();
77 for (
int i = 0;
i < a.size();
i++ ) {
80 std::cout <<
" -> HINT: a(" <<
i <<
") = " <<
getString( a_data[
i] ) <<
" != b(" <<
i
81 <<
") =" <<
getString( b_data[
i] ) << std::endl;
88 template <
typename T,
size_t... Rest >
90 const Fastor::Tensor< T, Rest... >& b,
91 const double tol = 1e-15 )
93 const T* a_data = a.data();
94 const T* b_data = b.data();
96 for (
size_t i = 0;
i < a.size();
i++ ) {
99 std::cout <<
" -> HINT: a(" <<
i <<
") = " <<
getString( a_data[
i] ) <<
" != b(" <<
i
100 <<
") =" <<
getString( b_data[
i] ) << std::endl;
115 Eigen::Matrix< double, 1, 2 > pt;
116 Eigen::Matrix< double, N, 2 > pts;
119 for (
int i1 = 1; i1 <=
N; i1++ ) {
120 theta = acos( -( i1 - 1. ) /
N );
123 pts.row( i1 - 1 ) = Eigen::Vector2d(
phi, theta );
131 double* dStress_dStrain,
132 const double* dStrain,
133 const double* timeOld,
136 const double stressTol = 1e-15,
137 const double stiffnessTol = 1e-15 );