Skip to content

Commit d121def

Browse files
committed
Adding interaction type
1 parent 86c8b9e commit d121def

File tree

7 files changed

+124
-6
lines changed

7 files changed

+124
-6
lines changed

src/dryad/InteractionType.hpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#ifndef NJOY_DRYAD_INTERACTIONTYPE
2+
#define NJOY_DRYAD_INTERACTIONTYPE
3+
4+
// system includes
5+
6+
// other includes
7+
8+
namespace njoy {
9+
namespace dryad {
10+
11+
enum class InteractionType : short {
12+
13+
Atomic = 1,
14+
Nuclear = 2
15+
};
16+
17+
} // dryad namespace
18+
} // njoy namespace
19+
20+
#endif

src/dryad/ProjectileTarget.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
// other includes
88
#include "dryad/type-aliases.hpp"
9+
#include "dryad/InteractionType.hpp"
910
#include "dryad/ParticleID.hpp"
1011
#include "dryad/Reaction.hpp"
1112

@@ -22,6 +23,8 @@ namespace dryad {
2223
ParticleID projectile_id_;
2324
ParticleID target_id_;
2425

26+
InteractionType interaction_;
27+
2528
std::vector< Reaction > reactions_;
2629

2730
bool linearised_;
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#ifndef NJOY_DRYAD_FORMAT_ENDF_CREATEINTERACTIONTYPE
2+
#define NJOY_DRYAD_FORMAT_ENDF_CREATEINTERACTIONTYPE
3+
4+
// system includes
5+
#include <vector>
6+
7+
// other includes
8+
#include "tools/Log.hpp"
9+
#include "dryad/InteractionType.hpp"
10+
11+
namespace njoy {
12+
namespace dryad {
13+
namespace format {
14+
namespace endf {
15+
16+
/**
17+
* @brief Create the interaction type
18+
*/
19+
InteractionType createInteractionType( int sublibrary ) {
20+
21+
switch ( sublibrary ) {
22+
23+
case 0 : return InteractionType::Nuclear;
24+
case 3 : return InteractionType::Atomic;
25+
case 10 : return InteractionType::Nuclear;
26+
case 113 : return InteractionType::Atomic;
27+
case 10010 : return InteractionType::Nuclear;
28+
case 10020 : return InteractionType::Nuclear;
29+
case 10030 : return InteractionType::Nuclear;
30+
case 20030 : return InteractionType::Nuclear;
31+
case 20040 : return InteractionType::Nuclear;
32+
default : {
33+
34+
Log::error( "ENDF sublibrary {} does not define projectile-target data",
35+
sublibrary );
36+
throw std::exception();
37+
}
38+
}
39+
}
40+
41+
} // endf namespace
42+
} // format namespace
43+
} // dryad namespace
44+
} // njoy namespace
45+
46+
#endif

src/dryad/format/endf/createParticleID.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ namespace endf {
2121
switch ( sublibrary ) {
2222

2323
case 0 : return ParticleID( "g" );
24-
case 3 : return ParticleID( "photoatomic" );
24+
case 3 : return ParticleID( "g" );
2525
case 10 : return ParticleID( "n" );
26-
case 113 : return ParticleID( "e" );
26+
case 113 : return ParticleID( "e-" );
2727
case 10010 : return ParticleID( "p" );
2828
case 10020 : return ParticleID( "d" );
2929
case 10030 : return ParticleID( "t" );

src/dryad/format/endf/test/CMakeLists.txt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
add_cpp_test( format.endf.createBoundaries createBoundaries.test.cpp )
2-
add_cpp_test( format.endf.createInterpolant createInterpolant.test.cpp )
3-
add_cpp_test( format.endf.createInterpolants createInterpolants.test.cpp )
4-
add_cpp_test( format.endf.createParticleID createParticleID.test.cpp )
1+
add_cpp_test( format.endf.createBoundaries createBoundaries.test.cpp )
2+
add_cpp_test( format.endf.createInterpolant createInterpolant.test.cpp )
3+
add_cpp_test( format.endf.createInterpolants createInterpolants.test.cpp )
4+
add_cpp_test( format.endf.createParticleID createParticleID.test.cpp )
5+
add_cpp_test( format.endf.createInteractionType createInteractionType.test.cpp )
56

67
add_cpp_test( format.endf.createTabulatedCrossSection createTabulatedCrossSection.test.cpp )
78
add_cpp_test( format.endf.createReaction createReaction.test.cpp )
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
// include Catch2
2+
#include <catch2/catch_test_macros.hpp>
3+
#include <catch2/matchers/catch_matchers_floating_point.hpp>
4+
using Catch::Matchers::WithinRel;
5+
6+
// what we are testing
7+
#include "dryad/format/endf/createInteractionType.hpp"
8+
9+
// other includes
10+
11+
// convenience typedefs
12+
using namespace njoy::dryad;
13+
14+
SCENARIO( "createInteractionType" ) {
15+
16+
GIVEN( "ENDF sublibrary values" ) {
17+
18+
WHEN( "a single sublibrary value is given" ) {
19+
20+
THEN( "it can be converted" ) {
21+
22+
CHECK( InteractionType::Nuclear == format::endf::createInteractionType( 0 ) );
23+
CHECK( InteractionType::Atomic == format::endf::createInteractionType( 3 ) );
24+
CHECK( InteractionType::Nuclear == format::endf::createInteractionType( 10 ) );
25+
CHECK( InteractionType::Atomic == format::endf::createInteractionType( 113 ) );
26+
CHECK( InteractionType::Nuclear == format::endf::createInteractionType( 10010 ) );
27+
CHECK( InteractionType::Nuclear == format::endf::createInteractionType( 10020 ) );
28+
CHECK( InteractionType::Nuclear == format::endf::createInteractionType( 10030 ) );
29+
CHECK( InteractionType::Nuclear == format::endf::createInteractionType( 20030 ) );
30+
CHECK( InteractionType::Nuclear == format::endf::createInteractionType( 20040 ) );
31+
} // THEN
32+
33+
THEN( "an exception is thrown for an unknown or unsupported sublibrary type" ) {
34+
35+
CHECK_THROWS( format::endf::createInteractionType( 1 ) );
36+
CHECK_THROWS( format::endf::createInteractionType( 40090 ) );
37+
} // THEN
38+
} // WHEN
39+
} // GIVEN
40+
} // SCENARIO

src/dryad/format/endf/test/createParticleID.test.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,15 @@ SCENARIO( "createParticleID" ) {
1919

2020
THEN( "it can be converted" ) {
2121

22+
CHECK( ParticleID( "g" ) == format::endf::createParticleID( 0 ) );
23+
CHECK( ParticleID( "g" ) == format::endf::createParticleID( 3 ) );
2224
CHECK( ParticleID( "n" ) == format::endf::createParticleID( 10 ) );
25+
CHECK( ParticleID( "e-" ) == format::endf::createParticleID( 113 ) );
26+
CHECK( ParticleID( "p" ) == format::endf::createParticleID( 10010 ) );
27+
CHECK( ParticleID( "d" ) == format::endf::createParticleID( 10020 ) );
28+
CHECK( ParticleID( "t" ) == format::endf::createParticleID( 10030 ) );
29+
CHECK( ParticleID( "he3" ) == format::endf::createParticleID( 20030 ) );
30+
CHECK( ParticleID( "a" ) == format::endf::createParticleID( 20040 ) );
2331
} // THEN
2432

2533
THEN( "an exception is thrown for an unknown or unsupported sublibrary type" ) {

0 commit comments

Comments
 (0)