tstSolver.cpp

./Core/xf/tests/tstSolver.cpp

#include "Nemesis/gtest/nemesis_gtest.hh"
#include "Nemesis/harness/DBC.hh"
#include "ScaleUtils/IO/nprintf.h"
using ScaleUtils::IO::nprintf;
void print_checks( const Origen::Vec_Dbl& n1 )
{
for( size_t i = 0; i < n1.size(); ++i )
{
std::cerr << nprintf(
" EXPECT_FLOAT_EQ(%22.9e,n1[%4d]);\n", n1[i], i );
}
}
TEST( Solver, FakeSolve1 )
{
Origen::Vec_Dbl n0( 10, 0.0 );
n0[5] = 1.0;
slv.solve( n0, 1.0, 1e12, &n1 );
// print_checks(n1);
EXPECT_FLOAT_EQ( 2.430000000e-03, n1[0] );
EXPECT_FLOAT_EQ( 0.000000000e+00, n1[1] );
EXPECT_FLOAT_EQ( 0.000000000e+00, n1[2] );
EXPECT_FLOAT_EQ( 0.000000000e+00, n1[3] );
EXPECT_FLOAT_EQ( 0.000000000e+00, n1[4] );
EXPECT_FLOAT_EQ( 7.000000000e-01, n1[5] );
EXPECT_FLOAT_EQ( 2.100000000e-01, n1[6] );
EXPECT_FLOAT_EQ( 6.300000000e-02, n1[7] );
EXPECT_FLOAT_EQ( 1.890000000e-02, n1[8] );
EXPECT_FLOAT_EQ( 5.670000000e-03, n1[9] );
}
TEST( Solver, FakeSolve2 )
{
// 100 nuclides
size_t n = 100;
Origen::Vec_Dbl n0( n, 0.0 );
for( size_t i = 0; i < n; ++i )
{
n0[i] = i * 3.14e-3 / ( n - i );
}
// 100 time steps
for( size_t j = 0; j < 100; ++j )
{
slv.solve( n0, 60.0, 1e12, &n1 );
n0 = n1;
}
// print_checks(n1);
EXPECT_FLOAT_EQ( 6.351493057e-03, n1[0] );
EXPECT_FLOAT_EQ( 4.725051869e-03, n1[1] );
EXPECT_FLOAT_EQ( 4.935777158e-03, n1[2] );
EXPECT_FLOAT_EQ( 5.158682296e-03, n1[3] );
EXPECT_FLOAT_EQ( 5.394919423e-03, n1[4] );
EXPECT_FLOAT_EQ( 5.645801977e-03, n1[5] );
EXPECT_FLOAT_EQ( 5.912836949e-03, n1[6] );
EXPECT_FLOAT_EQ( 6.197766380e-03, n1[7] );
EXPECT_FLOAT_EQ( 6.502621794e-03, n1[8] );
EXPECT_FLOAT_EQ( 6.829796943e-03, n1[9] );
EXPECT_FLOAT_EQ( 7.182146410e-03, n1[10] );
EXPECT_FLOAT_EQ( 7.563119990e-03, n1[11] );
EXPECT_FLOAT_EQ( 7.976944575e-03, n1[12] );
EXPECT_FLOAT_EQ( 8.428865133e-03, n1[13] );
EXPECT_FLOAT_EQ( 8.925452128e-03, n1[14] );
EXPECT_FLOAT_EQ( 9.474972088e-03, n1[15] );
EXPECT_FLOAT_EQ( 1.008779886e-02, n1[16] );
EXPECT_FLOAT_EQ( 1.077681504e-02, n1[17] );
EXPECT_FLOAT_EQ( 1.155771822e-02, n1[18] );
EXPECT_FLOAT_EQ( 1.244911154e-02, n1[19] );
EXPECT_FLOAT_EQ( 1.347223128e-02, n1[20] );
EXPECT_FLOAT_EQ( 1.465015869e-02, n1[21] );
EXPECT_FLOAT_EQ( 1.600638950e-02, n1[22] );
EXPECT_FLOAT_EQ( 1.756269968e-02, n1[23] );
EXPECT_FLOAT_EQ( 1.933634951e-02, n1[24] );
EXPECT_FLOAT_EQ( 2.133679839e-02, n1[25] );
EXPECT_FLOAT_EQ( 2.356224009e-02, n1[26] );
EXPECT_FLOAT_EQ( 2.599638363e-02, n1[27] );
EXPECT_FLOAT_EQ( 2.860597137e-02, n1[28] );
EXPECT_FLOAT_EQ( 3.133951851e-02, n1[29] );
EXPECT_FLOAT_EQ( 3.412766777e-02, n1[30] );
EXPECT_FLOAT_EQ( 3.688538323e-02, n1[31] );
EXPECT_FLOAT_EQ( 3.951598113e-02, n1[32] );
EXPECT_FLOAT_EQ( 4.191674638e-02, n1[33] );
EXPECT_FLOAT_EQ( 4.398565425e-02, n1[34] );
EXPECT_FLOAT_EQ( 4.562854464e-02, n1[35] );
EXPECT_FLOAT_EQ( 4.676601317e-02, n1[36] );
EXPECT_FLOAT_EQ( 4.733930050e-02, n1[37] );
EXPECT_FLOAT_EQ( 4.731457768e-02, n1[38] );
EXPECT_FLOAT_EQ( 4.668521838e-02, n1[39] );
EXPECT_FLOAT_EQ( 4.547188874e-02, n1[40] );
EXPECT_FLOAT_EQ( 4.372053353e-02, n1[41] );
EXPECT_FLOAT_EQ( 4.149855931e-02, n1[42] );
EXPECT_FLOAT_EQ( 3.888968192e-02, n1[43] );
EXPECT_FLOAT_EQ( 3.598800139e-02, n1[44] );
EXPECT_FLOAT_EQ( 3.289188707e-02, n1[45] );
EXPECT_FLOAT_EQ( 2.969820677e-02, n1[46] );
EXPECT_FLOAT_EQ( 2.649733220e-02, n1[47] );
EXPECT_FLOAT_EQ( 2.336921891e-02, n1[48] );
EXPECT_FLOAT_EQ( 2.038071396e-02, n1[49] );
EXPECT_FLOAT_EQ( 1.758410791e-02, n1[50] );
EXPECT_FLOAT_EQ( 1.501683361e-02, n1[51] );
EXPECT_FLOAT_EQ( 1.270213124e-02, n1[52] );
EXPECT_FLOAT_EQ( 1.065045063e-02, n1[53] );
EXPECT_FLOAT_EQ( 8.861345327e-03, n1[54] );
EXPECT_FLOAT_EQ( 7.325623605e-03, n1[55] );
EXPECT_FLOAT_EQ( 6.027551968e-03, n1[56] );
EXPECT_FLOAT_EQ( 4.946948865e-03, n1[57] );
EXPECT_FLOAT_EQ( 4.061053119e-03, n1[58] );
EXPECT_FLOAT_EQ( 3.346097136e-03, n1[59] );
EXPECT_FLOAT_EQ( 2.778555037e-03, n1[60] );
EXPECT_FLOAT_EQ( 2.336068014e-03, n1[61] );
EXPECT_FLOAT_EQ( 1.998072500e-03, n1[62] );
EXPECT_FLOAT_EQ( 1.746171507e-03, n1[63] );
EXPECT_FLOAT_EQ( 1.564296696e-03, n1[64] );
EXPECT_FLOAT_EQ( 1.438710057e-03, n1[65] );
EXPECT_FLOAT_EQ( 1.357891026e-03, n1[66] );
EXPECT_FLOAT_EQ( 1.312349187e-03, n1[67] );
EXPECT_FLOAT_EQ( 1.294395571e-03, n1[68] );
EXPECT_FLOAT_EQ( 1.297898177e-03, n1[69] );
EXPECT_FLOAT_EQ( 1.318040342e-03, n1[70] );
EXPECT_FLOAT_EQ( 1.351094451e-03, n1[71] );
EXPECT_FLOAT_EQ( 1.394218453e-03, n1[72] );
EXPECT_FLOAT_EQ( 1.445278747e-03, n1[73] );
EXPECT_FLOAT_EQ( 1.502700170e-03, n1[74] );
EXPECT_FLOAT_EQ( 1.565341907e-03, n1[75] );
EXPECT_FLOAT_EQ( 1.632396958e-03, n1[76] );
EXPECT_FLOAT_EQ( 1.703312244e-03, n1[77] );
EXPECT_FLOAT_EQ( 1.777726206e-03, n1[78] );
EXPECT_FLOAT_EQ( 1.855420897e-03, n1[79] );
EXPECT_FLOAT_EQ( 1.936285773e-03, n1[80] );
EXPECT_FLOAT_EQ( 2.020290796e-03, n1[81] );
EXPECT_FLOAT_EQ( 2.107466789e-03, n1[82] );
EXPECT_FLOAT_EQ( 2.197891383e-03, n1[83] );
EXPECT_FLOAT_EQ( 2.291679204e-03, n1[84] );
EXPECT_FLOAT_EQ( 2.388975271e-03, n1[85] );
EXPECT_FLOAT_EQ( 2.489950779e-03, n1[86] );
EXPECT_FLOAT_EQ( 2.594800687e-03, n1[87] );
EXPECT_FLOAT_EQ( 2.703742655e-03, n1[88] );
EXPECT_FLOAT_EQ( 2.817017028e-03, n1[89] );
EXPECT_FLOAT_EQ( 2.934887640e-03, n1[90] );
EXPECT_FLOAT_EQ( 3.057643309e-03, n1[91] );
EXPECT_FLOAT_EQ( 3.185599937e-03, n1[92] );
EXPECT_FLOAT_EQ( 3.319103190e-03, n1[93] );
EXPECT_FLOAT_EQ( 3.458531762e-03, n1[94] );
EXPECT_FLOAT_EQ( 3.604301257e-03, n1[95] );
EXPECT_FLOAT_EQ( 3.756868790e-03, n1[96] );
EXPECT_FLOAT_EQ( 3.916738380e-03, n1[97] );
EXPECT_FLOAT_EQ( 4.084467314e-03, n1[98] );
EXPECT_FLOAT_EQ( 4.260673651e-03, n1[99] );
}