tstStateInfo.cpp
./Core/dc/tests/tstStateInfo.cpp
#include <cstdlib>
#include <fstream>
#include <iomanip>
#include <iostream>
#include "Origen/Core/dc/FakeFactory.h"
#include "Origen/Core/dc/StateSet.h"
#include "Origen/Core/Definitions.h"
#include "Nemesis/gtest/nemesis_gtest.hh"
#include "Nemesis/harness/DBC.hh"
#include "Origen/Core/fn/print.h"
#include "Origen/Core/config.h"
using namespace Origen;
{
StateInfo def;
double seven_days = 60 * 60 * 24 * 7;
def.set_time( seven_days );
EXPECT_FLOAT_EQ( seven_days, def.time() );
EXPECT_FLOAT_EQ( 20, def.power() );
EXPECT_FLOAT_EQ( 1e14, def.flux() );
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() );
}