tstReactionResourceIO.cpp

./Core/io/tests/tstReactionResourceIO.cpp

#include "Nemesis/gtest/nemesis_gtest.hh"
#include "AmpxLoader/AmpxLoader.h"
#include "InMemoryStdCompLib/InMemoryStdCompLibrary.h"
#include "Origen/Core/TestPaths.h"
#include "ScaleData/Core/StdComp.h"
#include "ScaleData/Core/io/BOFFStdComp.h"
float xs_sum( const AmpxLibrary& nxs, int search_iza, int search_mt )
{
int ng = nxs.getNeutronEnergyBounds()->getSize() - 1;
float sum = 0.0;
int num_ampx_nuclides = nxs.getNumberNuclides();
for( int j = 0; j < num_ampx_nuclides; j++ )
{
LibraryNuclide* ampx_nuclide = nxs.getNuclideAt( j );
int iza = ampx_nuclide->getId();
if( iza != search_iza ) continue;
int num_1dxs = ampx_nuclide->getNumNeutron1dData();
for( int k = 0; k < num_1dxs; k++ )
{
CrossSection1d* xs = ampx_nuclide->getNeutron1dDataAt( k );
int mt = xs->getMt();
bool partial;
int final_isomeric_state, initial_isomeric_state;
ScaleData::Utils::transform_mt(
mt, partial, final_isomeric_state, initial_isomeric_state );
if( mt == search_mt )
{
for( size_t g = 0; g < ng; ++g )
{
sum += xs->getValues()[g];
}
return sum;
}
}
}
return sum;
}
TEST( AmpxLoader, SpotCheck )
{
std::shared_ptr<AmpxLibrary> idnxs;
{
AmpxLoader loader;
bool success =
loader.load( QString( Origen::jeff252_filepath.c_str() ) );
ASSERT_TRUE( success );
idnxs = std::shared_ptr<AmpxLibrary>( loader.getLibrary() );
}
ASSERT_NE( nullptr, idnxs );
EXPECT_FLOAT_EQ( 54352.719, xs_sum( *idnxs, 92235, 18 ) );
EXPECT_FLOAT_EQ( 9367.1338, xs_sum( *idnxs, 92238, 102 ) );
EXPECT_FLOAT_EQ( 0.024841489, xs_sum( *idnxs, 8016, 102 ) );
EXPECT_FLOAT_EQ( 3314.8083, xs_sum( *idnxs, 1076191, 102 ) );
EXPECT_FLOAT_EQ( 0.0067568747, xs_sum( *idnxs, 2003, 102 ) );
}