tstConcentrationConverter.cpp

./Core/dc/tests/tstConcentrationConverter.cpp

#include <cstdlib>
#include <iostream>
#include <string>
#include <vector>
#include "Nemesis/gtest/nemesis_gtest.hh"
#include "Origen/Core/config.h"
using std::vector;
using std::pair;
using namespace Origen;
{
int id = 6012;
// simple mass
EXPECT_FLOAT_EQ( 1000., cv.convert_to( GRAMS, id, KILOGRAMS, 1.0 ) );
EXPECT_FLOAT_EQ( 0.001, cv.convert_to( KILOGRAMS, id, GRAMS, 1.0 ) );
// simple moles
EXPECT_FLOAT_EQ( 12., cv.convert_to( GRAMS, id, MOLES, 1 ) );
EXPECT_FLOAT_EQ( 12., cv.convert_to( GRAMS, id, GATOMS, 1 ) );
// with volume
EXPECT_FLOAT_EQ( 10.2 * 23.,
cv.convert_to( GRAMS, id, GPERCM_3, 10.2, 23. ) );
EXPECT_FLOAT_EQ( 6. * 12. / 2.,
cv.convert_to( GPERCM_3, id, MOLES, 6., 2. ) );
// change id
id = 5010;
EXPECT_FLOAT_EQ( 5., cv.convert_to( GATOMS, id, GRAMS, 50.0 ) );
// number density and density
EXPECT_FLOAT_EQ( 0.6022141,
cv.convert_to( ATOMS_B_CM, id, MOLES, 1.0, 1.0 ) );
EXPECT_FLOAT_EQ( 10.0, cv.convert_to( GPERCM_3, id, MOLES, 1.0, 1.0 ) );
}
{
// get the resource and set it on the converter
int id = 93237;
ASSERT_TRUE( dr->is_present( id ) );
// check that we can't convert without the decay resource
EXPECT_FALSE( cv.convertible_to( CURIES, id, MOLES ) );
EXPECT_FALSE( cv.convertible_to( BECQUERELS, id, MOLES ) );
EXPECT_FALSE( cv.convertible_to( WATTS, id, MOLES ) );
EXPECT_FALSE( cv.convertible_to( GAMWATTS, id, MOLES ) );
EXPECT_FALSE( cv.convertible_to( MEVS, id, MOLES ) );
EXPECT_FALSE( cv.convertible_to( GAMMEVS, id, MOLES ) );
EXPECT_FALSE( cv.convertible_to( AIRM_3, id, MOLES ) );
EXPECT_FALSE( cv.convertible_to( H2OM_3, id, MOLES ) );
// now we can
EXPECT_TRUE( cv.convertible_to( CURIES, id, MOLES ) );
EXPECT_TRUE( cv.convertible_to( BECQUERELS, id, MOLES ) );
EXPECT_TRUE( cv.convertible_to( WATTS, id, MOLES ) );
EXPECT_TRUE( cv.convertible_to( GAMWATTS, id, MOLES ) );
EXPECT_TRUE( cv.convertible_to( MEVS, id, MOLES ) );
EXPECT_TRUE( cv.convertible_to( GAMMEVS, id, MOLES ) );
EXPECT_TRUE( cv.convertible_to( AIRM_3, id, MOLES ) );
EXPECT_TRUE( cv.convertible_to( H2OM_3, id, MOLES ) );
// reference values
double c = 0.16674607;
double b = 6.1696046e+09;
double w = 0.0048875394;
double g = 3.1754833e-05;
double m = 3.0505611e+10;
double v = 1.9819800e+08;
double a = 5.0073898e+12;
double h = 992536.12;
// check the values from the forward
EXPECT_FLOAT_EQ( c, cv.convert_to( CURIES, id, MOLES, 1.0 ) );
EXPECT_FLOAT_EQ( b, cv.convert_to( BECQUERELS, id, MOLES, 1.0 ) );
EXPECT_FLOAT_EQ( w, cv.convert_to( WATTS, id, MOLES, 1.0 ) );
EXPECT_FLOAT_EQ( g, cv.convert_to( GAMWATTS, id, MOLES, 1.0 ) );
EXPECT_FLOAT_EQ( m, cv.convert_to( MEVS, id, MOLES, 1.0 ) );
EXPECT_FLOAT_EQ( v, cv.convert_to( GAMMEVS, id, MOLES, 1.0 ) );
EXPECT_FLOAT_EQ( a, cv.convert_to( AIRM_3, id, MOLES, 1.0 ) );
EXPECT_FLOAT_EQ( h, cv.convert_to( H2OM_3, id, MOLES, 1.0 ) );
// now reverse
EXPECT_FLOAT_EQ( 1.0, cv.convert_to( MOLES, id, CURIES, c ) );
EXPECT_FLOAT_EQ( 1.0, cv.convert_to( MOLES, id, BECQUERELS, b ) );
EXPECT_FLOAT_EQ( 1.0, cv.convert_to( MOLES, id, WATTS, w ) );
EXPECT_FLOAT_EQ( 1.0, cv.convert_to( MOLES, id, GAMWATTS, g ) );
EXPECT_FLOAT_EQ( 1.0, cv.convert_to( MOLES, id, MEVS, m ) );
EXPECT_FLOAT_EQ( 1.0, cv.convert_to( MOLES, id, GAMMEVS, v ) );
EXPECT_FLOAT_EQ( 1.0, cv.convert_to( MOLES, id, AIRM_3, a ) );
EXPECT_FLOAT_EQ( 1.0, cv.convert_to( MOLES, id, H2OM_3, h ) );
}