28 m_outerDomainValue( 0.0 ) {
35 m_dimension( a_function.dimension( ) ),
46 m_dimension( a_dimension ),
47 m_domainMin( a_domainMin ),
48 m_domainMax( a_domainMax ),
49 m_interpolation( a_interpolation ),
50 m_outerDomainValue( a_outerDomainValue ) {
77 switch( m_interpolation ) {
137 FunctionBase( 1, a_domainMin, a_domainMax, a_interpolation, a_outerDomainValue ),
157 String typeStr(
"Function1d::" );
164 typeStr +=
"constant";
170 typeStr +=
"polyomial";
173 typeStr +=
"gridded";
176 typeStr +=
"regions";
179 typeStr +=
"branching";
182 typeStr +=
"TerrellFissionNeutronMultiplicityModel";
208 value =
static_cast<XYs1d const *
>( this )->
evaluate( a_x1 );
320 value =
static_cast<XYs1d const *
>( this )->
evaluate( a_x1 );
335 String message(
"Function1d_d1::evaluate: Unsupported Function1d_d1 " +
typeString( ) );
361 value =
static_cast<XYs1d const *
>( this )->
evaluate( a_x1 );
373 String message(
"Function1d_d2::evaluate: Unsupported Function1d_d2 " +
typeString( ) );
404 m_value( a_form1d.value( ) ) {
445 Function1d_d2( a_Xs[0], a_Xs.back( ), a_interpolation, a_outerDomainValue ),
458 std::size_t size = a_XYs1d.
size( );
462 for( std::size_t i1 = 0; i1 < size; ++i1 ) {
463 std::pair<double, double> xy = a_XYs1d[i1];
465 m_Ys[i1] = xy.second;
483 if( intLower == -2 )
return( m_Ys[0] );
484 return( m_Ys.back( ) );
486 std::size_t lower =
static_cast<std::size_t
>( intLower );
488 double evaluatedValue = 0.0;
489 double y1 = m_Ys[lower];
492 evaluatedValue = y1; }
494 double x1 = m_Xs[lower];
495 double x2 = m_Xs[lower+1];
496 double y2 = m_Ys[lower+1];
499 double fraction = ( x2 - a_x1 ) / ( x2 - x1 );
500 evaluatedValue = fraction * y1 + ( 1 - fraction ) * y2; }
502 double fraction = log( x2 / a_x1 ) / log( x2 / x1 );
503 evaluatedValue = fraction * y1 + ( 1 - fraction ) * y2; }
505 double fraction = ( x2 - a_x1 ) / ( x2 - x1 );
506 evaluatedValue = exp( fraction * log( y1 ) + ( 1 - fraction ) * log( y2 ) ); }
508 double fraction = log( x2 / a_x1 ) / log( x2 / x1 );
509 evaluatedValue = exp( fraction * log( y1 ) + ( 1 - fraction ) * log( y2 ) ); }
511 LUPI_THROW(
"XYs1d::evaluate: unsupport interpolation." );
515 return( evaluatedValue );
540 m_coefficientsReversed( ) {
549 m_coefficients( a_coefficients ) {
553 m_coefficientsReversed.reserve( m_coefficients.size( ) );
555 m_coefficientsReversed.push_back( *iter );
566 m_coefficientsReversed.reserve( m_coefficients.size( ) );
568 m_coefficientsReversed.push_back( *iter );
585 d_value = *iter + d_value * a_x1;
626 m_grid.
resize( grid.size( ) );
627 for( std::size_t i1 = 0; i1 < grid.size( ); ++i1 ) m_grid[i1] = grid[i1];
630 m_data.
resize( data.size( ) );
631 for( std::size_t i1 = 0; i1 < data.size( ); ++i1 ) m_data[i1] = data[i1];
682 m_Xs.reserve( a_regions1d.
size( ) + 1 );
683 m_functions1d.reserve( a_regions1d.
size( ) );
692 for( std::size_t i1 = 0; i1 < m_functions1d.size( ); ++i1 )
delete m_functions1d[i1];
699 if( m_functions1d.size( ) == 0 ) m_Xs.push_back( a_function1d->
domainMin( ) );
700 m_Xs.push_back( a_function1d->
domainMax( ) );
702 m_functions1d.push_back( a_function1d );
712 if( intLower == -1 ) {
713 return( m_functions1d.back( )->evaluate( a_x1 ) );
718 std::size_t lower =
static_cast<std::size_t
>( intLower );
720 return( m_functions1d[lower]->
evaluate( a_x1 ) );
736 std::size_t vectorSize = m_functions1d.size( );
737 int vectorSizeInt = (int) vectorSize;
739 vectorSize = (std::size_t) vectorSizeInt;
742 for( std::size_t vectorIndex = 0; vectorIndex < vectorSize; ++vectorIndex ) {
770 m_initialStateIndex( -1 ) {
776 std::string message(
"Branching1d: initial state not found: pid = '" + a_form1d.initialState( ) +
"'." );
777 throw std::runtime_error( message.c_str( ) );
779 m_initialStateIndex = iter->second;
820 m_multiplicity( nullptr ) {
831 m_multiplicity( a_multiplicity ) {
834 if( a_width < 0.0 ) m_width = 1.079;
842 delete m_multiplicity;
855 return( m_multiplicity->evaluate( a_energy ) );
887 FunctionBase( 2, a_domainMin, a_domainMax, a_interpolation, a_outerDomainValue ),
907 String typeStr(
"Function2d::" );
932 return(
static_cast<XYs2d const *
>(
this )->
evaluate( a_x2, a_x1 ) );
986 m_Xs( a_XYs2d.Xs( ) ) {
991 m_functions1d.resize( function1ds.
size( ) );
992 for( std::size_t i1 = 0; i1 < function1ds.
size( ); ++i1 ) m_functions1d[i1] =
parseFunction1d_d1( function1ds[i1] );
1000 for( std::size_t i1 = 0; i1 < m_functions1d.size( ); ++i1 )
delete m_functions1d[i1];
1008 double evaluatedValue = 0.0;
1010 if( intLower < 0 ) {
1011 if( intLower == -1 ) {
1012 evaluatedValue = m_functions1d.back( )->evaluate( a_x1 ); }
1014 evaluatedValue = m_functions1d[0]->evaluate( a_x1 );
1017 std::size_t lower =
static_cast<std::size_t
>( intLower );
1018 double y1 = m_functions1d[lower]->evaluate( a_x1 );
1021 evaluatedValue = y1; }
1023 double x1 = m_Xs[lower];
1024 double x2 = m_Xs[lower+1];
1025 double y2 = m_functions1d[lower+1]->evaluate( a_x1 );
1028 double fraction = ( x2 - a_x2 ) / ( x2 - x1 );
1029 evaluatedValue = fraction * y1 + ( 1 - fraction ) * y2; }
1031 double fraction = log( x2 / a_x2 ) / log( x2 / x1 );
1032 evaluatedValue = fraction * y1 + ( 1 - fraction ) * y2; }
1034 double fraction = ( x2 - a_x2 ) / ( x2 - x1 );
1035 evaluatedValue = exp( fraction * log( y1 ) + ( 1 - fraction ) * log( y2 ) ); }
1037 double fraction = log( x2 / a_x2 ) / log( x2 / x1 );
1038 evaluatedValue = exp( fraction * log( y1 ) + ( 1 - fraction ) * log( y2 ) ); }
1040 LUPI_THROW(
"XYs2d::evaluate: unsupport interpolation." );
1045 return( evaluatedValue );
1061 std::size_t vectorSize = m_functions1d.size( );
1062 int vectorSizeInt = (int) vectorSize;
1064 vectorSize = (std::size_t) vectorSizeInt;
1067 for( std::size_t vectorIndex = 0; vectorIndex < vectorSize; ++vectorIndex ) {
1080 if( preProcessingChainEnds.size( ) != 1 )
throw std::runtime_error(
"Functions::parseMultiplicityFunction1d: preProcessingChainEnds != 1." );
1082 std::string
const &label = preProcessingChainEnds[0]->label( );
1084 if( a_suite.
has(
"muCutoff" ) ) {
1115 std::cout <<
"parseFunction1d_d1: Unsupported Function1d reference1d.";
1118 throw std::runtime_error(
"Functions::parseFunction1d_d1: Unsupported Function1d" );
1141 std::cout <<
"Functions::parseFunction1d_d2: Unsupported Function1d reference1d.";
1144 throw std::runtime_error(
"Functions::parseFunction1d_d2: Unsupported Function1d" );
1161 throw std::runtime_error(
"Functions::parseFunction2d: Unsupported Function2d" );
1176namespace Probabilities {
1260 String typeStr(
"ProbabilityBase1d::" );
1267 typeStr +=
"xs_pdf_cdf";
1341 m_pdf( a_xs_pdf_cdf1d.pdf( ) ),
1342 m_cdf( a_xs_pdf_cdf1d.cdf( ) ) {
1360 if( intLower < 0 ) {
1361 if( intLower == -2 )
return( m_pdf[0] );
1362 return( m_pdf.back( ) );
1365 std::size_t lower =
static_cast<std::size_t
>( intLower );
1366 double fraction = ( a_x1 -
m_Xs[lower] ) / (
m_Xs[lower+1] -
m_Xs[lower] );
1368 return( ( 1. - fraction ) * m_pdf[lower] + fraction * m_pdf[lower+1] );
1428 String typeStr(
"ProbabilityBase2d::" );
1438 typeStr +=
"regions";
1441 typeStr +=
"isotropic";
1444 typeStr +=
"discreteGamma";
1447 typeStr +=
"primaryGamma";
1450 typeStr +=
"recoil";
1453 typeStr +=
"NBodyPhaseSpace";
1456 typeStr +=
"evaporation";
1459 typeStr +=
"generalEvaporation";
1462 typeStr +=
"simpleMaxwellianFission";
1468 typeStr +=
"weightedFunctionals";
1544 LUPI_THROW(
"ProbabilityBase2d_d1::evaluate: This should never happen." );
1565 value =
static_cast<XYs2d const *
>( this )->
evaluate( a_x2, a_x1 );
1592 value =
static_cast<Watt2d const *
>( this )->
evaluate( a_x2, a_x1 );
1597 LUPI_THROW(
"ProbabilityBase2d_d2::evaluate: This should never happen." );
1609 m_probabilities( ) {
1622 m_probabilities.resize( function1ds.
size( ) );
1623 for( std::size_t i1 = 0; i1 < function1ds.
size( ); ++i1 ) m_probabilities[i1] =
parseProbability1d( function1ds[i1] );
1631 for( std::size_t i1 = 0; i1 < m_probabilities.size( ); ++i1 )
delete m_probabilities[i1];
1640 if( intLower < 0 ) {
1641 if( intLower == -2 )
return( m_probabilities[0]->
evaluate( a_x1 ) );
1642 return( m_probabilities.back( )->evaluate( a_x1 ) );
1645 std::size_t lower =
static_cast<std::size_t
>( intLower );
1646 double fraction = ( a_x2 -
m_Xs[lower] ) / (
m_Xs[lower+1] -
m_Xs[lower] );
1647 double d_value = ( 1.0 - fraction ) * m_probabilities[lower]->
evaluate( a_x1 ) + fraction * m_probabilities[lower+1]->evaluate( a_x1 );
1664 std::size_t vectorSize = m_probabilities.size( );
1665 int vectorSizeInt = (int) vectorSize;
1667 vectorSize = (std::size_t) vectorSizeInt;
1672 for( std::size_t vectorIndex = 0; vectorIndex < vectorSize; ++vectorIndex ) {
1683 m_probabilities( ) {
1696 m_probabilities.resize( function2ds.
size( ) );
1697 for( std::size_t i1 = 0; i1 < function2ds.
size( ); ++i1 ) m_probabilities[i1] =
parseProbability2d_d2( function2ds[i1],
nullptr );
1705 for( std::size_t i1 = 0; i1 < m_probabilities.size( ); ++i1 )
delete m_probabilities[i1];
1714 if( intLower < 0 ) {
1715 if( intLower == -1 ) {
1716 return( m_probabilities.back( )->evaluate( a_x2, a_x1 ) );
1721 std::size_t lower =
static_cast<std::size_t
>( intLower );
1723 return( m_probabilities[lower]->
evaluate( a_x2, a_x1 ) );
1738 std::size_t vectorSize = m_probabilities.size( );
1739 int vectorSizeInt = (int) vectorSize;
1741 vectorSize = (std::size_t) vectorSizeInt;
1745 for( std::size_t vectorIndex = 0; vectorIndex < vectorSize; ++vectorIndex ) {
1791 m_value( a_discreteGamma2d.value( ) ) {
1823 m_primaryEnergy( 0.0 ),
1824 m_massFactor( 0.0 ),
1826 m_initialStateIndex( -1 ) {
1835 m_primaryEnergy( a_primaryGamma2d.value( ) ),
1836 m_massFactor( a_setupInfo->m_protare.targetMass( ) / ( a_setupInfo->m_protare.projectileMass( ) + a_setupInfo->m_protare.targetMass( ) ) ),
1837 m_finalState( a_primaryGamma2d.
finalState( ).c_str( ) ),
1838 m_initialStateIndex( -1 ) {
1844 std::map<std::string,int>::iterator iter = a_setupInfo->m_stateNamesToIndices.find( a_primaryGamma2d.finalState( ) );
1845 if( iter == a_setupInfo->m_stateNamesToIndices.end( ) ) {
1846 std::string message(
"Branching1d: final state not found: pid = '" + a_primaryGamma2d.finalState( ) +
"'." );
1847 throw std::runtime_error( message.c_str( ) );
1849 m_initialStateIndex = iter->second;
1866 double energy_out = m_primaryEnergy + a_x2 * m_massFactor;
1869 if( energy_out == a_x1 )
return( 1.0 );
1905 m_xlink( a_recoil2d.xlink( ).c_str( ) ) {
1921#if !defined(__NVCC__) && !defined(__HIP__)
1922 LUPI_THROW(
"Recoil2d::evaluate: not implemented." );
1948 m_numberOfProducts( 0 ),
1950 m_energy_in_COMFactor( 0.0 ),
1951 m_massFactor( 0.0 ),
1962 m_numberOfProducts( a_NBodyPhaseSpace2d.numberOfProducts( ) ),
1964 m_energy_in_COMFactor( a_setupInfo->m_protare.targetMass( ) / ( a_setupInfo->m_protare.projectileMass( ) + a_setupInfo->m_protare.targetMass( ) ) ),
1965 m_massFactor( 1 - a_setupInfo->m_product1Mass / m_mass ),
1966 m_Q( a_setupInfo->m_Q ),
1970 double xs[2] = { 0.0, 1.0 };
1973 pdf =
ptwXY_createFromFunction(
nullptr, 2, xs, MCGIDI_NBodyPhaseSpacePDF_callback, (
void *) &m_numberOfProducts, 1e-3, 0, 16 );
1974 if( pdf ==
nullptr )
throw std::runtime_error(
"NBodyPhaseSpace2d::NBodyPhaseSpace2d: ptwXY_createFromFunction returned nullptr" );
1976 m_dist = ptwXY_To_Xs_pdf_cdf1d( pdf );
1992 int numberOfProducts = *((
int *) argList);
1993 double exponent = 0.5 * ( 3 * numberOfProducts - 8 );
1995 *
Y = sqrt( X ) * pow( 1.0 - X, exponent );
2003 double EMax = ( m_energy_in_COMFactor * a_x2 + m_Q ) * m_massFactor;
2004 double x1 = a_x1 / EMax;
2006 return( m_dist->evaluate( x1 ) );
2036 m_theta( nullptr ) {
2045 m_U( a_evaporation2d.U( ) ),
2046 m_theta(
Functions::parseFunction1d_d1( a_evaporation2d.theta( ) ) ) {
2063 double theta = m_theta->evaluate( a_x2 );
2064 double E_U_theta = ( a_x2 - m_U ) / theta;
2065 double Ep_theta = a_x1 / theta;
2067 if( E_U_theta < 0 )
return( 0.0 );
2068 return( Ep_theta * exp( -Ep_theta ) / ( theta * ( 1.0 - exp( -E_U_theta ) * ( 1.0 + E_U_theta ) ) ) );
2103 m_theta(
Functions::parseFunction1d_d1( a_generalEvaporation2d.theta( ) ) ),
2122 return( m_g->evaluate( a_x1 / m_theta->evaluate( a_x2 ) ) );
2147 m_theta( nullptr ) {
2156 m_U( a_simpleMaxwellianFission2d.U( ) ),
2157 m_theta(
Functions::parseFunction1d_d1( a_simpleMaxwellianFission2d.theta( ) ) ) {
2174 double theta = m_theta->evaluate( a_x2 );
2175 double E_U_theta = ( a_x2 - m_U ) / theta;
2177 if( E_U_theta < 0 )
return( 0.0 );
2179 double Ep_theta = a_x1 / theta;
2180 double sqrt_E_U_theta = sqrt( E_U_theta );
2182 return( sqrt( Ep_theta ) * exp( -Ep_theta ) / ( theta * ( erf( sqrt_E_U_theta ) / M_2_SQRTPI - sqrt_E_U_theta * exp( -E_U_theta ) ) ) );
2217 m_U( a_Watt2d.U( ) ),
2218 m_a(
Functions::parseFunction1d_d1( a_Watt2d.a( ) ) ),
2219 m_b(
Functions::parseFunction1d_d1( a_Watt2d.b( ) ) ) {
2237 double Watt_a = m_a->evaluate( a_x2 );
2238 double E_U_a = ( a_x2 - m_U ) / Watt_a;
2240 if( E_U_a < 0 )
return( 0.0 );
2242 double Watt_b = m_b->evaluate( a_x2 );
2243 double sqrt_ab_4 = 0.5 * sqrt( Watt_a * Watt_b );
2244 double sqrt_E_U_a = sqrt( E_U_a );
2246 double I = 0.5 * sqrt_ab_4 * Watt_a * sqrt(
M_PI ) * ( erf( sqrt_E_U_a - sqrt_ab_4 ) + erf( sqrt_E_U_a + sqrt_ab_4 ) )
2247 - Watt_a * exp( -E_U_a ) * sinh( 2.0 * sqrt_E_U_a * sqrt_ab_4 );
2248 return( exp( -a_x1 / Watt_a ) * sinh( sqrt( Watt_b * a_x1 ) ) / I );
2287 m_weight.resize( weighted_function2d.size( ) );
2288 m_energy.resize( weighted_function2d.size( ) );
2289 for( std::size_t i1 = 0; i1 < weighted_function2d.size( ); ++i1 ) {
2290 m_weight[i1] = Functions::parseFunction1d_d1( weighted_function2d[i1]->weight( ) );
2291 m_energy[i1] = parseProbability2d_d1( weighted_function2d[i1]->energy( ), nullptr );
2300 for( std::size_t i1 = 0; i1 < m_weight.size( ); ++i1 )
delete m_weight[i1];
2301 for( std::size_t i1 = 0; i1 < m_energy.size( ); ++i1 )
delete m_energy[i1];
2308 std::size_t n1 = m_weight.size( );
2309 double evaluatedValue = 0;
2311 for( std::size_t i1 = 0; i1 < n1; ++i1 ) {
2312 evaluatedValue += m_weight[i1]->evaluate( a_x2 ) * m_energy[i1]->evaluate( a_x2, a_x1 );
2314 return( evaluatedValue );
2329 std::size_t vectorSize = m_weight.size( );
2330 int vectorSizeInt = (int) vectorSize;
2332 vectorSize = (std::size_t) vectorSizeInt;
2335 for( std::size_t vectorIndex = 0; vectorIndex < vectorSize; ++vectorIndex ) {
2339 vectorSize = m_energy.size( );
2340 vectorSizeInt = (int) vectorSize;
2342 vectorSize = (std::size_t) vectorSizeInt;
2345 for( std::size_t vectorIndex = 0; vectorIndex < vectorSize; ++vectorIndex ) {
2384 String typeStr(
"ProbabilityBase3d::" );
2410 return(
static_cast<XYs3d const *
>(
this )->
evaluate( a_x3, a_x2, a_x1 ) );
2454 m_probabilities( ) {
2467 m_probabilities.resize( functions2d.
size( ) );
2468 for( std::size_t i1 = 0; i1 < functions2d.
size( ); ++i1 ) m_probabilities[i1] =
parseProbability2d_d1( functions2d[i1],
nullptr );
2476 for( std::size_t i1 = 0; i1 < m_probabilities.size( ); ++i1 )
delete m_probabilities[i1];
2484 double evaluatedValue;
2486 if( intLower == -2 ) {
2487 evaluatedValue = m_probabilities[0]->evaluate( a_x2, a_x1 ); }
2488 else if( intLower == -1 ) {
2489 evaluatedValue = m_probabilities.back( )->evaluate( a_x2, a_x1 ); }
2491 std::size_t lower =
static_cast<std::size_t
>( intLower );
2492 double value1 = m_probabilities[lower]->evaluate( a_x2, a_x1 );
2495 evaluatedValue = value1; }
2497 double value2 = m_probabilities[lower+1]->evaluate( a_x2, a_x1 );
2500 double fraction = (
m_Xs[lower+1] - a_x3 ) / (
m_Xs[lower+1] -
m_Xs[lower] );
2501 evaluatedValue = fraction * value1 + ( 1 - fraction ) * value2 ; }
2503 double fraction = (
m_Xs[lower+1] - a_x3 ) / (
m_Xs[lower+1] -
m_Xs[lower] );
2504 evaluatedValue = value2 * pow( value2 / value1, fraction ); }
2506 double fraction = log(
m_Xs[lower+1] / a_x3 ) / log(
m_Xs[lower+1] /
m_Xs[lower] );
2507 evaluatedValue = fraction * value1 + ( 1 - fraction ) * value2; }
2509 double fraction = log(
m_Xs[lower+1] / a_x3 ) / log(
m_Xs[lower+1] /
m_Xs[lower] );
2510 evaluatedValue = value2 * pow( value2 / value1, fraction ); }
2512 LUPI_THROW(
"XYs3d::evaluate: unsupported interpolation." );
2517 return( evaluatedValue );
2532 std::size_t vectorSize = m_probabilities.size( );
2533 int vectorSizeInt = (int) vectorSize;
2535 vectorSize = (std::size_t) vectorSizeInt;
2539 for( std::size_t vectorIndex = 0; vectorIndex < vectorSize; ++vectorIndex ) {
2560 throw std::runtime_error(
"Probabilities::parseProbability1d: Unsupported Function1d with moniker " + a_form1d->
moniker( )
2561 +
" at " + a_form1d->
toXLink( ) );
2600 throw std::runtime_error(
"Probabilities::parseProbability2d: Unsupported Function2d" );
2637 throw std::runtime_error(
"Probabilities::parseProbability2d: Unsupported Function2d" );
2670 throw std::runtime_error(
"Probabilities::parseProbability2d: Unsupported Function2d" );
2687 throw std::runtime_error(
"Probabilities::parseProbability3d: Unsupported Function3d" );
2700 std::size_t n1 = (std::size_t)
ptwXY_length(
nullptr, pdfXY );
2701 std::vector<double> Xs( n1 ), pdf( n1 ), cdf( n1 );
2703 if( ( cdfX =
ptwXY_runningIntegral(
nullptr, pdfXY ) ) ==
nullptr )
throw std::runtime_error(
"ptwXY_To_Xs_pdf_cdf1d: ptwXY_runningIntegral returned error." );
2705 if( norm <= 0 )
throw std::runtime_error(
"ptwXY_To_Xs_pdf_cdf1d: norm <= 0." );
2708 for( std::size_t i1 = 0; i1 < n1; ++i1 ) {
2711 pdf[i1] = norm * point->
y;
2721 Xs_pdf_cdf1d *xs_pdf_cdf1d =
new Xs_pdf_cdf1d( gidi_xs_pdf_cdf1d );
2722 return( xs_pdf_cdf1d );
2747 return( a_function->
type( ) );
2786 String message(
"serializeFunction1d: Unsupported Function1d: " + a_function1d->
typeString( ) );
2794 a_function1d =
nullptr;
2855 LUPI_THROW(
"serializeFunction1d: Unsupported Function1d:" );
2885 LUPI_THROW(
"serializeFunction1d: Unsupported Function1d:" );
2889 if( a_function1d !=
nullptr ) {
2897 static_cast<Functions::XYs1d *
>( a_function1d )->serialize( a_buffer, a_mode );
2915 LUPI_THROW(
"serializeFunction1d: Unsupported Function1d:" );
2919 return( a_function1d );
2955 String message(
"serializeFunction1d_d1: Unsupported Function1d: " + a_function1d->
typeString( ) );
2963 a_function1d =
nullptr;
3016 LUPI_THROW(
"serializeFunction1d_d1: Unsupported Function1d:" );
3043 LUPI_THROW(
"serializeFunction1d_d1: Unsupported Function1d:" );
3047 if( a_function1d !=
nullptr ) {
3055 static_cast<Functions::XYs1d *
>( a_function1d )->serialize( a_buffer, a_mode );
3070 LUPI_THROW(
"serializeFunction1d_d1: Unsupported Function1d:" );
3074 return( a_function1d );
3108 String message(
"serializeFunction1d_d2: Unsupported Function1d: " + a_function1d->
typeString( ) );
3116 a_function1d =
nullptr;
3161 LUPI_THROW(
"serializeFunction1d_d2: Unsupported Function1d:" );
3185 LUPI_THROW(
"serializeFunction1d_d2: Unsupported Function1d:" );
3189 if( a_function1d !=
nullptr ) {
3197 static_cast<Functions::XYs1d *
>( a_function1d )->serialize( a_buffer, a_mode );
3209 LUPI_THROW(
"serializeFunction1d_d2: Unsupported Function1d:" );
3213 return( a_function1d );
3222 return( a_function->
type( ) );
3249 a_function2d =
nullptr;
3272 if( a_function2d !=
nullptr ) {
3277 static_cast<Functions::XYs2d *
>( a_function2d )->serialize( a_buffer, a_mode );
3282 return( a_function2d );
3291 return( a_function->
type( ) );
3319 a_probability1d =
nullptr;
3341 if( a_probability1d !=
nullptr ) {
3351 return( a_probability1d );
3360 return( a_function->
type( ) );
3421 a_probability2d =
nullptr;
3565 if( a_probability2d !=
nullptr ) {
3608 return( a_probability2d );
3659 LUPI_THROW(
"Probabilities::ProbabilityBase2d_d1: Unsupported ProbabilityBase2d_d1." );
3668 a_probability2d =
nullptr;
3801 if( a_probability2d !=
nullptr ) {
3841 return( a_probability2d );
3889 LUPI_THROW(
"Probabilities::ProbabilityBase2d_d1: Unsupported ProbabilityBase2d_d2" );
3898 a_probability2d =
nullptr;
4020 if( a_probability2d !=
nullptr ) {
4057 return( a_probability2d );
4066 return( a_function->
type( ) );
4093 a_probability3d =
nullptr;
4115 if( a_probability3d !=
nullptr ) {
4125 return( a_probability3d );
G4double Y(G4double density)
#define DATA_MEMBER_STRING(member, buf, mode)
#define DATA_MEMBER_VECTOR_DOUBLE(member, buf, mode)
#define DATA_MEMBER_DOUBLE(member, buf, mode)
#define DATA_MEMBER_INT( member, buf, mode)
std::string const & initialState() const
Vector const & grid() const
Vector const & data() const
std::vector< double > const & coefficients() const
std::string const & finalState() const
std::vector< Function2dForm * > const & function2ds() const
std::vector< Weighted_function2d * > const & weighted_function2d() const
std::vector< Function1dForm * > const & function1ds() const
std::vector< Function2dForm * > const & function2ds() const
std::vector< Base const * > const & preProcessingChainEnds() const
T * getViaLineage(std::string const &a_label)
bool has(std::string const &a_label) const
T * get(std::size_t a_Index)
void resize(std::size_t a_number, double a_value=0.0)
std::string const & moniker() const
std::string toXLink() const
LUPI_HOST_DEVICE void incrementPlacement(std::size_t a_delta)
LUPI_HOST_DEVICE Branching1d()
LUPI_HOST_DEVICE double evaluate(double a_x1) const
LUPI_HOST_DEVICE ~Branching1d()
LUPI_HOST_DEVICE void serialize(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode)
LUPI_HOST_DEVICE void serialize(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode)
LUPI_HOST_DEVICE Constant1d()
LUPI_HOST_DEVICE ~Constant1d()
LUPI_HOST_DEVICE double evaluate(double a_x1) const
LUPI_HOST_DEVICE Function1d_d1()
LUPI_HOST_DEVICE double evaluate(double a_x1) const
LUPI_HOST_DEVICE Function1d_d2()
LUPI_HOST_DEVICE String typeString() const
LUPI_HOST_DEVICE Function1dType type() const
LUPI_HOST_DEVICE Function1d()
LUPI_HOST_DEVICE void serialize(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode)
LUPI_HOST_DEVICE ~Function1d()
LUPI_HOST_DEVICE MCGIDI_VIRTUAL_FUNCTION double evaluate(double a_x1) const MCGIDI_TRUE_VIRTUAL
LUPI_HOST_DEVICE Function2dType type() const
LUPI_HOST_DEVICE void serialize(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode)
LUPI_HOST_DEVICE String typeString() const
LUPI_HOST_DEVICE MCGIDI_VIRTUAL_FUNCTION double evaluate(double a_x2, double a_x1) const MCGIDI_TRUE_VIRTUAL
LUPI_HOST_DEVICE Function2d()
LUPI_HOST_DEVICE ~Function2d()
LUPI_HOST_DEVICE double domainMin() const
LUPI_HOST_DEVICE FunctionBase()
LUPI_HOST_DEVICE Interpolation interpolation() const
virtual LUPI_HOST_DEVICE ~FunctionBase()=0
LUPI_HOST_DEVICE double domainMax() const
LUPI_HOST_DEVICE double outerDomainValue() const
LUPI_HOST_DEVICE void serialize(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode)
LUPI_HOST_DEVICE ~Gridded1d()
LUPI_HOST_DEVICE double evaluate(double a_x1) const
LUPI_HOST_DEVICE Gridded1d()
LUPI_HOST_DEVICE void serialize(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode)
LUPI_HOST_DEVICE Polynomial1d()
LUPI_HOST_DEVICE double evaluate(double a_x1) const
LUPI_HOST_DEVICE void serialize(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode)
LUPI_HOST_DEVICE ~Polynomial1d()
LUPI_HOST_DEVICE ~Regions1d()
LUPI_HOST_DEVICE void serialize(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode)
LUPI_HOST_DEVICE void append(Function1d_d2 *a_function1d)
LUPI_HOST_DEVICE Regions1d()
LUPI_HOST_DEVICE double evaluate(double a_x1) const
LUPI_HOST_DEVICE ~TerrellFissionNeutronMultiplicityModel()
LUPI_HOST_DEVICE double evaluate(double a_energy) const
LUPI_HOST_DEVICE TerrellFissionNeutronMultiplicityModel()
LUPI_HOST_DEVICE void serialize(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode)
LUPI_HOST_DEVICE ~XYs1d()
LUPI_HOST_DEVICE double evaluate(double a_x1) const
LUPI_HOST_DEVICE void serialize(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode)
LUPI_HOST_DEVICE ~XYs2d()
LUPI_HOST_DEVICE double evaluate(double a_x2, double a_x1) const
LUPI_HOST_DEVICE void serialize(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode)
LUPI_HOST_DEVICE void serialize(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode)
LUPI_HOST_DEVICE ~DiscreteGamma2d()
LUPI_HOST_DEVICE DiscreteGamma2d()
LUPI_HOST_DEVICE void serialize(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode)
LUPI_HOST_DEVICE ~Evaporation2d()
LUPI_HOST_DEVICE Evaporation2d()
LUPI_HOST_DEVICE double evaluate(double a_x2, double a_x1) const
LUPI_HOST_DEVICE GeneralEvaporation2d()
LUPI_HOST_DEVICE ~GeneralEvaporation2d()
LUPI_HOST_DEVICE double evaluate(double a_x2, double a_x1) const
LUPI_HOST_DEVICE void serialize(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode)
LUPI_HOST_DEVICE ~Isotropic2d()
LUPI_HOST_DEVICE Isotropic2d()
LUPI_HOST_DEVICE double evaluate(double a_x2, double a_x1) const
LUPI_HOST_DEVICE ~NBodyPhaseSpace2d()
LUPI_HOST_DEVICE void serialize(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode)
LUPI_HOST_DEVICE NBodyPhaseSpace2d()
String const & finalState() const
LUPI_HOST_DEVICE void serialize(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode)
LUPI_HOST_DEVICE double evaluate(double a_x2, double a_x1) const
LUPI_HOST_DEVICE ~PrimaryGamma2d()
LUPI_HOST_DEVICE PrimaryGamma2d()
LUPI_HOST_DEVICE ~ProbabilityBase1d()
ProbabilityBase1dType m_type
LUPI_HOST_DEVICE MCGIDI_VIRTUAL_FUNCTION double evaluate(double a_x1) const MCGIDI_TRUE_VIRTUAL
LUPI_HOST_DEVICE String typeString() const
LUPI_HOST_DEVICE void serialize(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode)
LUPI_HOST_DEVICE ProbabilityBase1dType type() const
LUPI_HOST_DEVICE ProbabilityBase1d()
LUPI_HOST_DEVICE ProbabilityBase2d_d1()
LUPI_HOST_DEVICE double evaluate(double a_x2, double a_x1) const
LUPI_HOST_DEVICE ProbabilityBase2d_d2()
LUPI_HOST_DEVICE double evaluate(double a_x2, double a_x1) const
LUPI_HOST_DEVICE ~ProbabilityBase2d()
LUPI_HOST_DEVICE MCGIDI_VIRTUAL_FUNCTION double evaluate(double a_x2, double a_x1) const MCGIDI_TRUE_VIRTUAL
ProbabilityBase2dType m_type
LUPI_HOST_DEVICE void serialize(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode)
LUPI_HOST_DEVICE String typeString() const
LUPI_HOST_DEVICE ProbabilityBase2dType type() const
LUPI_HOST_DEVICE ProbabilityBase2d()
LUPI_HOST_DEVICE ProbabilityBase3dType type() const
LUPI_HOST_DEVICE ProbabilityBase3d()
LUPI_HOST_DEVICE String typeString() const
LUPI_HOST_DEVICE void serialize(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode)
ProbabilityBase3dType m_type
LUPI_HOST_DEVICE ~ProbabilityBase3d()
LUPI_HOST_DEVICE MCGIDI_VIRTUAL_FUNCTION double evaluate(double a_x3, double a_x2, double a_x1) const MCGIDI_TRUE_VIRTUAL
LUPI_HOST_DEVICE void serialize(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode)
LUPI_HOST_DEVICE ~ProbabilityBase()
LUPI_HOST_DEVICE ProbabilityBase()
LUPI_HOST_DEVICE Recoil2d()
LUPI_HOST_DEVICE double evaluate(double a_x2, double a_x1) const
LUPI_HOST_DEVICE void serialize(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode)
LUPI_HOST_DEVICE ~Recoil2d()
LUPI_HOST_DEVICE double evaluate(double a_x2, double a_x1) const
LUPI_HOST_DEVICE void serialize(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode)
LUPI_HOST_DEVICE Regions2d()
LUPI_HOST_DEVICE ~Regions2d()
LUPI_HOST_DEVICE double evaluate(double a_x2, double a_x1) const
LUPI_HOST_DEVICE void serialize(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode)
LUPI_HOST_DEVICE SimpleMaxwellianFission2d()
LUPI_HOST_DEVICE ~SimpleMaxwellianFission2d()
LUPI_HOST_DEVICE Watt2d()
LUPI_HOST_DEVICE void serialize(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode)
LUPI_HOST_DEVICE ~Watt2d()
LUPI_HOST_DEVICE double evaluate(double a_x2, double a_x1) const
LUPI_HOST_DEVICE ~WeightedFunctionals2d()
LUPI_HOST_DEVICE double evaluate(double a_x2, double a_x1) const
LUPI_HOST_DEVICE WeightedFunctionals2d()
LUPI_HOST_DEVICE void serialize(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode)
LUPI_HOST_DEVICE ~XYs2d()
LUPI_HOST_DEVICE double evaluate(double a_x2, double a_x1) const
LUPI_HOST_DEVICE void serialize(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode)
LUPI_HOST_DEVICE void serialize(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode)
LUPI_HOST_DEVICE double evaluate(double a_x3, double a_x2, double a_x1) const
LUPI_HOST_DEVICE ~XYs3d()
LUPI_HOST_DEVICE void serialize(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode)
LUPI_HOST_DEVICE Xs_pdf_cdf1d()
LUPI_HOST_DEVICE ~Xs_pdf_cdf1d()
LUPI_HOST_DEVICE double evaluate(double a_x1) const
GIDI::ProtareSingle const & m_GIDI_protare
std::map< std::string, int > m_stateNamesToIndices
bool m_hasFinalStatePhotons
LUPI_HOST_DEVICE const char * c_str() const
raw data
LUPI_HOST_DEVICE std::size_t size() const
@ simpleMaxwellianFission2d
LUPI_HOST Function1d_d1 * parseFunction1d_d1(Transporting::MC const &a_settings, GIDI::Suite const &a_suite)
LUPI_HOST Function2d * parseFunction2d(Transporting::MC const &a_settings, GIDI::Suite const &a_suite)
LUPI_HOST Function1d * parseMultiplicityFunction1d(SetupInfo &a_setupInfo, Transporting::MC const &a_settings, GIDI::Suite const &a_suite)
LUPI_HOST Function1d_d2 * parseFunction1d_d2(GIDI::Functions::Function1dForm const *form1d)
LUPI_HOST ProbabilityBase2d_d2 * parseProbability2d_d2(GIDI::Functions::Function2dForm const *form2d, SetupInfo *a_setupInfo)
LUPI_HOST ProbabilityBase3d * parseProbability3d(Transporting::MC const &a_settings, GIDI::Suite const &a_suite)
LUPI_HOST ProbabilityBase2d_d1 * parseProbability2d_d1(GIDI::Functions::Function2dForm const *form2d, SetupInfo *a_setupInfo)
LUPI_HOST ProbabilityBase1d * parseProbability1d(Transporting::MC const &a_settings, GIDI::Suite const &a_suite)
LUPI_HOST ProbabilityBase2d * parseProbability2d(Transporting::MC const &a_settings, GIDI::Suite const &a_suite, SetupInfo *a_setupInfo)
Simple C++ string class, useful as replacement for std::string if this cannot be used,...
LUPI_HOST_DEVICE Function2dType Function2dClass(Functions::Function2d *funct)
LUPI_HOST_DEVICE Probabilities::ProbabilityBase2d * serializeProbability2d(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode, Probabilities::ProbabilityBase2d *a_probability2d)
LUPI_HOST_DEVICE Functions::Function2d * serializeFunction2d(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode, Functions::Function2d *a_function2d)
LUPI_HOST_DEVICE ProbabilityBase1dType ProbabilityBase1dClass(Probabilities::ProbabilityBase1d *funct)
LUPI_HOST_DEVICE Probabilities::ProbabilityBase2d_d1 * serializeProbability2d_d1(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode, Probabilities::ProbabilityBase2d_d1 *a_probability2d)
LUPI_HOST_DEVICE Function1dType Function1dClass(Functions::Function1d *funct)
LUPI_HOST_DEVICE Probabilities::ProbabilityBase3d * serializeProbability3d(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode, Probabilities::ProbabilityBase3d *a_probability3d)
LUPI_HOST_DEVICE Interpolation GIDI2MCGIDI_interpolation(ptwXY_interpolation a_interpolation)
LUPI_HOST_DEVICE Probabilities::ProbabilityBase2d_d2 * serializeProbability2d_d2(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode, Probabilities::ProbabilityBase2d_d2 *a_probability2d)
LUPI_HOST_DEVICE Functions::Function1d_d2 * serializeFunction1d_d2(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode, Functions::Function1d_d2 *a_function1d)
LUPI_HOST_DEVICE Functions::Function1d * serializeFunction1d(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode, Functions::Function1d *a_function1d)
LUPI_HOST_DEVICE int binarySearchVector(double a_x, Vector< double > const &a_Xs, bool a_boundIndex=false)
@ simpleMaxwellianFission
LUPI_HOST_DEVICE ProbabilityBase3dType ProbabilityBase3dClass(Probabilities::ProbabilityBase3d *funct)
LUPI_HOST_DEVICE ProbabilityBase2dType ProbabilityBase2dClass(Probabilities::ProbabilityBase2d *funct)
@ TerrellFissionNeutronMultiplicityModel
LUPI_HOST_DEVICE Functions::Function1d_d1 * serializeFunction1d_d1(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode, Functions::Function1d_d1 *a_function1d)
LUPI_HOST_DEVICE Probabilities::ProbabilityBase1d * serializeProbability1d(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode, Probabilities::ProbabilityBase1d *a_probability1d)
enum nfu_status_e nfu_status
ptwXPoints * ptwXY_runningIntegral(statusMessageReporting *smr, ptwXYPoints *ptwXY)
ptwXYPoints * ptwXY_createFromFunction(statusMessageReporting *smr, int n, double *xs, ptwXY_createFromFunction_callback func, void *argList, double accuracy, int checkForRoots, int biSectionMax)
enum ptwXY_interpolation_e ptwXY_interpolation
@ ptwXY_interpolationFlat
@ ptwXY_interpolationLinLog
@ ptwXY_interpolationLogLog
@ ptwXY_interpolationLinLin
@ ptwXY_interpolationLogLin
struct ptwXYPoints_s ptwXYPoints
int64_t ptwXY_length(statusMessageReporting *smr, ptwXYPoints *ptwXY)
struct ptwXYPoint_s ptwXYPoint
ptwXYPoints * ptwXY_free(ptwXYPoints *ptwXY)
ptwXYPoint * ptwXY_getPointAtIndex_Unsafely(ptwXYPoints const *ptwXY, int64_t index)
double ptwX_getPointAtIndex_Unsafely(ptwXPoints *ptwX, int64_t index)
struct ptwXPoints_s ptwXPoints
ptwXPoints * ptwX_free(ptwXPoints *ptwX)