tstStateInfo.cpp

./Core/dc/tests/tstStateInfo.cpp

#include <cstdlib>
#include <fstream>
#include <iomanip>
#include <iostream>
#include "Nemesis/gtest/nemesis_gtest.hh"
#include "Nemesis/harness/DBC.hh"
#include "Origen/Core/config.h"
using namespace Origen;
TEST( StateInfo, Accumulate )
{
StateInfo def;
double seven_days = 60 * 60 * 24 * 7;
def.set_time( seven_days );
def.set_power( 20 ); // MW
def.set_flux( 1e14 ); // n/cm2-s
EXPECT_FLOAT_EQ( seven_days, def.time() );
EXPECT_FLOAT_EQ( 20, def.power() );
EXPECT_FLOAT_EQ( 1e14, def.flux() );
def.set_energy( 20 * 7 ); // 7*20 MWd
def.set_fluence( 1e14 * seven_days ); //
EXPECT_FLOAT_EQ( 140, def.energy() );
EXPECT_FLOAT_EQ( 1e14 * seven_days, def.fluence() );
StateInfo def2 = def;
// with same weights
double volume = 1.0;
double previous_volume = 1.0;
def2.accumulate_definition( def, volume, previous_volume );
// unchanged for time
EXPECT_FLOAT_EQ( seven_days, def2.time() );
// for power, energy
// def2 = def + def2
EXPECT_FLOAT_EQ( 2 * 20, def2.power() );
EXPECT_FLOAT_EQ( 2 * 140, def2.energy() );
// for flux, fluence
// def2 = ( volume*def + previous_volume*def2 )/(volume+previous_volume)
EXPECT_FLOAT_EQ( 1e14, def2.flux() );
EXPECT_FLOAT_EQ( 1e14 * seven_days, def2.fluence() );
// with different weights
volume = 0.6;
previous_volume = 1.4;
def.set_power( 10 );
def.set_flux( 1e13 );
def2.accumulate_definition( def, volume, previous_volume );
// unchanged for time
EXPECT_FLOAT_EQ( seven_days, def2.time() );
// for power, energy
// def2 = def + def2
EXPECT_FLOAT_EQ( 2 * 20 + 10, def2.power() );
EXPECT_FLOAT_EQ( 3 * 140, def2.energy() );
// for flux, fluence
// def2 = ( volume*def + previous_volume*def2 )/(volume+previous_volume)
EXPECT_FLOAT_EQ( 0.7 * 1.0e14 + 0.3 * 1.0e13, def2.flux() );
EXPECT_FLOAT_EQ( 1e14 * seven_days, def2.fluence() );
}