Skip to content

Commit

Permalink
Adding an enum to restrict keywords for rprod
Browse files Browse the repository at this point in the history
  • Loading branch information
whaeck committed May 28, 2024
1 parent 2f09c32 commit 1ac5236
Show file tree
Hide file tree
Showing 6 changed files with 105 additions and 9 deletions.
3 changes: 3 additions & 0 deletions src/NDItk/MultigroupTable/src/ctor.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ MultigroupTable() :
metadata_(), primary_structure_(),
velocities_(), weights_(), total_(), xs_(), scattering_(),
release_(), primary_heating_(), primary_kerma_(),
product_multiplicities_all_( depletion::ReactionMultiplicityType::All ),
product_multiplicities_few_( depletion::ReactionMultiplicityType::Few ),
product_multiplicities_rmo_( depletion::ReactionMultiplicityType::RMO ),
outgoing_particles_(), outgoing_zaids_(),
outgoing_structure_(), outgoing_production_(),
outgoing_heating_(), outgoing_kerma_() {}
Expand Down
45 changes: 45 additions & 0 deletions src/NDItk/MultigroupTable/src/read.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,51 @@ void read( Iterator& iter, const Iterator& end ) {

readOutgoingProductionMatrix( keyword, iter, end );
}
// reaction product multiplicities: all
else if ( keyword == this->product_multiplicities_all_.keyword() ) {

if ( this->metadata_.numberReactions().has_value() ) {

readRecord( this->product_multiplicities_all_, iter, end,
this->metadata_.numberReactions().value() );
}
else {

Log::error( "Metadata required for the \'\' record was not found", keyword );
Log::info( "Required metadata is missing: number of reactions" );
throw std::exception();
}
}
// reaction product multiplicities: few
else if ( keyword == this->product_multiplicities_few_.keyword() ) {

if ( this->metadata_.numberReactions().has_value() ) {

readRecord( this->product_multiplicities_few_, iter, end,
this->metadata_.numberReactions().value() );
}
else {

Log::error( "Metadata required for the \'\' record was not found", keyword );
Log::info( "Required metadata is missing: number of reactions" );
throw std::exception();
}
}
// reaction product multiplicities: rmo
else if ( keyword == this->product_multiplicities_rmo_.keyword() ) {

if ( this->metadata_.numberReactions().has_value() ) {

readRecord( this->product_multiplicities_rmo_, iter, end,
this->metadata_.numberReactions().value() );
}
else {

Log::error( "Metadata required for the \'\' record was not found", keyword );
Log::info( "Required metadata is missing: number of reactions" );
throw std::exception();
}
}
// unknown or end keyword
else {

Expand Down
2 changes: 2 additions & 0 deletions src/NDItk/depletion/ReactionMultiplicities.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
// other includes
#include "tools/Log.hpp"
#include "NDItk/base/IntegerListRecord.hpp"
#include "NDItk/depletion/ReactionMultiplicityType.hpp"
#include "NDItk/depletion/Multiplicities.hpp"

namespace njoy {
Expand All @@ -27,6 +28,7 @@ class ReactionMultiplicities : protected base::IntegerListRecord {

/* auxiliary functions */

#include "NDItk/depletion/ReactionMultiplicities/src/getPostFix.hpp"
#include "NDItk/depletion/ReactionMultiplicities/src/verify.hpp"
#include "NDItk/depletion/ReactionMultiplicities/src/generateData.hpp"
#include "NDItk/depletion/ReactionMultiplicities/src/generateBlocks.hpp"
Expand Down
33 changes: 24 additions & 9 deletions src/NDItk/depletion/ReactionMultiplicities/src/ctor.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,21 @@
/**
* @brief Private intermediate constructor
*/
ReactionMultiplicities( std::string postfix, std::vector< Multiplicities >&& multiplicities,
ReactionMultiplicities( std::string postfix ) :
IntegerListRecord( base::Keyword( postfix.size() > 1
? std::string( "rprod_" ) + postfix
: std::string( "rprod" ) ) ) {
}

/**
* @brief Private intermediate constructor
*/
ReactionMultiplicities( std::string postfix,
std::vector< Multiplicities >&& multiplicities,
std::size_t reactions ) :
IntegerListRecord( base::Keyword( postfix.size() > 1 ? std::string( "rprod_" ) + postfix
: std::string( "rprod" ) ),
IntegerListRecord( base::Keyword( postfix.size() > 1
? std::string( "rprod_" ) + postfix
: std::string( "rprod" ) ),
generateData( std::move( multiplicities ) ) ),
reactions_( reactions ) {

Expand All @@ -18,29 +29,33 @@ ReactionMultiplicities( std::string postfix, std::vector< Multiplicities >&& mul
/**
* @brief Default constructor
*/
ReactionMultiplicities() : IntegerListRecord( base::Keyword( "rprod" ) ) {}
ReactionMultiplicities() : ReactionMultiplicities( "" ) {}

/**
* @brief Default constructor
*/
ReactionMultiplicities( std::string postfix ) :
IntegerListRecord( base::Keyword( std::string( "rprod_" ) + postfix ) ) {}
ReactionMultiplicities( const ReactionMultiplicityType& type ) :
ReactionMultiplicities( getPostFix( type ) ) {}

/**
* @brief Constructor
*
* @param[in] xs the cross section data
*/
ReactionMultiplicities( std::vector< Multiplicities > multiplicities ) :
ReactionMultiplicities( "", std::move( multiplicities ), multiplicities.size() ) {}
ReactionMultiplicities( "", std::move( multiplicities ),
multiplicities.size() ) {}

/**
* @brief Constructor
*
* @param[in] xs the cross section data
*/
ReactionMultiplicities( std::string postfix, std::vector< Multiplicities > multiplicities ) :
ReactionMultiplicities( postfix, std::move( multiplicities ), multiplicities.size() ) {}
ReactionMultiplicities( const ReactionMultiplicityType& type,
std::vector< Multiplicities > multiplicities ) :
ReactionMultiplicities( getPostFix( type ),
std::move( multiplicities ),
multiplicities.size() ) {}

/**
* @brief Copy constructor
Expand Down
8 changes: 8 additions & 0 deletions src/NDItk/depletion/ReactionMultiplicities/src/getPostFix.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
static std::string getPostFix( const ReactionMultiplicityType& type ) {

return type == ReactionMultiplicityType::All
? std::string( "all" )
: type == ReactionMultiplicityType::Few
? std::string( "few" )
: std::string( "rmo" );
}
23 changes: 23 additions & 0 deletions src/NDItk/depletion/ReactionMultiplicityType.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#ifndef NJOY_NDITK_DEPLETION_REACTIONMULTIPLICITYTYPE
#define NJOY_NDITK_DEPLETION_REACTIONMULTIPLICITYTYPE

// system includes

// other includes

namespace njoy {
namespace NDItk {
namespace depletion {

enum class ReactionMultiplicityType : short {

All = 1,
Few = 2,
RMO = 3 //! @todo change this name to be more understandable
};

} // depletion namespace
} // NDItk namespace
} // njoy namespace

#endif

0 comments on commit 1ac5236

Please sign in to comment.