Geant4 11.4.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
GIDI_fissionFragmentData.cc
Go to the documentation of this file.
1/*
2# <<BEGIN-copyright>>
3# Copyright 2019, Lawrence Livermore National Security, LLC.
4# This file is part of the gidiplus package (https://github.com/LLNL/gidiplus).
5# gidiplus is licensed under the MIT license (see https://opensource.org/licenses/MIT).
6# SPDX-License-Identifier: MIT
7# <<END-copyright>>
8*/
9
10#include "GIDI.hpp"
11
12namespace GIDI {
13
14/*! \class FissionFragmentData
15 * This class represents a **GNDS** fissionFragmentData.
16*/
17
18/* *********************************************************************************************************//**
19 * Default constructor for FissionFragmentData.
20 ***********************************************************************************************************/
21
28
29/* *********************************************************************************************************//**
30 * Constructed from data in a <**outputChannel**> node.
31 *
32 * @param a_construction [in] Used to pass user options to the constructor.
33 * @param a_node [in] The reaction HAPI::Node to be parsed and used to construct the reaction.
34 * @param a_setupInfo [in] Information create my the Protare constructor to help in parsing.
35 * @param a_pops [in] The *external* PoPI::Database instance used to get particle indices and possibly other particle information.
36 * @param a_internalPoPs [in] The *internal* PoPI::Database instance used to get particle indices and possibly other particle information.
37 * This is the <**PoPs**> node under the <**reactionSuite**> node.
38 * @param a_styles [in] The <**styles**> node under the <**reactionSuite**> node.
39 ***********************************************************************************************************/
40
41FissionFragmentData::FissionFragmentData( Construction::Settings const &a_construction, HAPI::Node const &a_node, SetupInfo &a_setupInfo,
42 PoPI::Database const &a_pops, PoPI::Database const &a_internalPoPs, Styles::Suite const *a_styles ) :
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}
58
59/* *********************************************************************************************************//**
60 ***********************************************************************************************************/
61
65
66/* *********************************************************************************************************//**
67 * Returns **false* if *this* has delayed fission neutrons and they are not complete; otherwise, returns **true**.
68 *
69 * @return bool
70 ***********************************************************************************************************/
71
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}
83
84/* *********************************************************************************************************//**
85 * 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.
86 *
87 * @param a_item [in] The name of the class member whose pointer is to be return.
88 * @return The pointer to the class member or nullptr if class does not have a member named a_item.
89 ***********************************************************************************************************/
90
92
93 if( a_item == GIDI_delayedNeutronsChars ) return( &m_delayedNeutrons );
94 if( a_item == GIDI_fissionEnergyReleasesChars ) return( &m_fissionEnergyReleases );
95
96 return( nullptr );
97}
98
99/* *********************************************************************************************************//**
100 * 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.
101 *
102 * @param a_item [in] The name of the class member whose pointer is to be return.
103 * @return The pointer to the class member or nullptr if class does not have a member named a_item.
104 ***********************************************************************************************************/
105
106GUPI::Ancestry const *FissionFragmentData::findInAncestry3( std::string const &a_item ) const {
107
108 if( a_item == GIDI_delayedNeutronsChars ) return( &m_delayedNeutrons );
109 if( a_item == GIDI_fissionEnergyReleasesChars ) return( &m_fissionEnergyReleases );
110
111 return( nullptr );
112}
113
114/* *********************************************************************************************************//**
115 * Insert a std::set with the products id and any product in in its output channel.
116 * If a_transportablesOnly is true, only transportable product indices are return.
117 *
118 * @param a_indices [out] The unique list of product indices.
119 * @param a_particles [in] The list of particles to be transported.
120 * @param a_transportablesOnly [in] If true, only transportable product indices are added in the list.
121 ***********************************************************************************************************/
122
123void FissionFragmentData::productIDs( std::set<std::string> &a_indices, Transporting::Particles const &a_particles, bool a_transportablesOnly ) const {
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}
131
132/* *********************************************************************************************************//**
133 * Returns the product multiplicity (e.g., 0, 1, 2, ...) or -1 if energy dependent or not an integer for particle with id *a_productID*.
134 *
135 * @param a_productID; [in] The id of the requested particle.
136 *
137 * @return The multiplicity for the requested particle.
138 ***********************************************************************************************************/
139
140int FissionFragmentData::productMultiplicity( std::string const &a_productID ) const {
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}
154
155/* *********************************************************************************************************//**
156 * Determines the maximum Legredre order present in the multi-group transfer matrix for the specified products of this output channel.
157 *
158 * @param a_smr [Out] If errors are not to be thrown, then the error is reported via this instance.
159 * @param a_settings [in] Specifies the requested label.
160 * @param a_temperatureInfo [in] Specifies the temperature and labels use to lookup the requested data.
161 * @param a_productID [in] Particle id of the requested product.
162 *
163 * @return The maximum Legredre order. If no transfer matrix data are present for the requested product, -1 is returned.
164 ***********************************************************************************************************/
165
167 Styles::TemperatureInfo const &a_temperatureInfo, std::string const &a_productID ) const {
168
169 int _maximumLegendreOrder = -1;
170
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}
182
183/* *********************************************************************************************************//**
184 * Returns the sum of the multi-group multiplicity for the requested label for the request product of this output channel.
185 * This is a cross section weighted multiplicity.
186 *
187 * @param a_smr [Out] If errors are not to be thrown, then the error is reported via this instance.
188 * @param a_settings [in] Specifies the requested label.
189 * @param a_temperatureInfo [in] Specifies the temperature and labels use to lookup the requested data.
190 * @param a_productID [in] Particle id for the requested product.
191 *
192 * @return The requested multi-group multiplicity as a GIDI::Vector.
193 ***********************************************************************************************************/
194
196 Styles::TemperatureInfo const &a_temperatureInfo, std::string const &a_productID ) const {
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}
210
211/* *********************************************************************************************************//**
212 * Returns the sum of the multi-group, Q for the requested label for the this output channel. This is a cross section weighted Q.
213 * 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
214 * summed, including output channels for each products.
215 *
216 * @param a_smr [Out] If errors are not to be thrown, then the error is reported via this instance.
217 * @param a_settings [in] Specifies the requested label.
218 * @param a_temperatureInfo [in] Specifies the temperature and labels use to lookup the requested data.
219 * @param a_final [in] If true, the Q is calculated for all output channels, including those for products.
220 *
221 * @return The requested multi-group Q as a GIDI::Vector.
222 ***********************************************************************************************************/
223
225 Styles::TemperatureInfo const &a_temperatureInfo, LUPI_maybeUnused bool a_final ) const {
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}
240
241/* *********************************************************************************************************//**
242 * Returns the multi-group, product matrix for the requested label for the requested product index for the requested Legendre order.
243 * If no data are found, an empty GIDI::Matrix is returned.
244 *
245 * @param a_smr [Out] If errors are not to be thrown, then the error is reported via this instance.
246 * @param a_settings [in] Specifies the requested label and if delayed neutrons should be included.
247 * @param a_temperatureInfo [in] Specifies the temperature and labels use to lookup the requested data.
248 * @param a_particles [in] The list of particles to be transported.
249 * @param a_productID [in] Particle id for the requested product.
250 * @param a_order [in] Requested product matrix, Legendre order.
251 *
252 * @return The requested multi-group product matrix as a GIDI::Matrix.
253 ***********************************************************************************************************/
254
256 Styles::TemperatureInfo const &a_temperatureInfo, Transporting::Particles const &a_particles, std::string const &a_productID,
257 std::size_t a_order ) const {
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}
271
272/* *********************************************************************************************************//**
273 * 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.
274 *
275 * @param a_smr [Out] If errors are not to be thrown, then the error is reported via this instance.
276 * @param a_settings [in] Specifies the requested label.
277 * @param a_temperatureInfo [in] Specifies the temperature and labels use to lookup the requested data.
278 * @param a_productID [in] Particle id for the requested product.
279 *
280 * @return The requested multi-group average energy as a GIDI::Vector.
281 ***********************************************************************************************************/
282
284 Styles::TemperatureInfo const &a_temperatureInfo, std::string const &a_productID ) const {
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}
298
299/* *********************************************************************************************************//**
300 * 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.
301 *
302 * @param a_smr [Out] If errors are not to be thrown, then the error is reported via this instance.
303 * @param a_settings [in] Specifies the requested label.
304 * @param a_temperatureInfo [in] Specifies the temperature and labels use to lookup the requested data.
305 * @param a_productID [in] Particle id for the requested product.
306 *
307 * @return The requested multi-group average momentum as a GIDI::Vector.
308 ***********************************************************************************************************/
309
311 Styles::TemperatureInfo const &a_temperatureInfo, std::string const &a_productID ) const {
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}
325
326/* *********************************************************************************************************//**
327 * Appends a DelayedNeutronProduct instance for each delayed neutron in *m_delayedNeutrons*.
328 *
329 * @param a_delayedNeutronProducts [in] The list to append the delayed neutrons to.
330 ***********************************************************************************************************/
331
333
334 for( std::size_t index = 0; index < m_delayedNeutrons.size( ); ++index ) {
335 DelayedNeutron const &delayedNeutron = *m_delayedNeutrons.get<DelayedNeutron>( index );
336
338 a_delayedNeutronProducts.push_back( DelayedNeutronProduct( delayedNeutron.delayedNeutronIndex( ), rate, &delayedNeutron.product( ) ) );
339 }
340}
341
342/* *********************************************************************************************************//**
343 * Loops over the instances in ** m_delayedNeutrons** calling their incompleteParticles method.
344 *
345 * @param a_settings [in] Specifies the requested label.
346 * @param a_incompleteParticles [out] The list of particles whose **completeParticle** method returns *false*.
347 ***********************************************************************************************************/
348
349void FissionFragmentData::incompleteParticles( Transporting::Settings const &a_settings, std::set<std::string> &a_incompleteParticles ) const {
350
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}
359
360/* *********************************************************************************************************//**
361 * Returns, via arguments, the average energy and momentum, and gain for product with particle id *a_particleID*.
362 *
363 * @param a_settings [in] Specifies the requested label.
364 * @param a_particleID [in] The particle id of the product.
365 * @param a_energy [in] The energy of the projectile.
366 * @param a_productEnergy [in] The average energy of the product.
367 * @param a_productMomentum [in] The average momentum of the product.
368 * @param a_productGain [in] The gain of the product.
369 * @param a_ignoreIncompleteParticles [in] If *true*, incomplete particles are ignore, otherwise a *throw* is executed.
370 ***********************************************************************************************************/
371
372void FissionFragmentData::continuousEnergyProductData( Transporting::Settings const &a_settings, std::string const &a_particleID, double a_energy,
373 double &a_productEnergy, double &a_productMomentum, double &a_productGain, bool a_ignoreIncompleteParticles ) const {
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}
384
385/* *********************************************************************************************************//**
386 * Modifies the average product energies, momenta and gains for product with particle id *a_particleID*.
387 *
388 * @param a_settings [in] Specifies user options.
389 * @param a_particleID [in] The particle id of the product.
390 * @param a_energies [in] The vector of energies to map the data to.
391 * @param a_offset [in] The index of the first energy whose data are to be added to the vectors.
392 * @param a_productEnergies [out] The vector of average energies of the product.
393 * @param a_productMomenta [out] The vector of average momenta of the product.
394 * @param a_productGains [out] The vector of gain of the product.
395 * @param a_ignoreIncompleteParticles [in] If *true*, incomplete particles are ignore, otherwise a *throw* is executed.
396 ***********************************************************************************************************/
397
398void FissionFragmentData::mapContinuousEnergyProductData( Transporting::Settings const &a_settings, std::string const &a_particleID,
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 {
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}
411
412/* *********************************************************************************************************//**
413 * This methods calculates multi-group data for all needed components and adds each component's multi-group with label *a_heatedMultiGroupLabel*.
414 *
415 * @param a_temperatureInfo [in] Specifies the temperature and labels use to lookup the requested data.
416 * @param a_heatedMultiGroupLabel [in] The label of the style for the multi-group data being added.
417 * @param a_multiGroupCalulationInformation [in] Store multi-group boundary and flux data used for multi-grouping.
418 * @param a_crossSectionXYs1d [in[ The cross section weight.
419 ***********************************************************************************************************/
420
422 std::string const &a_heatedMultiGroupLabel, MultiGroupCalulationInformation const &a_multiGroupCalulationInformation,
423 Functions::XYs1d const &a_crossSectionXYs1d ) {
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}
455
456/* *********************************************************************************************************//**
457 * Fills the argument *a_writeInfo* with the XML lines that represent *this*. Recursively enters each sub-node.
458 *
459 * @param a_writeInfo [in/out] Instance containing incremental indentation and other information and stores the appended lines.
460 * @param a_indent [in] The amount to indent *this* node.
461 ***********************************************************************************************************/
462
463void FissionFragmentData::toXMLList( GUPI::WriteInfo &a_writeInfo, std::string const &a_indent ) const {
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}
474
475}
#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
#define LUPI_maybeUnused
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
Product & product()
Definition GIDI.hpp:3969
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)
Definition GIDI.hpp:3966
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
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
Definition GIDI.hpp:5442
Function1dForm const * promptNeutronKE() const
Definition GIDI.hpp:5436
Function1dForm const * nonNeutrinoEnergy() const
Definition GIDI.hpp:5448
Vector multiGroupQ(LUPI::StatusMessageReporting &a_smr, Transporting::MG const &a_settings, Styles::TemperatureInfo const &a_temperatureInfo) const
Function1dForm const * promptGammaEnergy() const
Definition GIDI.hpp:5440
Function1dForm const * delayedBetaEnergy() const
Definition GIDI.hpp:5444
Function1dForm const * totalEnergy() const
Definition GIDI.hpp:5450
Function1dForm const * promptProductKE() const
Definition GIDI.hpp:5434
Function1dForm const * neutrinoEnergy() const
Definition GIDI.hpp:5446
Function1dForm const * delayedNeutronKE() const
Definition GIDI.hpp:5438
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
Definition GIDI.hpp:3727
std::string const & moniker() const
Definition GUPI.hpp:102
Ancestry(std::string const &a_moniker, std::string const &a_attribute="")
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
Definition GIDI.hpp:32
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
Definition GIDI.hpp:4031
Definition GUPI.hpp:20