Geant4 11.4.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
GIDI::FissionFragmentData Class Reference

#include <GIDI.hpp>

Inheritance diagram for GIDI::FissionFragmentData:

Public Member Functions

 FissionFragmentData ()
 FissionFragmentData (Construction::Settings const &a_construction, HAPI::Node const &a_node, SetupInfo &a_setupInfo, PoPI::Database const &a_pops, PoPI::Database const &a_internalPoPs, Styles::Suite const *a_styles)
 ~FissionFragmentData ()
SuitedelayedNeutrons ()
Suite const & delayedNeutrons () const
ComponentfissionEnergyReleases ()
Component const & fissionEnergyReleases () const
bool isDelayedFissionNeutronComplete () const
GUPI::AncestryfindInAncestry3 (std::string const &a_item)
GUPI::Ancestry const * findInAncestry3 (std::string const &a_item) const
void productIDs (std::set< std::string > &a_indices, Transporting::Particles const &a_particles, bool a_transportablesOnly) const
int productMultiplicity (std::string const &a_productID) const
int maximumLegendreOrder (LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, std::string const &a_productID) const
Vector multiGroupQ (LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, bool a_final) const
Vector multiGroupMultiplicity (LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, std::string const &a_productID) const
Matrix multiGroupProductMatrix (LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, Transporting::Particles const &a_particles, std::string const &a_productID, std::size_t a_order) const
Vector multiGroupAverageEnergy (LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, std::string const &a_productID) const
Vector multiGroupAverageMomentum (LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, std::string const &a_productID) const
void delayedNeutronProducts (DelayedNeutronProducts &a_delayedNeutronProducts) const
void incompleteParticles (Transporting::Settings const &a_settings, std::set< std::string > &a_incompleteParticles) const
void continuousEnergyProductData (Transporting::Settings const &a_settings, std::string const &a_particleID, double a_energy, double &a_productEnergy, double &a_productMomentum, double &a_productGain, bool a_ignoreIncompleteParticles) const
void mapContinuousEnergyProductData (Transporting::Settings const &a_settings, std::string const &a_particleID, std::vector< double > const &a_energies, std::size_t a_offset, std::vector< double > &a_productEnergies, std::vector< double > &a_productMomenta, std::vector< double > &a_productGains, bool a_ignoreIncompleteParticles) const
void calculateMultiGroupData (ProtareSingle const *a_protare, Styles::TemperatureInfo const &a_temperatureInfo, std::string const &a_heatedMultiGroupLabel, MultiGroupCalulationInformation const &a_multiGroupCalulationInformation, Functions::XYs1d const &a_crossSectionXYs1d)
void toXMLList (GUPI::WriteInfo &a_writeInfo, std::string const &a_indent="") const
Public Member Functions inherited from GUPI::Ancestry
 Ancestry (std::string const &a_moniker, std::string const &a_attribute="")
virtual ~Ancestry ()
Ancestryoperator= (Ancestry const &a_ancestry)
std::string const & moniker () const
void setMoniker (std::string const &a_moniker)
Ancestryancestor ()
Ancestry const * ancestor () const
void setAncestor (Ancestry *a_ancestor)
std::string attribute () const
Ancestryroot ()
Ancestry const * root () const
bool isChild (Ancestry *a_instance)
bool isParent (Ancestry *a_parent)
bool isRoot () const
AncestryfindInAncestry (std::string const &a_href)
Ancestry const * findInAncestry (std::string const &a_href) const
virtual LUPI_HOST void serialize (LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode)
virtual std::string xlinkItemKey () const
std::string toXLink () const
void printXML () const

Additional Inherited Members

Static Public Member Functions inherited from GUPI::Ancestry
static std::string buildXLinkItemKey (std::string const &a_name, std::string const &a_key)

Detailed Description

This class represents a GNDS fissionFragmentData.

Definition at line 4038 of file GIDI.hpp.

Constructor & Destructor Documentation

◆ FissionFragmentData() [1/2]

GIDI::FissionFragmentData::FissionFragmentData ( )

Default constructor for FissionFragmentData.

Definition at line 22 of file GIDI_fissionFragmentData.cc.

22 :
23 GUPI::Ancestry( GIDI_fissionFragmentDataChars ),
24 m_delayedNeutrons( GIDI_delayedNeutronsChars, GIDI_labelChars ),
25 m_fissionEnergyReleases( GIDI_fissionEnergyReleasesChars, GIDI_labelChars ) {
26
27}
#define GIDI_fissionEnergyReleasesChars
Definition GIDI.hpp:232
#define GIDI_fissionFragmentDataChars
Definition GIDI.hpp:229
#define GIDI_delayedNeutronsChars
Definition GIDI.hpp:230
#define GIDI_labelChars
Definition GIDI.hpp:438

◆ FissionFragmentData() [2/2]

GIDI::FissionFragmentData::FissionFragmentData ( Construction::Settings const & a_construction,
HAPI::Node const & a_node,
SetupInfo & a_setupInfo,
PoPI::Database const & a_pops,
PoPI::Database const & a_internalPoPs,
Styles::Suite const * a_styles )

Constructed from data in a <outputChannel> node.

Parameters
a_construction[in] Used to pass user options to the constructor.
a_node[in] The reaction HAPI::Node to be parsed and used to construct the reaction.
a_setupInfo[in] Information create my the Protare constructor to help in parsing.
a_pops[in] The external PoPI::Database instance used to get particle indices and possibly other particle information.
a_internalPoPs[in] The internal PoPI::Database instance used to get particle indices and possibly other particle information. This is the <PoPs> node under the <reactionSuite> node.
a_styles[in] The <styles> node under the <reactionSuite> node.

Definition at line 41 of file GIDI_fissionFragmentData.cc.

42 :
43 GUPI::Ancestry( a_node.name( ) ),
44 m_delayedNeutrons( a_construction, GIDI_delayedNeutronsChars, GIDI_labelChars, a_node, a_setupInfo, a_pops, a_internalPoPs,
45 parseDelayedNeutronsSuite, a_styles ),
46 m_fissionEnergyReleases( a_construction, GIDI_fissionEnergyReleasesChars, GIDI_labelChars, a_node, a_setupInfo, a_pops, a_internalPoPs,
48
49 m_delayedNeutrons.setAncestor( this );
50 m_fissionEnergyReleases.setAncestor( this );
51
52 for( std::size_t i1 = 0; i1 < m_delayedNeutrons.size( ); ++i1 ) {
53 DelayedNeutron *delayedNeutron = m_delayedNeutrons.get<DelayedNeutron>( i1 );
54
55 delayedNeutron->setDelayedNeutronIndex( static_cast<int>( i1 ) );
56 }
57}
Form * parseFissionEnergyReleasesSuite(Construction::Settings const &a_construction, Suite *parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo, PoPI::Database const &a_pop, PoPI::Database const &a_internalPoPs, std::string const &a_name, Styles::Suite const *a_styles)
Form * parseDelayedNeutronsSuite(Construction::Settings const &a_construction, Suite *parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo, PoPI::Database const &a_pop, PoPI::Database const &a_internalPoPs, std::string const &a_name, Styles::Suite const *a_styles)

◆ ~FissionFragmentData()

GIDI::FissionFragmentData::~FissionFragmentData ( )

Definition at line 62 of file GIDI_fissionFragmentData.cc.

62 {
63
64}

Member Function Documentation

◆ calculateMultiGroupData()

void GIDI::FissionFragmentData::calculateMultiGroupData ( ProtareSingle const * a_protare,
Styles::TemperatureInfo const & a_temperatureInfo,
std::string const & a_heatedMultiGroupLabel,
MultiGroupCalulationInformation const & a_multiGroupCalulationInformation,
Functions::XYs1d const & a_crossSectionXYs1d )

This methods calculates multi-group data for all needed components and adds each component's multi-group with label a_heatedMultiGroupLabel.

Parameters
a_temperatureInfo[in] Specifies the temperature and labels use to lookup the requested data.
a_heatedMultiGroupLabel[in] The label of the style for the multi-group data being added.
a_multiGroupCalulationInformation[in] Store multi-group boundary and flux data used for multi-grouping.
a_crossSectionXYs1d[in[ The cross section weight.

Definition at line 421 of file GIDI_fissionFragmentData.cc.

423 {
424
425 for( std::size_t index = 0; index < m_delayedNeutrons.size( ); ++index ) {
426 DelayedNeutron &delayedNeutrons1 = *m_delayedNeutrons.get<DelayedNeutron>( index );
427
428 delayedNeutrons1.calculateMultiGroupData( a_protare, a_temperatureInfo, a_heatedMultiGroupLabel, a_multiGroupCalulationInformation, a_crossSectionXYs1d );
429 }
430
431 if( ( m_fissionEnergyReleases.size( ) > 0 ) && ( m_fissionEnergyReleases.find( a_heatedMultiGroupLabel ) != m_fissionEnergyReleases.end( ) ) ) {
432 Functions::FissionEnergyRelease const *fissionEnergyRelease = m_fissionEnergyReleases.get<Functions::FissionEnergyRelease>( 0 );
433 Functions::FissionEnergyRelease *multiGroupFissionEnergyRelease = m_fissionEnergyReleases.get<Functions::FissionEnergyRelease>( a_heatedMultiGroupLabel );
434
435 calculate1dMultiGroupFissionEnergyRelease( a_multiGroupCalulationInformation, a_crossSectionXYs1d,
436 fissionEnergyRelease->promptProductKE( ), multiGroupFissionEnergyRelease->promptProductKE( ) );
437 calculate1dMultiGroupFissionEnergyRelease( a_multiGroupCalulationInformation, a_crossSectionXYs1d,
438 fissionEnergyRelease->promptNeutronKE( ), multiGroupFissionEnergyRelease->promptNeutronKE( ) );
439 calculate1dMultiGroupFissionEnergyRelease( a_multiGroupCalulationInformation, a_crossSectionXYs1d,
440 fissionEnergyRelease->delayedNeutronKE( ), multiGroupFissionEnergyRelease->delayedNeutronKE( ) );
441 calculate1dMultiGroupFissionEnergyRelease( a_multiGroupCalulationInformation, a_crossSectionXYs1d,
442 fissionEnergyRelease->promptGammaEnergy( ), multiGroupFissionEnergyRelease->promptGammaEnergy( ) );
443 calculate1dMultiGroupFissionEnergyRelease( a_multiGroupCalulationInformation, a_crossSectionXYs1d,
444 fissionEnergyRelease->delayedGammaEnergy( ), multiGroupFissionEnergyRelease->delayedGammaEnergy( ) );
445 calculate1dMultiGroupFissionEnergyRelease( a_multiGroupCalulationInformation, a_crossSectionXYs1d,
446 fissionEnergyRelease->delayedBetaEnergy( ), multiGroupFissionEnergyRelease->delayedBetaEnergy( ) );
447 calculate1dMultiGroupFissionEnergyRelease( a_multiGroupCalulationInformation, a_crossSectionXYs1d,
448 fissionEnergyRelease->neutrinoEnergy( ), multiGroupFissionEnergyRelease->neutrinoEnergy( ) );
449 calculate1dMultiGroupFissionEnergyRelease( a_multiGroupCalulationInformation, a_crossSectionXYs1d,
450 fissionEnergyRelease->nonNeutrinoEnergy( ), multiGroupFissionEnergyRelease->nonNeutrinoEnergy( ) );
451 calculate1dMultiGroupFissionEnergyRelease( a_multiGroupCalulationInformation, a_crossSectionXYs1d,
452 fissionEnergyRelease->totalEnergy( ), multiGroupFissionEnergyRelease->totalEnergy( ) );
453 }
454}
void calculate1dMultiGroupFissionEnergyRelease(MultiGroupCalulationInformation const &a_multiGroupCalulationInformation, Functions::XYs1d const &a_weight, Functions::Function1dForm const *a_evaluated, Functions::Function1dForm *a_gridded1d)

◆ continuousEnergyProductData()

void GIDI::FissionFragmentData::continuousEnergyProductData ( Transporting::Settings const & a_settings,
std::string const & a_particleID,
double a_energy,
double & a_productEnergy,
double & a_productMomentum,
double & a_productGain,
bool a_ignoreIncompleteParticles ) const

Returns, via arguments, the average energy and momentum, and gain for product with particle id a_particleID.

Parameters
a_settings[in] Specifies the requested label.
a_particleID[in] The particle id of the product.
a_energy[in] The energy of the projectile.
a_productEnergy[in] The average energy of the product.
a_productMomentum[in] The average momentum of the product.
a_productGain[in] The gain of the product.
a_ignoreIncompleteParticles[in] If true, incomplete particles are ignore, otherwise a throw is executed.

Definition at line 372 of file GIDI_fissionFragmentData.cc.

373 {
374
375 if( a_settings.delayedNeutrons( ) != Transporting::DelayedNeutrons::on ) return;
376
377 for( std::size_t index = 0; index < m_delayedNeutrons.size( ); ++index ) {
378 DelayedNeutron const &delayedNeutrons1 = *m_delayedNeutrons.get<DelayedNeutron>( index );
379
380 delayedNeutrons1.continuousEnergyProductData( a_settings, a_particleID, a_energy, a_productEnergy, a_productMomentum, a_productGain,
381 a_ignoreIncompleteParticles );
382 }
383}

◆ delayedNeutronProducts()

void GIDI::FissionFragmentData::delayedNeutronProducts ( DelayedNeutronProducts & a_delayedNeutronProducts) const

Appends a DelayedNeutronProduct instance for each delayed neutron in m_delayedNeutrons.

Parameters
a_delayedNeutronProducts[in] The list to append the delayed neutrons to.

Definition at line 332 of file GIDI_fissionFragmentData.cc.

332 {
333
334 for( std::size_t index = 0; index < m_delayedNeutrons.size( ); ++index ) {
335 DelayedNeutron const &delayedNeutron = *m_delayedNeutrons.get<DelayedNeutron>( index );
336
337 PhysicalQuantity rate = *delayedNeutron.rate( ).get<PhysicalQuantity>( 0 );
338 a_delayedNeutronProducts.push_back( DelayedNeutronProduct( delayedNeutron.delayedNeutronIndex( ), rate, &delayedNeutron.product( ) ) );
339 }
340}

◆ delayedNeutrons() [1/2]

Suite & GIDI::FissionFragmentData::delayedNeutrons ( )
inline

Definition at line 4049 of file GIDI.hpp.

4049{ return( m_delayedNeutrons ); }

◆ delayedNeutrons() [2/2]

Suite const & GIDI::FissionFragmentData::delayedNeutrons ( ) const
inline

Definition at line 4050 of file GIDI.hpp.

4050{ return( m_delayedNeutrons ); }

◆ findInAncestry3() [1/2]

GUPI::Ancestry * GIDI::FissionFragmentData::findInAncestry3 ( std::string const & a_item)
virtual

Used by GUPI::Ancestry to tranverse GNDS nodes. This method returns a pointer to a derived class' a_item member or nullptr if none exists.

Parameters
a_item[in] The name of the class member whose pointer is to be return.
Returns
The pointer to the class member or nullptr if class does not have a member named a_item.

Implements GUPI::Ancestry.

Definition at line 91 of file GIDI_fissionFragmentData.cc.

91 {
92
93 if( a_item == GIDI_delayedNeutronsChars ) return( &m_delayedNeutrons );
94 if( a_item == GIDI_fissionEnergyReleasesChars ) return( &m_fissionEnergyReleases );
95
96 return( nullptr );
97}

◆ findInAncestry3() [2/2]

GUPI::Ancestry const * GIDI::FissionFragmentData::findInAncestry3 ( std::string const & a_item) const
virtual

Used by GUPI::Ancestry to tranverse GNDS nodes. This method returns a pointer to a derived class' a_item member or nullptr if none exists.

Parameters
a_item[in] The name of the class member whose pointer is to be return.
Returns
The pointer to the class member or nullptr if class does not have a member named a_item.

Implements GUPI::Ancestry.

Definition at line 106 of file GIDI_fissionFragmentData.cc.

106 {
107
108 if( a_item == GIDI_delayedNeutronsChars ) return( &m_delayedNeutrons );
109 if( a_item == GIDI_fissionEnergyReleasesChars ) return( &m_fissionEnergyReleases );
110
111 return( nullptr );
112}

◆ fissionEnergyReleases() [1/2]

Component & GIDI::FissionFragmentData::fissionEnergyReleases ( )
inline

Definition at line 4051 of file GIDI.hpp.

4051{ return( m_fissionEnergyReleases ); }

◆ fissionEnergyReleases() [2/2]

Component const & GIDI::FissionFragmentData::fissionEnergyReleases ( ) const
inline

Definition at line 4052 of file GIDI.hpp.

4052{ return( m_fissionEnergyReleases ); }

◆ incompleteParticles()

void GIDI::FissionFragmentData::incompleteParticles ( Transporting::Settings const & a_settings,
std::set< std::string > & a_incompleteParticles ) const

Loops over the instances in ** m_delayedNeutrons** calling their incompleteParticles method.

Parameters
a_settings[in] Specifies the requested label.
a_incompleteParticles[out] The list of particles whose completeParticle method returns false.

Definition at line 349 of file GIDI_fissionFragmentData.cc.

349 {
350
351 if( a_settings.delayedNeutrons( ) == Transporting::DelayedNeutrons::on ) {
352 for( std::size_t index = 0; index < m_delayedNeutrons.size( ); ++index ) {
353 DelayedNeutron const &delayedNeutron = *m_delayedNeutrons.get<DelayedNeutron>( index );
354
355 delayedNeutron.incompleteParticles( a_settings, a_incompleteParticles );
356 }
357 }
358}

◆ isDelayedFissionNeutronComplete()

bool GIDI::FissionFragmentData::isDelayedFissionNeutronComplete ( ) const

Returns false* if this has delayed fission neutrons and they are not complete; otherwise, returns **true.

Returns
bool

Definition at line 72 of file GIDI_fissionFragmentData.cc.

72 {
73
74 for( std::size_t index = 0; index < m_delayedNeutrons.size( ); ++index ) {
75 DelayedNeutron const &delayedNeutrons1 = *m_delayedNeutrons.get<DelayedNeutron>( index );
76
77 Product const &product = delayedNeutrons1.product( );
78 if( !product.isDelayedFissionNeutronComplete( true ) ) return( false );
79 }
80
81 return( true );
82}

◆ mapContinuousEnergyProductData()

void GIDI::FissionFragmentData::mapContinuousEnergyProductData ( Transporting::Settings const & a_settings,
std::string const & a_particleID,
std::vector< double > const & a_energies,
std::size_t a_offset,
std::vector< double > & a_productEnergies,
std::vector< double > & a_productMomenta,
std::vector< double > & a_productGains,
bool a_ignoreIncompleteParticles ) const

Modifies the average product energies, momenta and gains for product with particle id a_particleID.

Parameters
a_settings[in] Specifies user options.
a_particleID[in] The particle id of the product.
a_energies[in] The vector of energies to map the data to.
a_offset[in] The index of the first energy whose data are to be added to the vectors.
a_productEnergies[out] The vector of average energies of the product.
a_productMomenta[out] The vector of average momenta of the product.
a_productGains[out] The vector of gain of the product.
a_ignoreIncompleteParticles[in] If true, incomplete particles are ignore, otherwise a throw is executed.

Definition at line 398 of file GIDI_fissionFragmentData.cc.

400 {
401
402 if( a_settings.delayedNeutrons( ) != Transporting::DelayedNeutrons::on ) return;
403
404 for( std::size_t index = 0; index < m_delayedNeutrons.size( ); ++index ) {
405 DelayedNeutron const &delayedNeutrons1 = *m_delayedNeutrons.get<DelayedNeutron>( index );
406
407 delayedNeutrons1.mapContinuousEnergyProductData( a_settings, a_particleID, a_energies, a_offset, a_productEnergies, a_productMomenta,
408 a_productGains, a_ignoreIncompleteParticles );
409 }
410}

◆ maximumLegendreOrder()

int GIDI::FissionFragmentData::maximumLegendreOrder ( LUPI::StatusMessageReporting & a_smr,
Transporting::MG const & a_settings,
Styles::TemperatureInfo const & a_temperatureInfo,
std::string const & a_productID ) const

Determines the maximum Legredre order present in the multi-group transfer matrix for the specified products of this output channel.

Parameters
a_smr[Out] If errors are not to be thrown, then the error is reported via this instance.
a_settings[in] Specifies the requested label.
a_temperatureInfo[in] Specifies the temperature and labels use to lookup the requested data.
a_productID[in] Particle id of the requested product.
Returns
The maximum Legredre order. If no transfer matrix data are present for the requested product, -1 is returned.

Definition at line 166 of file GIDI_fissionFragmentData.cc.

167 {
168
169 int _maximumLegendreOrder = -1;
170
171 if( a_settings.delayedNeutrons( ) == Transporting::DelayedNeutrons::on ) {
172 for( std::size_t index = 0; index < m_delayedNeutrons.size( ); ++index ) {
173 DelayedNeutron const &delayedNeutrons1 = *m_delayedNeutrons.get<DelayedNeutron>( index );
174 int r_maximumLegendreOrder = delayedNeutrons1.maximumLegendreOrder( a_smr, a_settings, a_temperatureInfo, a_productID );
175
176 if( r_maximumLegendreOrder > _maximumLegendreOrder ) _maximumLegendreOrder = r_maximumLegendreOrder;
177 }
178 }
179
180 return( _maximumLegendreOrder );
181}

◆ multiGroupAverageEnergy()

Vector GIDI::FissionFragmentData::multiGroupAverageEnergy ( LUPI::StatusMessageReporting & a_smr,
Transporting::MG const & a_settings,
Styles::TemperatureInfo const & a_temperatureInfo,
std::string const & a_productID ) const

Returns the sum of the multi-group, average energy for the requested label for the requested product. This is a cross section weighted average energy.

Parameters
a_smr[Out] If errors are not to be thrown, then the error is reported via this instance.
a_settings[in] Specifies the requested label.
a_temperatureInfo[in] Specifies the temperature and labels use to lookup the requested data.
a_productID[in] Particle id for the requested product.
Returns
The requested multi-group average energy as a GIDI::Vector.

Definition at line 283 of file GIDI_fissionFragmentData.cc.

284 {
285
286 Vector vector( 0 );
287
288 if( a_settings.delayedNeutrons( ) != Transporting::DelayedNeutrons::on ) return( vector );
289
290 for( std::size_t index = 0; index < m_delayedNeutrons.size( ); ++index ) {
291 DelayedNeutron const &delayedNeutrons1 = *m_delayedNeutrons.get<DelayedNeutron>( index );
292
293 vector += delayedNeutrons1.multiGroupAverageEnergy( a_smr, a_settings, a_temperatureInfo, a_productID );
294 }
295
296 return( vector );
297}

◆ multiGroupAverageMomentum()

Vector GIDI::FissionFragmentData::multiGroupAverageMomentum ( LUPI::StatusMessageReporting & a_smr,
Transporting::MG const & a_settings,
Styles::TemperatureInfo const & a_temperatureInfo,
std::string const & a_productID ) const

Returns the sum of the multi-group, average momentum for the requested label for the requested product. This is a cross section weighted average momentum.

Parameters
a_smr[Out] If errors are not to be thrown, then the error is reported via this instance.
a_settings[in] Specifies the requested label.
a_temperatureInfo[in] Specifies the temperature and labels use to lookup the requested data.
a_productID[in] Particle id for the requested product.
Returns
The requested multi-group average momentum as a GIDI::Vector.

Definition at line 310 of file GIDI_fissionFragmentData.cc.

311 {
312
313 Vector vector( 0 );
314
315 if( a_settings.delayedNeutrons( ) != Transporting::DelayedNeutrons::on ) return( vector );
316
317 for( std::size_t index = 0; index < m_delayedNeutrons.size( ); ++index ) {
318 DelayedNeutron const &delayedNeutrons1 = *m_delayedNeutrons.get<DelayedNeutron>( index );
319
320 vector += delayedNeutrons1.multiGroupAverageMomentum( a_smr, a_settings, a_temperatureInfo, a_productID );
321 }
322
323 return( vector );
324}

◆ multiGroupMultiplicity()

Vector GIDI::FissionFragmentData::multiGroupMultiplicity ( LUPI::StatusMessageReporting & a_smr,
Transporting::MG const & a_settings,
Styles::TemperatureInfo const & a_temperatureInfo,
std::string const & a_productID ) const

Returns the sum of the multi-group multiplicity for the requested label for the request product of this output channel. This is a cross section weighted multiplicity.

Parameters
a_smr[Out] If errors are not to be thrown, then the error is reported via this instance.
a_settings[in] Specifies the requested label.
a_temperatureInfo[in] Specifies the temperature and labels use to lookup the requested data.
a_productID[in] Particle id for the requested product.
Returns
The requested multi-group multiplicity as a GIDI::Vector.

Definition at line 195 of file GIDI_fissionFragmentData.cc.

196 {
197
198 Vector vector( 0 );
199
200 if( a_settings.delayedNeutrons( ) != Transporting::DelayedNeutrons::on ) return( vector );
201
202 for( std::size_t index = 0; index < m_delayedNeutrons.size( ); ++index ) {
203 DelayedNeutron const &delayedNeutrons1 = *m_delayedNeutrons.get<DelayedNeutron>( index );
204
205 vector += delayedNeutrons1.multiGroupMultiplicity( a_smr, a_settings, a_temperatureInfo, a_productID );
206 }
207
208 return( vector );
209}

◆ multiGroupProductMatrix()

Matrix GIDI::FissionFragmentData::multiGroupProductMatrix ( LUPI::StatusMessageReporting & a_smr,
Transporting::MG const & a_settings,
Styles::TemperatureInfo const & a_temperatureInfo,
Transporting::Particles const & a_particles,
std::string const & a_productID,
std::size_t a_order ) const

Returns the multi-group, product matrix for the requested label for the requested product index for the requested Legendre order. If no data are found, an empty GIDI::Matrix is returned.

Parameters
a_smr[Out] If errors are not to be thrown, then the error is reported via this instance.
a_settings[in] Specifies the requested label and if delayed neutrons should be included.
a_temperatureInfo[in] Specifies the temperature and labels use to lookup the requested data.
a_particles[in] The list of particles to be transported.
a_productID[in] Particle id for the requested product.
a_order[in] Requested product matrix, Legendre order.
Returns
The requested multi-group product matrix as a GIDI::Matrix.

Definition at line 255 of file GIDI_fissionFragmentData.cc.

257 {
258
259 Matrix matrix( 0, 0 );
260
261 if( a_settings.delayedNeutrons( ) != Transporting::DelayedNeutrons::on ) return( matrix );
262
263 for( std::size_t index = 0; index < m_delayedNeutrons.size( ); ++index ) {
264 DelayedNeutron const &delayedNeutrons1 = *m_delayedNeutrons.get<DelayedNeutron>( index );
265
266 matrix += delayedNeutrons1.multiGroupProductMatrix( a_smr, a_settings, a_temperatureInfo, a_particles, a_productID, a_order );
267 }
268
269 return( matrix );
270}

◆ multiGroupQ()

Vector GIDI::FissionFragmentData::multiGroupQ ( LUPI::StatusMessageReporting & a_smr,
Transporting::MG const & a_settings,
Styles::TemperatureInfo const & a_temperatureInfo,
bool a_final ) const

Returns the sum of the multi-group, Q for the requested label for the this output channel. This is a cross section weighted Q. If a_final is false, only the Q for the output channels directly under each reaction is summed. Otherwise, the Q for all output channels summed, including output channels for each products.

Parameters
a_smr[Out] If errors are not to be thrown, then the error is reported via this instance.
a_settings[in] Specifies the requested label.
a_temperatureInfo[in] Specifies the temperature and labels use to lookup the requested data.
a_final[in] If true, the Q is calculated for all output channels, including those for products.
Returns
The requested multi-group Q as a GIDI::Vector.

Definition at line 224 of file GIDI_fissionFragmentData.cc.

225 {
226
227 Vector vector( 0 );
228
229 if( a_settings.delayedNeutrons( ) != Transporting::DelayedNeutrons::on ) return( vector );
230
231 if( m_fissionEnergyReleases.size( ) == 0 ) return( vector );
232
233 Functions::FissionEnergyRelease const *form = dynamic_cast<Functions::FissionEnergyRelease const *>( a_settings.form(
234 a_smr, m_fissionEnergyReleases, a_temperatureInfo, "Q-value" ) );
235
236 if( form != nullptr ) vector += form->multiGroupQ( a_smr, a_settings, a_temperatureInfo );
237
238 return( vector );
239}

◆ productIDs()

void GIDI::FissionFragmentData::productIDs ( std::set< std::string > & a_indices,
Transporting::Particles const & a_particles,
bool a_transportablesOnly ) const

Insert a std::set with the products id and any product in in its output channel. If a_transportablesOnly is true, only transportable product indices are return.

Parameters
a_indices[out] The unique list of product indices.
a_particles[in] The list of particles to be transported.
a_transportablesOnly[in] If true, only transportable product indices are added in the list.

Definition at line 123 of file GIDI_fissionFragmentData.cc.

123 {
124
125 for( std::size_t index = 0; index < m_delayedNeutrons.size( ); ++index ) {
126 DelayedNeutron const &delayedNeutrons1 = *m_delayedNeutrons.get<DelayedNeutron>( index );
127
128 delayedNeutrons1.productIDs( a_indices, a_particles, a_transportablesOnly );
129 }
130}

◆ productMultiplicity()

int GIDI::FissionFragmentData::productMultiplicity ( std::string const & a_productID) const

Returns the product multiplicity (e.g., 0, 1, 2, ...) or -1 if energy dependent or not an integer for particle with id a_productID.

Parameters
a_productID;[in] The id of the requested particle.
Returns
The multiplicity for the requested particle.

Definition at line 140 of file GIDI_fissionFragmentData.cc.

140 {
141
142 int total_multiplicity = 0;
143
144 for( std::size_t index = 0; index < m_delayedNeutrons.size( ); ++index ) {
145 DelayedNeutron const &delayedNeutrons1 = *m_delayedNeutrons.get<DelayedNeutron>( index );
146
147 int multiplicity = delayedNeutrons1.productMultiplicity( a_productID );
148 if( multiplicity < 0 ) return( -1 );
149 total_multiplicity += multiplicity;
150 }
151
152 return( total_multiplicity );
153}

◆ toXMLList()

void GIDI::FissionFragmentData::toXMLList ( GUPI::WriteInfo & a_writeInfo,
std::string const & a_indent = "" ) const
virtual

Fills the argument a_writeInfo with the XML lines that represent this. Recursively enters each sub-node.

Parameters
a_writeInfo[in/out] Instance containing incremental indentation and other information and stores the appended lines.
a_indent[in] The amount to indent this node.

Reimplemented from GUPI::Ancestry.

Definition at line 463 of file GIDI_fissionFragmentData.cc.

463 {
464
465 std::string indent2 = a_writeInfo.incrementalIndent( a_indent );
466
467 if( moniker( ) == "" ) return;
468 if( ( m_delayedNeutrons.size( ) == 0 ) && ( m_fissionEnergyReleases.size( ) == 0 ) ) return;
469 a_writeInfo.addNodeStarter( a_indent, moniker( ), "" );
470 m_delayedNeutrons.toXMLList( a_writeInfo, indent2 );
471 m_fissionEnergyReleases.toXMLList( a_writeInfo, indent2 );
472 a_writeInfo.addNodeEnder( moniker( ) );
473}
std::string const & moniker() const
Definition GUPI.hpp:102
void addNodeEnder(std::string const &a_moniker)
Definition GUPI.hpp:59
std::string incrementalIndent(std::string const &indent)
Definition GUPI.hpp:52
void addNodeStarter(std::string const &indent, std::string const &a_moniker, std::string const &a_attributes="")
Definition GUPI.hpp:55

The documentation for this class was generated from the following files: