36 #ifdef ANTIOCH_HAVE_EIGEN
37 #include "Eigen/Dense"
40 #ifdef ANTIOCH_HAVE_METAPHYSICL
41 #include "metaphysicl/numberarray.h"
44 #ifdef ANTIOCH_HAVE_VEXCL
45 #include "vexcl/vexcl.hpp"
67 #ifdef ANTIOCH_HAVE_GRVY
70 GRVY::GRVY_Timer_Class gt;
74 template <
typename Scalar,
typename PairScalars>
76 const Scalar tol,
const std::string& testname )
82 const PairScalars rel_error = abs( (mu - mu_exact)/mu_exact);
86 std::cerr <<
"Error: Mismatch in viscosity" << std::endl
87 <<
"mu(T) = (" << mu[0] <<
',' << mu[1] <<
')' << std::endl
88 <<
"mu_exact = (" << mu_exact[0] <<
',' << mu_exact[1] <<
')' << std::endl
89 <<
"rel_error = (" << rel_error[0] <<
',' << rel_error[1] <<
')' << std::endl
90 <<
"tol = " << tol << std::endl;
97 template <
typename PairScalars>
98 int vectester(
const PairScalars& example,
const std::string& testname)
102 const Scalar a = 3.14e-3L;
103 const Scalar b = 2.71e-2L;
104 const Scalar c = 42.0e-5L;
108 std::cout << mu << std::endl;
110 PairScalars T = example;
111 PairScalars mu_exact = example;
112 PairScalars mu_exact2 = example;
114 for (
unsigned int tuple=0; tuple != ANTIOCH_N_TUPLES; ++tuple)
116 T[2*tuple] = 1521.2L;
117 T[2*tuple+1] = 1621.2L;
120 mu_exact[2*tuple] = 0.1444222341677025337305172031086891L;
121 mu_exact[2*tuple+1] = 0.1450979382180072302532592937776388L;
123 mu_exact2[2*tuple] = .1221724955488799960527696821225472L;
124 mu_exact2[2*tuple+1] = .1224428450807678499433510473203746L;
129 const Scalar tol = std::numeric_limits<Scalar>::epsilon() * 2;
131 #ifdef ANTIOCH_HAVE_GRVY
132 gt.BeginTimer(testname);
135 const PairScalars mu_T = mu(T);
137 #ifdef ANTIOCH_HAVE_GRVY
138 gt.EndTimer(testname);
143 const Scalar a2 = 1e-3L;
144 const Scalar b2 = 2e-2L;
145 const Scalar c2 = 3e-5L;
149 #ifdef ANTIOCH_HAVE_GRVY
150 gt.BeginTimer(testname);
153 const PairScalars mu2_T = mu(T);
155 #ifdef ANTIOCH_HAVE_GRVY
156 gt.EndTimer(testname);
168 returnval = returnval ||
169 vectester (std::valarray<float>(2*ANTIOCH_N_TUPLES),
"valarray<float>");
170 returnval = returnval ||
171 vectester (std::valarray<double>(2*ANTIOCH_N_TUPLES),
"valarray<double>");
172 returnval = returnval ||
173 vectester (std::valarray<long double>(2*ANTIOCH_N_TUPLES),
"valarray<ld>");
174 #ifdef ANTIOCH_HAVE_EIGEN
175 returnval = returnval ||
176 vectester (Eigen::Array<float, 2*ANTIOCH_N_TUPLES, 1>(),
"Eigen::ArrayXf");
177 returnval = returnval ||
178 vectester (Eigen::Array<double, 2*ANTIOCH_N_TUPLES, 1>(),
"Eigen::ArrayXd");
179 returnval = returnval ||
180 vectester (Eigen::Array<long double, 2*ANTIOCH_N_TUPLES, 1>(),
"Eigen::ArrayXld");
182 #ifdef ANTIOCH_HAVE_METAPHYSICL
183 returnval = returnval ||
184 vectester (MetaPhysicL::NumberArray<2*ANTIOCH_N_TUPLES, float> (0),
"NumberArray<float>");
185 returnval = returnval ||
186 vectester (MetaPhysicL::NumberArray<2*ANTIOCH_N_TUPLES, double> (0),
"NumberArray<double>");
187 returnval = returnval ||
188 vectester (MetaPhysicL::NumberArray<2*ANTIOCH_N_TUPLES, long double> (0),
"NumberArray<ld>");
190 #ifdef ANTIOCH_HAVE_VEXCL
191 vex::Context ctx_f (vex::Filter::All);
193 returnval = returnval ||
194 vectester (vex::vector<float> (ctx_f, 2*ANTIOCH_N_TUPLES),
"vex::vector<float>");
196 vex::Context ctx_d (vex::Filter::DoublePrecision);
198 returnval = returnval ||
199 vectester (vex::vector<double> (ctx_d, 2*ANTIOCH_N_TUPLES),
"vex::vector<double>");
202 #ifdef ANTIOCH_HAVE_GRVY
Antioch::enable_if_c< is_eigen< T >::value, typename value_type< T >::type >::type max(const T &in)
int test_viscosity(const PairScalars mu, const PairScalars mu_exact, const Scalar tol, const std::string &testname)
int vectester(const PairScalars &example, const std::string &testname)
void reset_coeffs(const CoeffType a, const CoeffType b, const CoeffType c)