Geant4 11.4.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
GIDI_parseSuites.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 <math.h>
11
12#include "GIDI.hpp"
13#include <HAPI.hpp>
14
15namespace GIDI {
16
17/* *********************************************************************************************************//**
18 * Function that parses a <**style**> node. Called from a Suite::parse instance.
19 *
20 * @param a_construction [in] Used to pass user options for parsing.
21 * @param a_parent [in] The parent GIDI::Suite that the returned Form will be added to.
22 * @param a_node [in] The **HAPI::Node** to be parsed.
23 * @param a_setupInfo [in] Information create my the Protare constructor to help in parsing.
24 * @param a_pops [in] A PoPs Database instance used to get particle indices and possibly other particle information.
25 * @param a_internalPoPs [in] The *internal* PoPI::Database instance used to get particle indices and possibly other particle information.
26 * This is the <**PoPs**> node under the <**reactionSuite**> node.
27 * @param a_name [in] The moniker for the node to be parsed.
28 * @param a_styles [in] A pointer to the <**styles**> node.
29 * @return The parsed and constructed GIDI::Form or nullptr if the node is not supported.
30 ***********************************************************************************************************/
31
32Form *parseExternalFilesSuite( LUPI_maybeUnused Construction::Settings const &a_construction, GIDI::Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo,
33 LUPI_maybeUnused PoPI::Database const &a_pops, LUPI_maybeUnused PoPI::Database const &a_internalPoPs, std::string const &a_name, LUPI_maybeUnused Styles::Suite const *a_styles ) {
34
35 Form *form = nullptr;
36
37 if( a_name == GIDI_externalFileChars ) {
38 form = new ExternalFile( a_node, a_setupInfo, a_parent ); }
39 else {
40 std::cout << "parseExternalFilesSuite: Ignoring unsupported externalFile = '" << a_name << "'." << std::endl;
41 }
42
43 return( form );
44}
45
46/* *********************************************************************************************************//**
47 * Function that parses a <**style**> node. Called from a Suite::parse instance.
48 *
49 * @param a_construction [in] Used to pass user options for parsing.
50 * @param a_parent [in] The parent GIDI::Suite that the returned Form will be added to.
51 * @param a_node [in] The **HAPI::Node** to be parsed.
52 * @param a_setupInfo [in] Information create my the Protare constructor to help in parsing.
53 * @param a_pops [in] A PoPs Database instance used to get particle indices and possibly other particle information.
54 * @param a_internalPoPs [in] The *internal* PoPI::Database instance used to get particle indices and possibly other particle information.
55 * This is the <**PoPs**> node under the <**reactionSuite**> node.
56 * @param a_name [in] The moniker for the node to be parsed.
57 * @param a_styles [in] A pointer to the <**styles**> node.
58 * @return The parsed and constructed GIDI::Form or nullptr if the node is not supported.
59 ***********************************************************************************************************/
60
61Form *parseStylesSuite( Construction::Settings const &a_construction, GIDI::Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo,
62 PoPI::Database const &a_pops, PoPI::Database const &a_internalPoPs, std::string const &a_name, LUPI_maybeUnused Styles::Suite const *a_styles ) {
63
64 Form *form = nullptr;
65
66// Styles not parsed are angularDistributionReconstructed.
67
68 if( a_name == GIDI_evaluatedStyleChars ) {
69 form = new Styles::Evaluated( a_node, a_setupInfo, a_parent ); }
70 else if( a_name == GIDI_crossSectionReconstructedStyleChars ) {
71 form = new Styles::CrossSectionReconstructed( a_node, a_setupInfo, a_parent ); }
73 form = new Styles::CoulombPlusNuclearElasticMuCutoff( a_node, a_setupInfo, a_parent ); }
74 else if( a_name == GIDI_realizationChars ) {
75 form = new Styles::Realization( a_node, a_setupInfo, a_parent ); }
76 else if( a_name == GIDI_averageProductDataStyleChars ) {
77 form = new Styles::AverageProductData( a_node, a_setupInfo, a_parent ); }
78 else if( a_name == GIDI_MonteCarlo_cdfStyleChars ) {
79 form = new Styles::MonteCarlo_cdf( a_node, a_setupInfo, a_parent ); }
80 else if( a_name == GIDI_multiGroupStyleChars ) {
81 form = new Styles::MultiGroup( a_construction, a_node, a_setupInfo, a_pops, a_internalPoPs, a_parent );
82 if( a_setupInfo.m_multiGroup == nullptr ) {
83 a_setupInfo.m_multiGroup = static_cast<Styles::MultiGroup *>( form ); }
84 else {
85 std::cout << "Multiple multiGroup style instances found which is not supported. Ignoring all but first instance." << std::endl;
86 } }
87 else if( a_name == GIDI_heatedStyleChars ) {
88 form = new Styles::Heated( a_node, a_setupInfo, a_parent ); }
89 else if( a_name == GIDI_heatedMultiGroupStyleChars ) {
90 form = new Styles::HeatedMultiGroup( a_construction, a_node, a_setupInfo, a_pops, a_parent ); }
91 else if( a_name == GIDI_SnElasticUpScatterStyleChars ) {
92 form = new Styles::SnElasticUpScatter( a_node, a_setupInfo, a_pops, a_parent ); }
93 else if( a_name == GIDI_griddedCrossSectionStyleChars ) {
94 form = new Styles::GriddedCrossSection( a_construction, a_node, a_setupInfo, a_pops, a_parent ); }
95 else if( a_name == GIDI_URR_probabilityTablesStyleChars ) {
96 form = new Styles::URR_probabilityTables( a_construction, a_node, a_setupInfo, a_pops, a_parent ); }
97 else {
98 std::cout << "parseStylesSuite: Ignoring unsupported style = '" << a_name << "'." << std::endl;
99 }
100
101 return( form );
102}
103
104/* *********************************************************************************************************//**
105 * Function that parses a <**transportable**> node. Called from a Suite::parse instance.
106 *
107 * @param a_construction [in] Used to pass user options for parsing.
108 * @param a_parent [in] The parent GIDI::Suite that the returned Form will be added to.
109 * @param a_node [in] The **HAPI::Node** to be parsed.
110 * @param a_setupInfo [in] Information create my the Protare constructor to help in parsing.
111 * @param a_pops [in] A PoPs Database instance used to get particle indices and possibly other particle information.
112 * @param a_internalPoPs [in] The *internal* PoPI::Database instance used to get particle indices and possibly other particle information.
113 * This is the <**PoPs**> node under the <**reactionSuite**> node.
114 * @param a_name [in] The moniker for the node to be parsed.
115 * @param a_styles [in] A pointer to the <**styles**> node.
116 * @return The parsed and constructed GIDI::Form or nullptr if the node is not supported.
117 ***********************************************************************************************************/
118
119Form *parseTransportablesSuite( Construction::Settings const &a_construction, Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo,
120 PoPI::Database const &a_pops, LUPI_maybeUnused PoPI::Database const &a_internalPoPs, std::string const &a_name, LUPI_maybeUnused Styles::Suite const *a_styles ) {
121
122 Form *form = nullptr;
123
124 if( a_name == GIDI_transportableChars ) {
125 form = new Transportable( a_construction, a_node, a_setupInfo, a_pops, a_parent ); }
126 else {
127 std::cout << "parseTransportablesSuite: Ignoring unsupported Form '" << a_name << "'." << std::endl;
128 }
129
130 return( form );
131}
132
133/* *********************************************************************************************************//**
134 * Function that parses a <**reaction**> node. Called from a Suite::parse instance.
135 *
136 * @param a_construction [in] Used to pass user options for parsing.
137 * @param a_parent [in] The parent GIDI::Suite that the returned Form will be added to.
138 * @param a_node [in] The **HAPI::Node** to be parsed.
139 * @param a_setupInfo [in] Information create my the Protare constructor to help in parsing.
140 * @param a_pops [in] A PoPs Database instance used to get particle indices and possibly other particle information.
141 * @param a_internalPoPs [in] The *internal* PoPI::Database instance used to get particle indices and possibly other particle information.
142 * This is the <**PoPs**> node under the <**reactionSuite**> node.
143 * @param a_name [in] The moniker for the node to be parsed.
144 * @param a_styles [in] A pointer to the <**styles**> node.
145 * @return The parsed and constructed GIDI::Reaction instance.
146 ***********************************************************************************************************/
147
148Form *parseReaction( Construction::Settings const &a_construction, Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo,
149 PoPI::Database const &a_pops, PoPI::Database const &a_internalPoPs, std::string const &a_name, Styles::Suite const *a_styles ) {
150
151 return( parseReactionType( GIDI_reactionChars, a_construction, a_parent, a_node, a_setupInfo, a_pops, a_internalPoPs, a_name, a_styles ) );
152}
153
154/* *********************************************************************************************************//**
155 * Function that parses an <**orphanProduct**> node. Called from a Suite::parse instance.
156 *
157 * @param a_construction [in] Used to pass user options for parsing.
158 * @param a_parent [in] The parent GIDI::Suite that the returned Form will be added to.
159 * @param a_node [in] The **HAPI::Node** to be parsed.
160 * @param a_setupInfo [in] Information create my the Protare constructor to help in parsing.
161 * @param a_pops [in] A PoPs Database instance used to get particle indices and possibly other particle information.
162 * @param a_internalPoPs [in] The *internal* PoPI::Database instance used to get particle indices and possibly other particle information.
163 * This is the <**PoPs**> node under the <**reactionSuite**> node.
164 * @param a_name [in] The moniker for the node to be parsed.
165 * @param a_styles [in] A pointer to the <**styles**> node.
166 * @return The parsed and constructed GIDI::Reaction instance.
167 ***********************************************************************************************************/
168
169Form *parseOrphanProduct( Construction::Settings const &a_construction, Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo,
170 PoPI::Database const &a_pops, PoPI::Database const &a_internalPoPs, std::string const &a_name, Styles::Suite const *a_styles ) {
171
172 return( parseReactionType( GIDI_orphanProductChars, a_construction, a_parent, a_node, a_setupInfo, a_pops, a_internalPoPs, a_name, a_styles ) );
173}
174
175/* *********************************************************************************************************//**
176 * Function that parses an <**orphanProduct**> node. Called from a Suite::parse instance.
177 *
178 * @param a_construction [in] Used to pass user options for parsing.
179 * @param a_parent [in] The parent GIDI::Suite that the returned Form will be added to.
180 * @param a_node [in] The **HAPI::Node** to be parsed.
181 * @param a_setupInfo [in] Information create my the Protare constructor to help in parsing.
182 * @param a_pops [in] A PoPs Database instance used to get particle indices and possibly other particle information.
183 * @param a_internalPoPs [in] The *internal* PoPI::Database instance used to get particle indices and possibly other particle information.
184 * This is the <**PoPs**> node under the <**reactionSuite**> node.
185 * @param a_name [in] The moniker for the node to be parsed.
186 * @param a_styles [in] A pointer to the <**styles**> node.
187 * @return The parsed and constructed GIDI::Reaction instance.
188 ***********************************************************************************************************/
189
190Form *parseFissionComponent( Construction::Settings const &a_construction, Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo,
191 PoPI::Database const &a_pops, PoPI::Database const &a_internalPoPs, std::string const &a_name, Styles::Suite const *a_styles ) {
192
193 return( parseReactionType( GIDI_fissionComponentChars, a_construction, a_parent, a_node, a_setupInfo, a_pops, a_internalPoPs, a_name, a_styles ) );
194}
195
196/* *********************************************************************************************************//**
197 * Function that parses a <**reaction**> or an <**orphanProduct**> node. Called from a Suite::parse instance.
198 *
199 * @param a_moniker [in] The moniker for the form to parse.
200 * @param a_construction [in] Used to pass user options for parsing.
201 * @param a_parent [in] The parent GIDI::Suite that the returned Form will be added to.
202 * @param a_node [in] The **HAPI::Node** to be parsed.
203 * @param a_setupInfo [in] Information create my the Protare constructor to help in parsing.
204 * @param a_pops [in] A PoPs Database instance used to get particle indices and possibly other particle information.
205 * @param a_internalPoPs [in] The *internal* PoPI::Database instance used to get particle indices and possibly other particle information.
206 * This is the <**PoPs**> node under the <**reactionSuite**> node.
207 * @param a_name [in] The moniker for the node to be parsed.
208 * @param a_styles [in] A pointer to the <**styles**> node.
209 * @return The parsed and constructed GIDI::Reaction instance.
210 ***********************************************************************************************************/
211
212Form *parseReactionType( std::string const &a_moniker, Construction::Settings const &a_construction, Suite *a_parent, HAPI::Node const &a_node,
213 SetupInfo &a_setupInfo, PoPI::Database const &a_pops, PoPI::Database const &a_internalPoPs, std::string const &a_name,
214 Styles::Suite const *a_styles ) {
215
216 Form *form = nullptr;
217
218 if( a_name == a_moniker ) {
219 Protare const &protare( *static_cast<Protare const *>( a_parent->root( ) ) );
220 form = new Reaction( a_construction, a_node, a_setupInfo, a_pops, a_internalPoPs, protare, a_styles ); }
221 else { // This should never happend.
222 std::cout << "parseReactionType: Ignoring '" << a_moniker << "' unsupported form '" << a_name << "'." << std::endl;
223 }
224
225 return( form );
226}
227
228/* *********************************************************************************************************//**
229 * Function that parses a <**crossSectionSum**> node. Called from a Suite::parse instance.
230 *
231 * @param a_construction [in] Used to pass user options for parsing.
232 * @param a_parent [in] The parent GIDI::Suite that the returned Form will be added to.
233 * @param a_node [in] The **HAPI::Node** to be parsed.
234 * @param a_setupInfo [in] Information create my the Protare constructor to help in parsing.
235 * @param a_pops [in] A PoPs Database instance used to get particle indices and possibly other particle information.
236 * @param a_internalPoPs [in] The *internal* PoPI::Database instance used to get particle indices and possibly other particle information.
237 * This is the <**PoPs**> node under the <**reactionSuite**> node.
238 * @param a_name [in] The moniker for the node to be parsed.
239 * @param a_styles [in] A pointer to the <**styles**> node.
240 * @return The parsed and constructed GIDI::CrossSectionSum instance.
241 ***********************************************************************************************************/
242
243Form *parseSumsCrossSectionsSuite( Construction::Settings const &a_construction, LUPI_maybeUnused Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo,
244 PoPI::Database const &a_pops, PoPI::Database const &a_internalPoPs, std::string const &a_name, LUPI_maybeUnused Styles::Suite const *a_styles ) {
245
246 Form *form = nullptr;
247
248 if( a_name == GIDI_crossSectionSumChars ) {
249 form = new Sums::CrossSectionSum( a_construction, a_node, a_setupInfo, a_pops, a_internalPoPs ); }
250 else { // This should never happend.
251 std::cout << "parseSumsCrossSectionsSuite: Ignoring unsupported Form '" << a_name << "'." << std::endl;
252 }
253
254 return( form );
255}
256
257/* *********************************************************************************************************//**
258 * Function that parses a <**multiplicitySum**> node. Called from a Suite::parse instance.
259 *
260 * @param a_construction [in] Used to pass user options for parsing.
261 * @param a_parent [in] The parent GIDI::Suite that the returned Form will be added to.
262 * @param a_node [in] The **HAPI::Node** to be parsed.
263 * @param a_setupInfo [in] Information create my the Protare constructor to help in parsing.
264 * @param a_pops [in] A PoPs Database instance used to get particle indices and possibly other particle information.
265 * @param a_internalPoPs [in] The *internal* PoPI::Database instance used to get particle indices and possibly other particle information.
266 * This is the <**PoPs**> node under the <**reactionSuite**> node.
267 * @param a_name [in] The moniker for the node to be parsed.
268 * @param a_styles [in] A pointer to the <**styles**> node.
269 * @return The parsed and constructed GIDI::MultiplicitySum instance.
270 ***********************************************************************************************************/
271
272Form *parseSumsMultiplicitiesSuite( Construction::Settings const &a_construction, LUPI_maybeUnused Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo,
273 PoPI::Database const &a_pops, PoPI::Database const &a_internalPoPs, std::string const &a_name, LUPI_maybeUnused Styles::Suite const *a_styles ) {
274
275 Form *form = nullptr;
276
277 if( a_construction.parseMode( ) == Construction::ParseMode::outline ) return( nullptr );
278
279 if( a_name == GIDI_multiplicitySumChars ) {
280 form = new Sums::MultiplicitySum( a_construction, a_node, a_setupInfo, a_pops, a_internalPoPs ); }
281 else { // This should never happend.
282 std::cout << "parseSumsMultiplicitiesSuite: Ignoring unsupported Form '" << a_name << "'." << std::endl;
283 }
284
285 return( form );
286}
287
288/* *********************************************************************************************************//**
289 * Function that parses a node under the <**doubleDifferentialCrossSection**> node. Called from a Suite::parse instance.
290 *
291 * @param a_construction [in] Used to pass user options for parsing.
292 * @param a_parent [in] The parent GIDI::Suite that the returned Form will be added to.
293 * @param a_node [in] The **HAPI::Node** to be parsed.
294 * @param a_setupInfo [in] Information create my the Protare constructor to help in parsing.
295 * @param a_pops [in] A PoPs Database instance used to get particle indices and possibly other particle information.
296 * @param a_internalPoPs [in] The *internal* PoPI::Database instance used to get particle indices and possibly other particle information.
297 * This is the <**PoPs**> node under the <**reactionSuite**> node.
298 * @param a_name [in] The moniker for the node to be parsed.
299 * @param a_styles [in] A pointer to the <**styles**> node.
300 * @return The parsed and constructed GIDI::Form or nullptr if the node is not supported.
301 ***********************************************************************************************************/
302
304 SetupInfo &a_setupInfo, PoPI::Database const &a_pops, PoPI::Database const &a_internalPoPs, std::string const &a_name,
305 LUPI_maybeUnused Styles::Suite const *a_styles ) {
306
307 if( a_construction.parseMode( ) == Construction::ParseMode::outline ) return( nullptr );
308 if( a_construction.parseMode( ) == Construction::ParseMode::multiGroupOnly ) return( nullptr );
309
310 Form *form = nullptr;
311
312 if( a_name == GIDI_coherentPhotonScatteringChars ) {
313 form = new DoubleDifferentialCrossSection::CoherentPhotoAtomicScattering( a_construction, a_node, a_setupInfo, a_pops, a_internalPoPs, a_parent ); }
314 else if( a_name == GIDI_incoherentPhotonScatteringChars ) {
315 form = new DoubleDifferentialCrossSection::IncoherentPhotoAtomicScattering( a_construction, a_node, a_setupInfo, a_pops, a_internalPoPs, a_parent ); }
317 form = new DoubleDifferentialCrossSection::IncoherentBoundToFreePhotoAtomicScattering( a_construction, a_node, a_setupInfo, a_pops, a_internalPoPs, a_parent ); }
318 else if( a_name == GIDI_TNSL_coherentElasticChars ) {
319 form = new DoubleDifferentialCrossSection::n_ThermalNeutronScatteringLaw::CoherentElastic( a_construction, a_node, a_setupInfo, a_pops, a_internalPoPs, a_parent ); }
320 else if( a_name == GIDI_TNSL_incoherentElasticChars ) {
321 form = new DoubleDifferentialCrossSection::n_ThermalNeutronScatteringLaw::IncoherentElastic( a_construction, a_node, a_setupInfo, a_pops, a_internalPoPs, a_parent ); }
322 else if( a_name == GIDI_TNSL_incoherentInelasticChars ) {
323 form = new DoubleDifferentialCrossSection::n_ThermalNeutronScatteringLaw::IncoherentInelastic( a_construction, a_node, a_setupInfo, a_pops, a_internalPoPs, a_parent ); }
324 else if( a_name == GIDI_CoulombPlusNuclearElasticChars ) {
325 }
326 else {
327 std::cout << "parseDoubleDifferentialCrossSectionSuite: Ignoring unsupported Form '" << a_name << "'." << std::endl;
328 }
329
330 return( form );
331}
332
333/* *********************************************************************************************************//**
334 * Function that parses a node under the <**doubleDifferentialCrossSection**> node. Called from a Suite::parse instance.
335 *
336 * @param a_construction [in] Used to pass user options for parsing.
337 * @param a_parent [in] The parent GIDI::Suite that the returned Form will be added to.
338 * @param a_node [in] The **HAPI::Node** to be parsed.
339 * @param a_setupInfo [in] Information create my the Protare constructor to help in parsing.
340 * @param a_pops [in] A PoPs Database instance used to get particle indices and possibly other particle information.
341 * @param a_internalPoPs [in] The *internal* PoPI::Database instance used to get particle indices and possibly other particle information.
342 * This is the <**PoPs**> node under the <**reactionSuite**> node.
343 * @param a_name [in] The moniker for the node to be parsed.
344 * @param a_styles [in] A pointer to the <**styles**> node.
345 * @return The parsed and constructed GIDI::Form or nullptr if the node is not supported.
346 ***********************************************************************************************************/
347
348Form *parseScatteringAtom( Construction::Settings const &a_construction, LUPI_maybeUnused Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo,
349 LUPI_maybeUnused PoPI::Database const &a_pops, LUPI_maybeUnused PoPI::Database const &a_internalPoPs, LUPI_maybeUnused std::string const &a_name, LUPI_maybeUnused Styles::Suite const *a_styles ) {
350
351 return( new DoubleDifferentialCrossSection::n_ThermalNeutronScatteringLaw::ScatteringAtom( a_construction, a_node, a_setupInfo ) );
352}
353
354/* *********************************************************************************************************//**
355 * Function that parses a node under the <**crossSection**> node. Called from a Suite::parse instance.
356 *
357 * @param a_construction [in] Used to pass user options for parsing.
358 * @param a_parent [in] The parent GIDI::Suite that the returned Form will be added to.
359 * @param a_node [in] The **HAPI::Node** to be parsed.
360 * @param a_setupInfo [in] Information create my the Protare constructor to help in parsing.
361 * @param a_pops [in] A PoPs Database instance used to get particle indices and possibly other particle information.
362 * @param a_internalPoPs [in] The *internal* PoPI::Database instance used to get particle indices and possibly other particle information.
363 * This is the <**PoPs**> node under the <**reactionSuite**> node.
364 * @param a_name [in] The moniker for the node to be parsed.
365 * @param a_styles [in] A pointer to the <**styles**> node.
366 * @return The parsed and constructed GIDI::Form or nullptr if the node is not supported.
367 ***********************************************************************************************************/
368
369Form *parseCrossSectionSuite( Construction::Settings const &a_construction, Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo,
370 LUPI_maybeUnused PoPI::Database const &a_pops, LUPI_maybeUnused PoPI::Database const &a_internalPoPs, std::string const &a_name, LUPI_maybeUnused Styles::Suite const *a_styles ) {
371
372 if( a_construction.parseMode( ) == Construction::ParseMode::outline ) return( nullptr );
373 if( ( a_construction.parseMode( ) == Construction::ParseMode::multiGroupOnly ) && ( a_name != GIDI_gridded1dChars ) ) return( nullptr );
374 if( ( a_construction.parseMode( ) == Construction::ParseMode::MonteCarloContinuousEnergy ) && ( a_name != GIDI_Ys1dChars ) ) return( nullptr );
375
376// Form not parsed is CoulombPlusNuclearElastic.
377 Form *form = nullptr;
378
379 if( a_name == GIDI_resonancesWithBackgroundChars ) {
380 return( new Functions::ResonancesWithBackground1d( a_construction, a_node, a_setupInfo, a_parent ) ); }
381 else if( a_name == GIDI_TNSL1dChars ) {
382 form = new Functions::ThermalNeutronScatteringLaw1d( a_construction, a_node, a_setupInfo, a_parent ); }
383 else if( a_name == GIDI_URR_probabilityTables1dChars ) {
384 form = new Functions::URR_probabilityTables1d( a_construction, a_node, a_setupInfo, a_parent ); }
385 else if( a_name == GIDI_CoulombPlusNuclearElasticChars ) {
386 }
387 else {
388 form = data1dParse( a_construction, a_node, a_setupInfo, a_parent );
389 }
390
391 return( form );
392}
393
394/* *********************************************************************************************************//**
395 * Function that parses a node under the <**DelayedNeutrons**> node. Called from a Suite::parse instance.
396 *
397 * @param a_construction [in] Used to pass user options for parsing.
398 * @param a_parent [in] The parent GIDI::Suite that the returned Form will be added to.
399 * @param a_node [in] The **HAPI::Node** to be parsed.
400 * @param a_setupInfo [in] Information create my the Protare constructor to help in parsing.
401 * @param a_pops [in] A PoPs Database instance used to get particle indices and possibly other particle information.
402 * @param a_internalPoPs [in] The *internal* PoPI::Database instance used to get particle indices and possibly other particle information.
403 * This is the <**PoPs**> node under the <**reactionSuite**> node.
404 * @param a_name [in] The moniker for the node to be parsed.
405 * @param a_styles [in] A pointer to the <**styles**> node.
406 * @return The parsed and constructed GIDI::Form or nullptr if the node is not supported.
407 ***********************************************************************************************************/
408
409Form *parseDelayedNeutronsSuite( Construction::Settings const &a_construction, Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo,
410 PoPI::Database const &a_pops, PoPI::Database const &a_internalPoPs, std::string const &a_name, Styles::Suite const *a_styles ) {
411
412 if( a_name != GIDI_delayedNeutronChars ) throw Exception( std::string( "Invalid " ) + GIDI_delayedNeutronsChars + " child node of moniker " + a_name );
413 return( new DelayedNeutron( a_construction, a_node, a_setupInfo, a_pops, a_internalPoPs, a_parent, a_styles ) );
414}
415
416/* *********************************************************************************************************//**
417 * Function that parses a node under the <**FissionEnergyReleases**> node. Called from a Suite::parse instance.
418 *
419 * @param a_construction [in] Used to pass user options for parsing.
420 * @param a_parent [in] The parent GIDI::Suite that the returned Form will be added to.
421 * @param a_node [in] The **HAPI::Node** to be parsed.
422 * @param a_setupInfo [in] Information create my the Protare constructor to help in parsing.
423 * @param a_pops [in] A PoPs Database instance used to get particle indices and possibly other particle information.
424 * @param a_internalPoPs [in] The *internal* PoPI::Database instance used to get particle indices and possibly other particle information.
425 * This is the <**PoPs**> node under the <**reactionSuite**> node.
426 * @param a_name [in] The moniker for the node to be parsed.
427 * @param a_styles [in] A pointer to the <**styles**> node.
428 * @return The parsed and constructed GIDI::Form or nullptr if the node is not supported.
429 ***********************************************************************************************************/
430
431Form *parseFissionEnergyReleasesSuite( Construction::Settings const &a_construction, Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo,
432 LUPI_maybeUnused PoPI::Database const &a_pops, LUPI_maybeUnused PoPI::Database const &a_internalPoPs, std::string const &a_name, LUPI_maybeUnused Styles::Suite const *a_styles ) {
433
434 if( a_name != GIDI_fissionEnergyReleaseChars ) throw Exception( std::string( "Invalid " ) + GIDI_fissionEnergyReleasesChars " child node of moniker " + a_name );
435 return( new Functions::FissionEnergyRelease( a_construction, a_node, a_setupInfo, a_parent ) );
436}
437
438/* *********************************************************************************************************//**
439 * Function that parses a node under the <**rate**> node. Called from a Suite::parse instance.
440 *
441 * @param a_construction [in] Used to pass user options for parsing.
442 * @param a_parent [in] The parent GIDI::Suite that the returned Form will be added to.
443 * @param a_node [in] The **HAPI::Node** to be parsed.
444 * @param a_setupInfo [in] Information create my the Protare constructor to help in parsing.
445 * @param a_pops [in] A PoPs Database instance used to get particle indices and possibly other particle information.
446 * @param a_internalPoPs [in] The *internal* PoPI::Database instance used to get particle indices and possibly other particle information.
447 * This is the <**PoPs**> node under the <**reactionSuite**> node.
448 * @param a_name [in] The moniker for the node to be parsed.
449 * @param a_styles [in] A pointer to the <**styles**> node.
450 * @return The parsed and constructed GIDI::Form or nullptr if the node is not supported.
451 ***********************************************************************************************************/
452
454 LUPI_maybeUnused PoPI::Database const &a_pops, LUPI_maybeUnused PoPI::Database const &a_internalPoPs, LUPI_maybeUnused std::string const &a_name, LUPI_maybeUnused Styles::Suite const *a_styles ) {
455
456 return( new PhysicalQuantity( a_node, a_setupInfo ) );
457}
458
459/* *********************************************************************************************************//**
460 * Function that parses a node under an <**availableEnergy**> or <**availableMomentum**> node. Called from a Suite::parse instance.
461 *
462 * @param a_construction [in] Used to pass user options for parsing.
463 * @param a_parent [in] The parent GIDI::Suite that the returned Form will be added to.
464 * @param a_node [in] The **HAPI::Node** to be parsed.
465 * @param a_setupInfo [in] Information create my the Protare constructor to help in parsing.
466 * @param a_pops [in] A PoPs Database instance used to get particle indices and possibly other particle information.
467 * @param a_internalPoPs [in] The *internal* PoPI::Database instance used to get particle indices and possibly other particle information.
468 * This is the <**PoPs**> node under the <**reactionSuite**> node.
469 * @param a_name [in] The moniker for the node to be parsed.
470 * @param a_styles [in] A pointer to the <**styles**> node.
471 * @return The parsed and constructed GIDI::Function1d instance.
472 ***********************************************************************************************************/
473
474Form *parseAvailableSuite( Construction::Settings const &a_construction, Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo,
475 LUPI_maybeUnused PoPI::Database const &a_pops, LUPI_maybeUnused PoPI::Database const &a_internalPoPs, std::string const &a_name, LUPI_maybeUnused Styles::Suite const *a_styles ) {
476
477 if( a_construction.parseMode( ) == Construction::ParseMode::outline ) return( nullptr );
478 if( ( a_construction.parseMode( ) == Construction::ParseMode::multiGroupOnly ) && ( a_name != GIDI_gridded1dChars ) ) return( nullptr );
479
480 return( data1dParse( a_construction, a_node, a_setupInfo, a_parent ) );
481}
482
483/* *********************************************************************************************************//**
484 * Function that parses a node under a <**Q**> node. Called from a Suite::parse instance.
485 *
486 * @param a_construction [in] Used to pass user options for parsing.
487 * @param a_parent [in] The parent GIDI::Suite that the returned Form will be added to.
488 * @param a_node [in] The **HAPI::Node** to be parsed.
489 * @param a_setupInfo [in] Information create my the Protare constructor to help in parsing.
490 * @param a_pops [in] A PoPs Database instance used to get particle indices and possibly other particle information.
491 * @param a_internalPoPs [in] The *internal* PoPI::Database instance used to get particle indices and possibly other particle information.
492 * This is the <**PoPs**> node under the <**reactionSuite**> node.
493 * @param a_name [in] The moniker for the node to be parsed.
494 * @param a_styles [in] A pointer to the <**styles**> node.
495 * @return The parsed and constructed GIDI::Function1d instance.
496 ***********************************************************************************************************/
497
498Form *parseQSuite( Construction::Settings const &a_construction, Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo,
499 LUPI_maybeUnused PoPI::Database const &a_pops, LUPI_maybeUnused PoPI::Database const &a_internalPoPs, LUPI_maybeUnused std::string const &a_name, LUPI_maybeUnused Styles::Suite const *a_styles ) {
500
501 Form *form = nullptr;
502
503 if( a_construction.parseMode( ) == Construction::ParseMode::outline ) return( nullptr );
504
505 form = data1dParse( a_construction, a_node, a_setupInfo, a_parent );
506
507 return( form );
508}
509
510/* *********************************************************************************************************//**
511 * Function that parses a node under a <**products**> node. Called from a Suite::parse instance.
512 *
513 * @param a_construction [in] Used to pass user options for parsing.
514 * @param a_parent [in] The parent GIDI::Suite that the returned Form will be added to.
515 * @param a_node [in] The **HAPI::Node** to be parsed.
516 * @param a_setupInfo [in] Information create my the Protare constructor to help in parsing.
517 * @param a_pops [in] A PoPs Database instance used to get particle indices and possibly other particle information.
518 * @param a_internalPoPs [in] The *internal* PoPI::Database instance used to get particle indices and possibly other particle information.
519 * This is the <**PoPs**> node under the <**reactionSuite**> node.
520 * @param a_name [in] The moniker for the node to be parsed.
521 * @param a_styles [in] A pointer to the <**styles**> node.
522 * @return The parsed and constructed GIDI::Product instance.
523 ***********************************************************************************************************/
524
525Form *parseProductSuite( Construction::Settings const &a_construction, Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo,
526 PoPI::Database const &a_pops, PoPI::Database const &a_internalPoPs, std::string const &a_name, Styles::Suite const *a_styles ) {
527
528 Form *form = nullptr;
529
530 if( a_name == GIDI_productChars ) {
531 form = new Product( a_construction, a_node, a_setupInfo, a_pops, a_internalPoPs, a_parent, a_styles ); }
532 else {
533 std::cout << "parseProductSuite: Ignoring unsupported element in products " << a_node.name( ) << std::endl;
534 }
535
536 return( form );
537}
538
539/* *********************************************************************************************************//**
540 * Function that parses a node under a <**multiplicity**> node. Called from a Suite::parse instance.
541 *
542 * @param a_construction [in] Used to pass user options for parsing.
543 * @param a_parent [in] The parent GIDI::Suite that the returned Form will be added to.
544 * @param a_node [in] The **HAPI::Node** to be parsed.
545 * @param a_setupInfo [in] Information create my the Protare constructor to help in parsing.
546 * @param a_pops [in] A PoPs Database instance used to get particle indices and possibly other particle information.
547 * @param a_internalPoPs [in] The *internal* PoPI::Database instance used to get particle indices and possibly other particle information.
548 * This is the <**PoPs**> node under the <**reactionSuite**> node.
549 * @param a_name [in] The moniker for the node to be parsed.
550 * @param a_styles [in] A pointer to the <**styles**> node.
551 * @return The parsed and constructed GIDI::Function1d instance.
552 ***********************************************************************************************************/
553
554Form *parseMultiplicitySuite( Construction::Settings const &a_construction, Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo,
555 LUPI_maybeUnused PoPI::Database const &a_pops, LUPI_maybeUnused PoPI::Database const &a_internalPoPs, std::string const &a_name, LUPI_maybeUnused Styles::Suite const *a_styles ) {
556
557 if( a_construction.parseMode( ) == Construction::ParseMode::outline ) return( nullptr );
558
559 if( a_name == GIDI_branching1dChars ) return( new Functions::Branching1d( a_construction, a_node, a_setupInfo, a_parent ) );
560
561 return( data1dParse( a_construction, a_node, a_setupInfo, a_parent ) );
562}
563
564/* *********************************************************************************************************//**
565 * Function that parses a node under a <**distribution**> node. Called from a Suite::parse instance.
566 *
567 * @param a_construction [in] Used to pass user options for parsing.
568 * @param a_parent [in] The parent GIDI::Suite that the returned Form will be added to.
569 * @param a_node [in] The **HAPI::Node** to be parsed.
570 * @param a_setupInfo [in] Information create my the Protare constructor to help in parsing.
571 * @param a_pops [in] A PoPs Database instance used to get particle indices and possibly other particle information.
572 * @param a_internalPoPs [in] The *internal* PoPI::Database instance used to get particle indices and possibly other particle information.
573 * This is the <**PoPs**> node under the <**reactionSuite**> node.
574 * @param a_name [in] The moniker for the node to be parsed.
575 * @param a_styles [in] A pointer to the <**styles**> node.
576 * @return The parsed and constructed GIDI::Form or nullptr if the node is not supported.
577 ***********************************************************************************************************/
578
579Form *parseDistributionSuite( Construction::Settings const &a_construction, Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo,
580 LUPI_maybeUnused PoPI::Database const &a_pops, LUPI_maybeUnused PoPI::Database const &a_internalPoPs, std::string const &a_name, LUPI_maybeUnused Styles::Suite const *a_styles ) {
581
582 if( a_construction.parseMode( ) == Construction::ParseMode::outline ) return( nullptr );
583 if( a_name == GIDI_multiGroup3dChars ) {
585 ( a_construction.parseMode( ) == Construction::ParseMode::excludeProductMatrices ) ) return( nullptr ); }
586 else {
587 if( a_construction.parseMode( ) == Construction::ParseMode::multiGroupOnly ) return( nullptr );
588 }
589
590// Distributions not parsed are GIDI_LLNLLegendreChars.
591 Form *form = nullptr;
592
593 if( a_name == GIDI_multiGroup3dChars ) {
594 form = new Distributions::MultiGroup3d( a_construction, a_node, a_setupInfo, a_parent ); }
595 else if( a_name == GIDI_angularTwoBodyChars ) {
596 form = new Distributions::AngularTwoBody( a_construction, a_node, a_setupInfo, a_parent ); }
597 else if( a_name == GIDI_uncorrelatedChars ) {
598 form = new Distributions::Uncorrelated( a_construction, a_node, a_setupInfo, a_parent ); }
599 else if( a_name == GIDI_KalbachMannChars ) {
600 form = new Distributions::KalbachMann( a_construction, a_node, a_setupInfo, a_parent ); }
601 else if( a_name == GIDI_energyAngularChars ) {
602 form = new Distributions::EnergyAngular( a_construction, a_node, a_setupInfo, a_parent ); }
603 else if( a_name == GIDI_energyAngularMCChars ) {
604 form = new Distributions::EnergyAngularMC( a_construction, a_node, a_setupInfo, a_parent ); }
605 else if( a_name == GIDI_angularEnergyChars ) {
606 form = new Distributions::AngularEnergy( a_construction, a_node, a_setupInfo, a_parent ); }
607 else if( a_name == GIDI_angularEnergyMCChars ) {
608 form = new Distributions::AngularEnergyMC( a_construction, a_node, a_setupInfo, a_parent ); }
609 else if( a_name == GIDI_LLNLAngularEnergyChars ) {
610 form = new Distributions::LLNLAngularEnergy( a_construction, a_node, a_setupInfo, a_parent ); }
611 else if( a_name == GIDI_coherentPhotonScatteringChars ) {
612 form = new Distributions::CoherentPhotoAtomicScattering( a_construction, a_node, a_setupInfo, a_parent ); }
613 else if( a_name == GIDI_incoherentPhotonScatteringChars ) {
614 form = new Distributions::IncoherentPhotoAtomicScattering( a_construction, a_node, a_setupInfo, a_parent ); }
616 form = new Distributions::IncoherentBoundToFreePhotoAtomicScattering( a_construction, a_node, a_setupInfo, a_parent ); }
617 else if( a_name == GIDI_thermalNeutronScatteringLawChars ) {
618 form = new Distributions::ThermalNeutronScatteringLaw( a_construction, a_node, a_setupInfo, a_parent ); }
619 else if( a_name == GIDI_branching3dChars ) {
620 form = new Distributions::Branching3d( a_construction, a_node, a_setupInfo, a_parent ); }
621 else if( a_name == GIDI_referenceChars ) {
622 form = new Distributions::Reference3d( a_construction, a_node, a_setupInfo, a_parent ); }
623 else if( a_name == GIDI_unspecifiedChars ) {
624 form = new Distributions::Unspecified( a_construction, a_node, a_setupInfo, a_parent ); }
625 else if( a_name == GIDI_CoulombPlusNuclearElasticChars ) {
626 form = new Distributions::CoulombPlusNuclearElastic( a_construction, a_node, a_setupInfo, a_parent ); }
627 else if( a_name == GIDI_LLNLLegendreChars ) {
628 form = new Distributions::LLNLLegendre( a_construction, a_node, a_setupInfo, a_parent ); }
629 else {
630 std::cout << "parseDistributionSuite: Ignoring unsupported distribution " << a_node.name( ) << std::endl;
631 }
632
633 return( form );
634}
635
636/* *********************************************************************************************************//**
637 * Function that parses a node under an <**averageEnergy**> node. Called from a Suite::parse instance.
638 *
639 * @param a_construction [in] Used to pass user options for parsing.
640 * @param a_parent [in] The parent GIDI::Suite that the returned Form will be added to.
641 * @param a_node [in] The **HAPI::Node** to be parsed.
642 * @param a_setupInfo [in] Information create my the Protare constructor to help in parsing.
643 * @param a_pops [in] A PoPs Database instance used to get particle indices and possibly other particle information.
644 * @param a_internalPoPs [in] The *internal* PoPI::Database instance used to get particle indices and possibly other particle information.
645 * This is the <**PoPs**> node under the <**reactionSuite**> node.
646 * @param a_name [in] The moniker for the node to be parsed.
647 * @param a_styles [in] A pointer to the <**styles**> node.
648 * @return The parsed and constructed GIDI::Function1d instance.
649 ***********************************************************************************************************/
650
651Form *parseAverageEnergySuite( Construction::Settings const &a_construction, Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo,
652 LUPI_maybeUnused PoPI::Database const &a_pops, LUPI_maybeUnused PoPI::Database const &a_internalPoPs, std::string const &a_name, LUPI_maybeUnused Styles::Suite const *a_styles ) {
653
654 if( a_construction.parseMode( ) == Construction::ParseMode::outline ) return( nullptr );
655 if( ( a_construction.parseMode( ) == Construction::ParseMode::multiGroupOnly ) && ( a_name != GIDI_gridded1dChars ) ) return( nullptr );
656
657 return( data1dParse( a_construction, a_node, a_setupInfo, a_parent ) );
658}
659
660/* *********************************************************************************************************//**
661 * Function that parses a node under an <**averageMomentum**> node. Called from a Suite::parse instance.
662 *
663 * @param a_construction [in] Used to pass user options for parsing.
664 * @param a_parent [in] The parent GIDI::Suite that the returned Form will be added to.
665 * @param a_node [in] The **HAPI::Node** to be parsed.
666 * @param a_setupInfo [in] Information create my the Protare constructor to help in parsing.
667 * @param a_pops [in] A PoPs Database instance used to get particle indices and possibly other particle information.
668 * @param a_internalPoPs [in] The *internal* PoPI::Database instance used to get particle indices and possibly other particle information.
669 * This is the <**PoPs**> node under the <**reactionSuite**> node.
670 * @param a_name [in] The moniker for the node to be parsed.
671 * @param a_styles [in] A pointer to the <**styles**> node.
672 *
673 * @return The parsed and constructed GIDI::Function1d instance.
674 ***********************************************************************************************************/
675
676Form *parseAverageMomentumSuite( Construction::Settings const &a_construction, Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo,
677 LUPI_maybeUnused PoPI::Database const &a_pops, LUPI_maybeUnused PoPI::Database const &a_internalPoPs, std::string const &a_name, LUPI_maybeUnused Styles::Suite const *a_styles ) {
678
679 if( a_construction.parseMode( ) == Construction::ParseMode::outline ) return( nullptr );
680 if( ( a_construction.parseMode( ) == Construction::ParseMode::multiGroupOnly ) && ( a_name != GIDI_gridded1dChars ) ) return( nullptr );
681
682 return( data1dParse( a_construction, a_node, a_setupInfo, a_parent ) );
683}
684
685/* *********************************************************************************************************//**
686 * This function parses a **probabilityTable** child node of a **probabilityTables** node.
687 *
688 * @param a_construction [in] Used to pass user options for parsing.
689 * @param a_parent [in] The parent GIDI::Suite that the returned Form will be added to.
690 * @param a_node [in] The **HAPI::Node** to be parsed.
691 * @param a_setupInfo [in] Information create my the Protare constructor to help in parsing.
692 * @param a_pops [in] A PoPs Database instance used to get particle indices and possibly other particle information.
693 * @param a_internalPoPs [in] The *internal* PoPI::Database instance used to get particle indices and possibly other particle information.
694 * This is the <**PoPs**> node under the <**reactionSuite**> node.
695 * @param a_name [in] The moniker for the node to be parsed.
696 * @param a_styles [in] A pointer to the <**styles**> node.
697 *
698 * @return The parsed and constructed GIDI::Function1d instance.
699 ***********************************************************************************************************/
700
701Form *parseACE_URR_probabilityTables( Construction::Settings const &a_construction, Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo,
702 LUPI_maybeUnused PoPI::Database const &a_pops, LUPI_maybeUnused PoPI::Database const &a_internalPoPs, std::string const &a_name, LUPI_maybeUnused Styles::Suite const *a_styles ) {
703
704 if( a_name != GIDI_ACE_URR_probabilityTableChars ) throw Exception( std::string( "Invalid " ) + GIDI_ACE_URR_probabilityTablesChars " child node of moniker " + a_name );
705
706 return( new ACE_URR::ProbabilityTable( a_construction, a_node, a_setupInfo, a_parent ) );
707}
708
709/* *********************************************************************************************************//**
710 * This function parses a **column** child node of a **columnHeaders** node.
711 *
712 * @param a_construction [in] Used to pass user options for parsing.
713 * @param a_parent [in] The parent GIDI::Suite that the returned Form will be added to.
714 * @param a_node [in] The **HAPI::Node** to be parsed.
715 * @param a_setupInfo [in] Information create my the Protare constructor to help in parsing.
716 * @param a_pops [in] A PoPs Database instance used to get particle indices and possibly other particle information.
717 * @param a_internalPoPs [in] The *internal* PoPI::Database instance used to get particle indices and possibly other particle information.
718 * This is the <**PoPs**> node under the <**reactionSuite**> node.
719 * @param a_name [in] The moniker for the node to be parsed.
720 * @param a_styles [in] A pointer to the <**styles**> node.
721 *
722 * @return The parsed and constructed GIDI::Function1d instance.
723 ***********************************************************************************************************/
724
725Form *parseColumnHeaders( Construction::Settings const &a_construction, Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo,
726 LUPI_maybeUnused PoPI::Database const &a_pops, LUPI_maybeUnused PoPI::Database const &a_internalPoPs, std::string const &a_name, LUPI_maybeUnused Styles::Suite const *a_styles ) {
727
728 if( a_name != GIDI_columnChars ) throw Exception( std::string( "Invalid " ) + GIDI_columnHeadersChars + " child node of moniker " + a_name );
729
730 Table::Column *column = new Table::Column( a_construction, a_node, a_setupInfo, a_parent );
731 column->setKeyName( GIDI_indexChars );
732
733 return column;
734}
735
736/* *********************************************************************************************************//**
737 * Function that parses a node one-d function node. Called from a Suite::parse instance.
738 *
739 * @param a_construction [in] Used to pass user options for parsing.
740 * @param a_node [in] The **HAPI::Node** to be parsed.
741 * @param a_setupInfo [in] Information create my the Protare constructor to help in parsing.
742 * @param a_parent [in] The parent GIDI::Suite that the returned Form will be added to.
743 *
744 * @return The parsed and constructed GIDI::Function1d instance.
745 ***********************************************************************************************************/
746
747Functions::Function1dForm *data1dParse( Construction::Settings const &a_construction, HAPI::Node const &a_node, SetupInfo &a_setupInfo, Suite *a_parent ) {
748
749 Functions::Function1dForm *form = nullptr;
750 std::string name( a_node.name( ) );
751
752 if( name == GIDI_constant1dChars ) {
753 form = new Functions::Constant1d( a_construction, a_node, a_setupInfo, a_parent ); }
754 else if( name == GIDI_XYs1dChars ) {
755 form = new Functions::XYs1d( a_construction, a_node, a_setupInfo, a_parent ); }
756 else if( name == GIDI_Ys1dChars ) {
757 form = new Functions::Ys1d( a_construction, a_node, a_setupInfo, a_parent ); }
758 else if( name == GIDI_polynomial1dChars ) {
759 form = new Functions::Polynomial1d( a_construction, a_node, a_setupInfo, a_parent ); }
760 else if( name == GIDI_LegendreChars ) {
761 form = new Functions::Legendre1d( a_construction, a_node, a_setupInfo, a_parent ); }
762 else if( name == GIDI_regions1dChars ) {
763 form = new Functions::Regions1d( a_construction, a_node, a_setupInfo, a_parent ); }
764 else if( name == GIDI_gridded1dChars ) {
765 form = new Functions::Gridded1d( a_construction, a_node, a_setupInfo, a_parent ); }
766 else if( name == GIDI_referenceChars ) {
767 form = new Functions::Reference1d( a_construction, a_node, a_setupInfo, a_parent ); }
768 else if( name == GIDI_xs_pdf_cdf1dChars ) {
769 form = new Functions::Xs_pdf_cdf1d( a_construction, a_node, a_setupInfo, a_parent ); }
770 else if( name == GIDI_unspecifiedChars ) {
771 form = new Functions::Unspecified1d( a_construction, a_node, a_setupInfo, a_parent ); }
772 else {
773 std::cout << "data1dParse: Ignoring unsupported 1d function = '" << name << "'" << std::endl;
774 }
775
776 return( form );
777}
778
779/* *********************************************************************************************************//**
780 * Function that parses a node one-d function node. Called from a Suite::parse instance. If no node exists, returns nullptr.
781 *
782 * @param a_construction [in] Used to pass user options to the constructor.
783 * @param a_node [in] The **HAPI::Node** to be parsed.
784 * @param a_setupInfo [in] Information create my the Protare constructor to help in parsing.
785 * @param a_parent [in] The parent GIDI::Suite that the returned Form will be added to.
786 *
787 * @return The parsed and constructed GIDI::Function1d instance.
788 ***********************************************************************************************************/
789
791 Suite *a_parent ) {
792
793 std::string name( a_node.name( ) );
794
795 if( name == "" ) return( nullptr );
796 return( data1dParse( a_construction, a_node, a_setupInfo, a_parent ) );
797}
798
799/* *********************************************************************************************************//**
800 * Function that parses the list of 1d function nodes contained in *a_node*.
801 *
802 * @param a_construction [in] Used to pass user options to the constructor.
803 * @param a_node [in] The **HAPI::Node** to be parsed.
804 * @param a_setupInfo [in] Information create my the Protare constructor to help in parsing.
805 * @param a_function1ds [in] The object to fill with the list of parsed 1d functions.
806 ***********************************************************************************************************/
807
808void data1dListParse( Construction::Settings const &a_construction, HAPI::Node const &a_node, SetupInfo &a_setupInfo,
809 std::vector<Functions::Function1dForm *> &a_function1ds ) {
810
811 for( HAPI::Node child = a_node.first_child( ); !child.empty( ); child.to_next_sibling( ) ) {
812 Functions::Function1dForm *form = data1dParse( a_construction, child, a_setupInfo, nullptr );
813
814 if( form == nullptr ) throw Exception( "data1dListParse data1dParse returned nullptr." );
815 a_function1ds.push_back( form );
816 }
817}
818
819/* *********************************************************************************************************//**
820 * Function that parses a node two-d function node. Called from a Suite::parse instance.
821 *
822 * @param a_construction [in] Used to pass user options to the constructor.
823 * @param a_node [in] The **HAPI::Node** to be parsed.
824 * @param a_setupInfo [in] Information create my the Protare constructor to help in parsing.
825 * @param a_parent [in] The parent GIDI::Suite that the returned Form will be added to.
826 * @return The parsed and constructed GIDI::Function2d instance.
827 ***********************************************************************************************************/
828
829Functions::Function2dForm *data2dParse( Construction::Settings const &a_construction, HAPI::Node const &a_node, SetupInfo &a_setupInfo, Suite *a_parent ) {
830
831 Functions::Function2dForm *form = nullptr;
832 std::string name( a_node.name( ) );
833
834 if( name == GIDI_XYs2dChars ) {
835 form = new Functions::XYs2d( a_construction, a_node, a_setupInfo, a_parent ); }
836 else if( name == GIDI_recoilChars ) {
837 form = new Functions::Recoil2d( a_construction, a_node, a_setupInfo, a_parent ); }
838 else if( name == GIDI_isotropic2dChars ) {
839 form = new Functions::Isotropic2d( a_construction, a_node, a_setupInfo, a_parent ); }
840 else if( name == GIDI_discreteGammaChars ) {
841 form = new Functions::DiscreteGamma2d( a_construction, a_node, a_setupInfo, a_parent ); }
842 else if( name == GIDI_primaryGammaChars ) {
843 form = new Functions::PrimaryGamma2d( a_construction, a_node, a_setupInfo, a_parent ); }
844 else if( name == GIDI_generalEvaporationChars ) {
845 form = new Functions::GeneralEvaporation2d( a_construction, a_node, a_setupInfo, a_parent ); }
846 else if( name == GIDI_simpleMaxwellianFissionChars ) {
847 form = new Functions::SimpleMaxwellianFission2d( a_construction, a_node, a_setupInfo, a_parent ); }
848 else if( name == GIDI_evaporationChars ) {
849 form = new Functions::Evaporation2d( a_construction, a_node, a_setupInfo, a_parent ); }
850 else if( name == GIDI_WattChars ) {
851 form = new Functions::Watt2d( a_construction, a_node, a_setupInfo, a_parent ); }
852 else if( name == GIDI_MadlandNixChars ) {
853 form = new Functions::MadlandNix2d( a_construction, a_node, a_setupInfo, a_parent ); }
854 else if( name == GIDI_weightedFunctionalsChars ) {
855 form = new Functions::WeightedFunctionals2d( a_construction, a_node, a_setupInfo, a_parent ); }
856 else if( name == GIDI_NBodyPhaseSpaceChars ) {
857 form = new Functions::NBodyPhaseSpace2d( a_construction, a_node, a_setupInfo, a_parent ); }
858 else if( name == GIDI_regions2dChars ) {
859 form = new Functions::Regions2d( a_construction, a_node, a_setupInfo, a_parent ); }
860 else if( name == GIDI_gridded2dChars ) {
861 form = new Functions::Gridded2d( a_construction, a_node, a_setupInfo, a_parent ); }
862 else {
863 std::cout << "data2dParse: Ignoring unsupported 2d function = '" << name << "'" << std::endl;
864 }
865
866 return( form );
867}
868
869/* *********************************************************************************************************//**
870 * Function that parses the list of 2d function nodes contained in *a_node*.
871 *
872 * @param a_construction [in] Used to pass user options to the constructor.
873 * @param a_node [in] The **HAPI::Node** to be parsed.
874 * @param a_setupInfo [in] Information create my the Protare constructor to help in parsing.
875 * @param a_function2ds [in] The object to fill with the list of parsed 2d functions.
876 ***********************************************************************************************************/
877
878void data2dListParse( Construction::Settings const &a_construction, HAPI::Node const &a_node, SetupInfo &a_setupInfo,
879 std::vector<Functions::Function2dForm *> &a_function2ds ) {
880
881 for( HAPI::Node child = a_node.first_child( ); !child.empty( ); child.to_next_sibling( ) ) {
882 Functions::Function2dForm *form = data2dParse( a_construction, child, a_setupInfo, nullptr );
883
884 if( form == nullptr ) throw Exception( "data2dListParse data2dParse returned nullptr." );
885 a_function2ds.push_back( form );
886 }
887}
888
889/* *********************************************************************************************************//**
890 * Function that parses a node three-d function node. Called from a Suite::parse instance.
891 *
892 * @param a_construction [in] Used to pass user options to the constructor.
893 * @param a_node [in] The **HAPI::Node** to be parsed.
894 * @param a_setupInfo [in] Information create my the Protare constructor to help in parsing.
895 * @param a_parent [in] The parent GIDI::Suite that the returned Form will be added to.
896 *
897 * @return The parsed and constructed GIDI::Function3d instance.
898 ***********************************************************************************************************/
899
900Functions::Function3dForm *data3dParse( Construction::Settings const &a_construction, HAPI::Node const &a_node, SetupInfo &a_setupInfo, Suite *a_parent ) {
901
902 Functions::Function3dForm *form = nullptr;
903 std::string name( a_node.name( ) );
904
905 if( name == GIDI_XYs3dChars ) {
906 form = new Functions::XYs3d( a_construction, a_node, a_setupInfo, a_parent ); }
907 else if( name == GIDI_gridded3dChars ) {
908 form = new Functions::Gridded3d( a_construction, a_node, a_setupInfo ); }
909 else {
910 std::cout << "data3dParse: Ignoring unsupported 3d function = '" << name << "'" << std::endl;
911 }
912
913 return( form );
914}
915
916/* *********************************************************************************************************//**
917 * Function that checks that the outerDomainValue values of the elements of *a_functions* are increasing and fills *a_Xs* with the outerDomainValue values.
918 *
919 * @param a_functions [in] List of functions to check.
920 * @param a_Xs [in] A list of doubles that is filled with the outerDomainValues from the list of functions in *a_functions*.
921 ***********************************************************************************************************/
922
923void checkOuterDomainValues1d( std::vector<Functions::Function1dForm *> &a_functions, std::vector<double> &a_Xs ) {
924
925 for( auto iter = a_functions.begin( ); iter != a_functions.end( ); ++iter ) {
926 if( a_Xs.size( ) > 0 ) {
927 if( (*iter)->outerDomainValue( ) <= a_Xs.back( ) ) throw Exception( "checkOuterDomainValues1d: next outerDomainValue <= current outerDomainValue." );
928 }
929 a_Xs.push_back( (*iter)->outerDomainValue( ) );
930 }
931}
932
933/* *********************************************************************************************************//**
934 * Function that checks that the outerDomainValue values of the elements of *a_functions* are increasing and fills *a_Xs* with the outerDomainValue values.
935 *
936 * @param a_functions [in] List of functions to check.
937 * @param a_Xs [in] A list of doubles that is filled with the outerDomainValues from the list of functions in *a_functions*.
938 ***********************************************************************************************************/
939
940void checkOuterDomainValues2d( std::vector<Functions::Function2dForm *> &a_functions, std::vector<double> &a_Xs ) {
941
942 for( auto iter = a_functions.begin( ); iter != a_functions.end( ); ++iter ) {
943 if( a_Xs.size( ) > 0 ) {
944 if( (*iter)->outerDomainValue( ) <= a_Xs.back( ) ) throw Exception( "checkOuterDomainValues2d: next outerDomainValue <= current outerDomainValue." );
945 }
946 a_Xs.push_back( (*iter)->outerDomainValue( ) );
947 }
948}
949
950/* *********************************************************************************************************//**
951 * Function that checks that the domain overlap of the elements of *a_functions* are .
952 * The domain minimum values from each function and the domain maximum value are filled into *a_Xs*.
953 *
954 * @param a_functions [in] The list of functions whose domain limits are checked.
955 * @param a_Xs [in] A std::vector<double> that is with the domain minimum values from each function and the domain maximum value.
956 ***********************************************************************************************************/
957
958void checkSequentialDomainLimits1d( std::vector<Functions::Function1dForm *> &a_functions, std::vector<double> &a_Xs ) {
959
960 double domainMax = -1;
961
962 for( auto iter = a_functions.begin( ); iter != a_functions.end( ); ++iter ) {
963 double domainMin = (*iter)->domainMin( );
964
965 if( a_Xs.size( ) > 0 ) {
966 if( fabs( domainMax - domainMin ) > 1e-8 * ( fabs( domainMin ) + fabs( domainMax ) ) )
967 throw Exception( "checkSequentialDomainLimits1d: domains not abutting." );
968 }
969 a_Xs.push_back( domainMin );
970 domainMax = (*iter)->domainMax( );
971 }
972 if( a_Xs.size( ) > 0 ) a_Xs.push_back( domainMax );
973}
974
975/* *********************************************************************************************************//**
976 * Function that checks that the domain overlap of the elements of *a_functions* are .
977 * The domain minimum values from each function and the domain maximum value are filled into *a_Xs*.
978 *
979 * @param a_functions [in] The list of functions whose domain limits are checked.
980 * @param a_Xs [in] A std::vector<double> that is with the domain minimum values from each function and the domain maximum value.
981 ***********************************************************************************************************/
982
983void checkSequentialDomainLimits2d( std::vector<Functions::Function2dForm *> &a_functions, std::vector<double> &a_Xs ) {
984
985 double domainMax = -1;
986
987 for( auto iter = a_functions.begin( ); iter != a_functions.end( ); ++iter ) {
988 double domainMin = (*iter)->domainMin( );
989
990 if( a_Xs.size( ) > 0 ) {
991 if( fabs( domainMax - domainMin ) > 1e-8 * ( fabs( domainMin ) + fabs( domainMax ) ) )
992 throw Exception( "checkSequentialDomainLimits2d: domains not abutting." );
993 }
994 a_Xs.push_back( domainMin );
995 domainMax = (*iter)->domainMax( );
996 }
997 if( a_Xs.size( ) > 0 ) a_Xs.push_back( a_functions.back( )->domainMax( ) );
998}
999
1000}
#define GIDI_columnChars
Definition GIDI.hpp:194
#define GIDI_multiGroupStyleChars
Definition GIDI.hpp:246
#define GIDI_simpleMaxwellianFissionChars
Definition GIDI.hpp:306
#define GIDI_regions1dChars
Definition GIDI.hpp:292
#define GIDI_WattChars
Definition GIDI.hpp:308
#define GIDI_TNSL1dChars
Definition GIDI.hpp:297
#define GIDI_fissionEnergyReleasesChars
Definition GIDI.hpp:232
#define GIDI_griddedCrossSectionStyleChars
Definition GIDI.hpp:251
#define GIDI_uncorrelatedChars
Definition GIDI.hpp:344
#define GIDI_unspecifiedChars
Definition GIDI.hpp:363
#define GIDI_resonancesWithBackgroundChars
Definition GIDI.hpp:368
#define GIDI_MadlandNixChars
Definition GIDI.hpp:309
#define GIDI_coherentPhotonScatteringChars
Definition GIDI.hpp:355
#define GIDI_discreteGammaChars
Definition GIDI.hpp:303
#define GIDI_gridded1dChars
Definition GIDI.hpp:293
#define GIDI_productChars
Definition GIDI.hpp:221
#define GIDI_primaryGammaChars
Definition GIDI.hpp:304
#define GIDI_CoulombPlusNuclearElasticMuCutoffStyleChars
Definition GIDI.hpp:243
#define GIDI_realizationChars
Definition GIDI.hpp:249
#define GIDI_ACE_URR_probabilityTableChars
Definition GIDI.hpp:187
#define GIDI_LLNLLegendreChars
Definition GIDI.hpp:380
#define GIDI_regions2dChars
Definition GIDI.hpp:312
#define GIDI_XYs1dChars
Definition GIDI.hpp:288
#define GIDI_columnHeadersChars
Definition GIDI.hpp:193
#define GIDI_TNSL_incoherentElasticChars
Definition GIDI.hpp:359
#define GIDI_energyAngularMCChars
Definition GIDI.hpp:349
#define GIDI_fissionComponentChars
Definition GIDI.hpp:185
#define GIDI_incoherentBoundToFreePhotonScatteringChars
Definition GIDI.hpp:357
#define GIDI_URR_probabilityTablesStyleChars
Definition GIDI.hpp:252
#define GIDI_externalFileChars
Definition GIDI.hpp:173
#define GIDI_LegendreChars
Definition GIDI.hpp:291
#define GIDI_delayedNeutronsChars
Definition GIDI.hpp:230
#define GIDI_XYs2dChars
Definition GIDI.hpp:300
#define GIDI_recoilChars
Definition GIDI.hpp:301
#define GIDI_NBodyPhaseSpaceChars
Definition GIDI.hpp:311
#define GIDI_branching3dChars
Definition GIDI.hpp:362
#define GIDI_generalEvaporationChars
Definition GIDI.hpp:305
#define GIDI_orphanProductChars
Definition GIDI.hpp:182
#define GIDI_evaluatedStyleChars
Definition GIDI.hpp:240
#define GIDI_reactionChars
Definition GIDI.hpp:180
#define GIDI_energyAngularChars
Definition GIDI.hpp:348
#define GIDI_angularEnergyMCChars
Definition GIDI.hpp:351
#define GIDI_LLNLAngularEnergyChars
Definition GIDI.hpp:352
#define GIDI_multiGroup3dChars
Definition GIDI.hpp:342
#define GIDI_gridded2dChars
Definition GIDI.hpp:313
#define GIDI_angularEnergyChars
Definition GIDI.hpp:350
#define GIDI_heatedMultiGroupStyleChars
Definition GIDI.hpp:253
#define GIDI_heatedStyleChars
Definition GIDI.hpp:250
#define GIDI_isotropic2dChars
Definition GIDI.hpp:302
#define GIDI_branching1dChars
Definition GIDI.hpp:296
#define GIDI_delayedNeutronChars
Definition GIDI.hpp:231
#define GIDI_thermalNeutronScatteringLawChars
Definition GIDI.hpp:361
#define GIDI_incoherentPhotonScatteringChars
Definition GIDI.hpp:356
#define GIDI_xs_pdf_cdf1dChars
Definition GIDI.hpp:295
#define GIDI_indexChars
Definition GIDI.hpp:437
#define GIDI_crossSectionSumChars
Definition GIDI.hpp:210
#define GIDI_multiplicitySumChars
Definition GIDI.hpp:212
#define GIDI_KalbachMannChars
Definition GIDI.hpp:347
#define GIDI_referenceChars
Definition GIDI.hpp:294
#define GIDI_angularTwoBodyChars
Definition GIDI.hpp:343
#define GIDI_evaporationChars
Definition GIDI.hpp:307
#define GIDI_Ys1dChars
Definition GIDI.hpp:289
#define GIDI_constant1dChars
Definition GIDI.hpp:287
#define GIDI_URR_probabilityTables1dChars
Definition GIDI.hpp:379
#define GIDI_TNSL_incoherentInelasticChars
Definition GIDI.hpp:360
#define GIDI_MonteCarlo_cdfStyleChars
Definition GIDI.hpp:245
#define GIDI_XYs3dChars
Definition GIDI.hpp:316
#define GIDI_crossSectionReconstructedStyleChars
Definition GIDI.hpp:241
#define GIDI_SnElasticUpScatterStyleChars
Definition GIDI.hpp:254
#define GIDI_gridded3dChars
Definition GIDI.hpp:317
#define GIDI_weightedFunctionalsChars
Definition GIDI.hpp:310
#define GIDI_fissionEnergyReleaseChars
Definition GIDI.hpp:233
#define GIDI_TNSL_coherentElasticChars
Definition GIDI.hpp:358
#define GIDI_CoulombPlusNuclearElasticChars
Definition GIDI.hpp:375
#define GIDI_transportableChars
Definition GIDI.hpp:248
#define GIDI_ACE_URR_probabilityTablesChars
Definition GIDI.hpp:186
#define GIDI_averageProductDataStyleChars
Definition GIDI.hpp:244
#define GIDI_polynomial1dChars
Definition GIDI.hpp:290
#define LUPI_maybeUnused
ParseMode parseMode() const
Definition GIDI.hpp:557
Styles::MultiGroup * m_multiGroup
Definition GIDI.hpp:600
Ancestry * root()
std::string name() const
Definition HAPI_Node.cc:136
bool empty() const
Definition HAPI_Node.cc:150
Node first_child() const
Definition HAPI_Node.cc:82
Definition GIDI.hpp:32
void data2dListParse(Construction::Settings const &a_construction, HAPI::Node const &a_node, SetupInfo &a_setupInfo, std::vector< Functions::Function2dForm * > &a_function2ds)
Form * parseCrossSectionSuite(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)
Functions::Function1dForm * data1dParse(Construction::Settings const &a_construction, HAPI::Node const &a_node, SetupInfo &a_setupInfo, Suite *parent)
Form * parseFissionComponent(Construction::Settings const &a_construction, Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo, PoPI::Database const &a_pops, PoPI::Database const &a_internalPoPs, std::string const &a_name, Styles::Suite const *a_styles)
Form * parseReactionType(std::string const &a_moniker, Construction::Settings const &a_construction, Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo, PoPI::Database const &a_pops, PoPI::Database const &a_internalPoPs, std::string const &a_name, Styles::Suite const *a_styles)
Form * parseACE_URR_probabilityTables(Construction::Settings const &a_construction, Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo, PoPI::Database const &a_pops, PoPI::Database const &a_internalPoPs, std::string const &a_name, Styles::Suite const *a_styles)
Functions::Function2dForm * data2dParse(Construction::Settings const &a_construction, HAPI::Node const &a_node, SetupInfo &a_setupInfo, Suite *parent)
void checkOuterDomainValues2d(std::vector< Functions::Function2dForm * > &a_functions, std::vector< double > &a_Xs)
Form * parseTransportablesSuite(Construction::Settings const &a_construction, Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo, PoPI::Database const &a_pops, PoPI::Database const &a_internalPoPs, std::string const &a_name, Styles::Suite const *a_styles)
Form * parseColumnHeaders(Construction::Settings const &a_construction, Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo, PoPI::Database const &a_pops, PoPI::Database const &a_internalPoPs, std::string const &a_name, Styles::Suite const *a_styles)
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 * parseProductSuite(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 * parseAverageEnergySuite(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 * parseQSuite(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)
void checkOuterDomainValues1d(std::vector< Functions::Function1dForm * > &a_functions, std::vector< double > &a_Xs)
void data1dListParse(Construction::Settings const &a_construction, HAPI::Node const &a_node, SetupInfo &a_setupInfo, std::vector< Functions::Function1dForm * > &a_function1ds)
Form * parseSumsMultiplicitiesSuite(Construction::Settings const &a_construction, Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo, PoPI::Database const &a_pops, PoPI::Database const &a_internalPoPs, std::string const &a_name, Styles::Suite const *a_styles)
Form * parseAvailableSuite(Construction::Settings const &a_construction, Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo, PoPI::Database const &a_pops, PoPI::Database const &a_internalPoPs, std::string const &a_name, Styles::Suite const *a_styles)
Form * parseMultiplicitySuite(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 * parseExternalFilesSuite(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 * parseReaction(Construction::Settings const &a_construction, Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo, PoPI::Database const &a_pops, PoPI::Database const &a_internalPoPs, std::string const &a_name, Styles::Suite const *a_styles)
Form * parseOrphanProduct(Construction::Settings const &a_construction, Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo, PoPI::Database const &a_pops, 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)
Form * parseStylesSuite(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 * parseDoubleDifferentialCrossSectionSuite(Construction::Settings const &a_construction, Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo, PoPI::Database const &a_pops, PoPI::Database const &a_internalPoPs, std::string const &a_name, Styles::Suite const *a_styles)
Form * parseAverageMomentumSuite(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 * parsePhysicalQuantitySuite(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 * parseScatteringAtom(Construction::Settings const &a_construction, Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo, PoPI::Database const &a_pops, PoPI::Database const &a_internalPoPs, std::string const &a_name, Styles::Suite const *a_styles)
Form * parseDistributionSuite(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)
Functions::Function1dForm * data1dParseAllowEmpty(Construction::Settings const &a_construction, HAPI::Node const &a_node, SetupInfo &a_setupInfo, Suite *a_parent)
Functions::Function3dForm * data3dParse(Construction::Settings const &a_construction, HAPI::Node const &a_node, SetupInfo &a_setupInfo, Suite *parent)
Form * parseSumsCrossSectionsSuite(Construction::Settings const &a_construction, Suite *a_parent, HAPI::Node const &a_node, SetupInfo &a_setupInfo, PoPI::Database const &a_pops, PoPI::Database const &a_internalPoPs, std::string const &a_name, Styles::Suite const *a_styles)
void checkSequentialDomainLimits1d(std::vector< Functions::Function1dForm * > &a_functions, std::vector< double > &a_Xs)
void checkSequentialDomainLimits2d(std::vector< Functions::Function2dForm * > &a_functions, std::vector< double > &a_Xs)