49 m_delayedNeutrons.setAncestor(
this );
50 m_fissionEnergyReleases.setAncestor(
this );
52 for( std::size_t i1 = 0; i1 < m_delayedNeutrons.size( ); ++i1 ) {
74 for( std::size_t index = 0; index < m_delayedNeutrons.size( ); ++index ) {
78 if( !
product.isDelayedFissionNeutronComplete(
true ) )
return(
false );
125 for( std::size_t index = 0; index < m_delayedNeutrons.size( ); ++index ) {
128 delayedNeutrons1.
productIDs( a_indices, a_particles, a_transportablesOnly );
142 int total_multiplicity = 0;
144 for( std::size_t index = 0; index < m_delayedNeutrons.size( ); ++index ) {
148 if( multiplicity < 0 )
return( -1 );
149 total_multiplicity += multiplicity;
152 return( total_multiplicity );
169 int _maximumLegendreOrder = -1;
172 for( std::size_t index = 0; index < m_delayedNeutrons.size( ); ++index ) {
174 int r_maximumLegendreOrder = delayedNeutrons1.
maximumLegendreOrder( a_smr, a_settings, a_temperatureInfo, a_productID );
176 if( r_maximumLegendreOrder > _maximumLegendreOrder ) _maximumLegendreOrder = r_maximumLegendreOrder;
180 return( _maximumLegendreOrder );
202 for( std::size_t index = 0; index < m_delayedNeutrons.size( ); ++index ) {
231 if( m_fissionEnergyReleases.size( ) == 0 )
return( vector );
234 a_smr, m_fissionEnergyReleases, a_temperatureInfo,
"Q-value" ) );
236 if( form !=
nullptr ) vector += form->
multiGroupQ( a_smr, a_settings, a_temperatureInfo );
257 std::size_t a_order )
const {
263 for( std::size_t index = 0; index < m_delayedNeutrons.size( ); ++index ) {
266 matrix += delayedNeutrons1.
multiGroupProductMatrix( a_smr, a_settings, a_temperatureInfo, a_particles, a_productID, a_order );
290 for( std::size_t index = 0; index < m_delayedNeutrons.size( ); ++index ) {
317 for( std::size_t index = 0; index < m_delayedNeutrons.size( ); ++index ) {
334 for( std::size_t index = 0; index < m_delayedNeutrons.size( ); ++index ) {
352 for( std::size_t index = 0; index < m_delayedNeutrons.size( ); ++index ) {
373 double &a_productEnergy,
double &a_productMomentum,
double &a_productGain,
bool a_ignoreIncompleteParticles )
const {
377 for( std::size_t index = 0; index < m_delayedNeutrons.size( ); ++index ) {
380 delayedNeutrons1.
continuousEnergyProductData( a_settings, a_particleID, a_energy, a_productEnergy, a_productMomentum, a_productGain,
381 a_ignoreIncompleteParticles );
399 std::vector<double>
const &a_energies, std::size_t a_offset, std::vector<double> &a_productEnergies, std::vector<double> &a_productMomenta,
400 std::vector<double> &a_productGains,
bool a_ignoreIncompleteParticles )
const {
404 for( std::size_t index = 0; index < m_delayedNeutrons.size( ); ++index ) {
408 a_productGains, a_ignoreIncompleteParticles );
425 for( std::size_t index = 0; index < m_delayedNeutrons.size( ); ++index ) {
428 delayedNeutrons1.
calculateMultiGroupData( a_protare, a_temperatureInfo, a_heatedMultiGroupLabel, a_multiGroupCalulationInformation, a_crossSectionXYs1d );
431 if( ( m_fissionEnergyReleases.size( ) > 0 ) && ( m_fissionEnergyReleases.find( a_heatedMultiGroupLabel ) != m_fissionEnergyReleases.end( ) ) ) {
436 fissionEnergyRelease->
promptProductKE( ), multiGroupFissionEnergyRelease->promptProductKE( ) );
438 fissionEnergyRelease->
promptNeutronKE( ), multiGroupFissionEnergyRelease->promptNeutronKE( ) );
440 fissionEnergyRelease->
delayedNeutronKE( ), multiGroupFissionEnergyRelease->delayedNeutronKE( ) );
442 fissionEnergyRelease->
promptGammaEnergy( ), multiGroupFissionEnergyRelease->promptGammaEnergy( ) );
444 fissionEnergyRelease->
delayedGammaEnergy( ), multiGroupFissionEnergyRelease->delayedGammaEnergy( ) );
446 fissionEnergyRelease->
delayedBetaEnergy( ), multiGroupFissionEnergyRelease->delayedBetaEnergy( ) );
448 fissionEnergyRelease->
neutrinoEnergy( ), multiGroupFissionEnergyRelease->neutrinoEnergy( ) );
450 fissionEnergyRelease->
nonNeutrinoEnergy( ), multiGroupFissionEnergyRelease->nonNeutrinoEnergy( ) );
452 fissionEnergyRelease->
totalEnergy( ), multiGroupFissionEnergyRelease->totalEnergy( ) );
468 if( ( m_delayedNeutrons.size( ) == 0 ) && ( m_fissionEnergyReleases.size( ) == 0 ) )
return;
470 m_delayedNeutrons.toXMLList( a_writeInfo, indent2 );
471 m_fissionEnergyReleases.toXMLList( a_writeInfo, indent2 );
#define GIDI_fissionEnergyReleasesChars
#define GIDI_fissionFragmentDataChars
#define GIDI_delayedNeutronsChars
Vector multiGroupMultiplicity(LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, 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
int productMultiplicity(std::string const &a_productID) 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
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
void productIDs(std::set< std::string > &a_indices, Transporting::Particles const &a_particles, bool a_transportablesOnly) const
void incompleteParticles(Transporting::Settings const &a_settings, std::set< std::string > &a_incompleteParticles) 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 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 setDelayedNeutronIndex(int a_delayedNeutronIndex)
void toXMLList(GUPI::WriteInfo &a_writeInfo, std::string const &a_indent="") const
void productIDs(std::set< std::string > &a_indices, Transporting::Particles const &a_particles, bool a_transportablesOnly) const
bool isDelayedFissionNeutronComplete() const
int maximumLegendreOrder(LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, std::string const &a_productID) const
Vector multiGroupAverageEnergy(LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, std::string const &a_productID) const
int productMultiplicity(std::string const &a_productID) const
void delayedNeutronProducts(DelayedNeutronProducts &a_delayedNeutronProducts) 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
Vector multiGroupAverageMomentum(LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, std::string const &a_productID) 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 incompleteParticles(Transporting::Settings const &a_settings, std::set< std::string > &a_incompleteParticles) 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
GUPI::Ancestry * findInAncestry3(std::string const &a_item)
Vector multiGroupQ(LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo, bool a_final) 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
Function1dForm const * delayedGammaEnergy() const
Function1dForm const * promptNeutronKE() const
Function1dForm const * nonNeutrinoEnergy() const
Vector multiGroupQ(LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo) const
Function1dForm const * promptGammaEnergy() const
Function1dForm const * delayedBetaEnergy() const
Function1dForm const * totalEnergy() const
Function1dForm const * promptProductKE() const
Function1dForm const * neutrinoEnergy() const
Function1dForm const * delayedNeutronKE() const
Form const * form(LUPI::StatusMessageReporting &a_smr, GIDI::Suite const &a_suite, Styles::TemperatureInfo const &a_temperatureInfo, std::string a_dataType, std::string const &a_label="") const
DelayedNeutrons delayedNeutrons() const
std::string const & moniker() const
Ancestry(std::string const &a_moniker, std::string const &a_attribute="")
void addNodeEnder(std::string const &a_moniker)
std::string incrementalIndent(std::string const &indent)
void addNodeStarter(std::string const &indent, std::string const &a_moniker, std::string const &a_attributes="")
void calculate1dMultiGroupFissionEnergyRelease(MultiGroupCalulationInformation const &a_multiGroupCalulationInformation, Functions::XYs1d const &a_weight, Functions::Function1dForm const *a_evaluated, Functions::Function1dForm *a_gridded1d)
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)
std::vector< DelayedNeutronProduct > DelayedNeutronProducts