17 if( order < 0 )
throw 1;
32 int length = (
int) energies.size( );
34 if( length != (
int) fluxes.size( ) )
throw 1;
35 initialize( order, length, &(energies[0]), &(fluxes[0]) );
42 initialize( fluxOrder.mOrder, fluxOrder.
size( ), &(fluxOrder.mEnergies[0]), &(fluxOrder.mFluxes[0]) );
47 void GIDI_settings_flux_order::initialize(
int order,
int length,
double const *energies,
double const *fluxes ) {
49 if( order < 0 )
throw 1;
51 mEnergies.resize( length, 0 );
52 mFluxes.resize( length, 0 );
53 for(
int i1 = 0; i1 < length; ++i1 ) mEnergies[i1] = energies[i1];
54 for(
int i1 = 0; i1 < length; ++i1 ) mFluxes[i1] = fluxes[i1];
67 int nE = (
int) mEnergies.size( );
68 bool printIndent =
true;
71 std::cout <<
" ORDER: " << mOrder << std::endl;
72 for(
int iE = 0; iE <
nE; ++iE ) {
73 if( printIndent ) std::cout <<
" ";
75 sprintf( buffer,
" %15.8e %15.8e", mEnergies[iE], mFluxes[iE] );
77 if( ( ( iE + 1 ) % valuesPerLine ) == 0 ) {
78 std::cout << std::endl;
82 if( nE % valuesPerLine ) std::cout << std::endl;
92 mTemperature = temperature;
100 mTemperature = temperature;
108 mTemperature = flux.mTemperature;
109 for( std::vector<GIDI_settings_flux_order>::const_iterator iter = flux.mFluxOrders.begin( ); iter < flux.mFluxOrders.end( ); ++iter )
addFluxOrder( *iter );
122 return( &(mFluxOrders[index]) );
133 if( order > (
int) mFluxOrders.size( ) )
throw 1;
134 mFluxOrders.push_back( fluxOrder );
141 std::cout <<
"FLUX: label = '" << mLabel <<
"': maximum order = " << (
size( ) + 1 ) << std::endl;
142 if( outline )
return;
143 for( std::vector<GIDI_settings_flux_order>::const_iterator iter = mFluxOrders.begin( ); iter < mFluxOrders.end( ); ++iter ) iter->print( valuesPerLine );
151 GIDI_settings_fluxes_from_bdfls::GIDI_settings_fluxes_from_bdfls( std::string
const &fileName,
double temperature_MeV = 0 ) {
153 initialize( fileName.c_str( ), temperature_MeV );
158 GIDI_settings_fluxes_from_bdfls::GIDI_settings_fluxes_from_bdfls(
char const *fileName,
double temperature_MeV = 0 ) {
165 GIDI_settings_fluxes_from_bdfls::GIDI_settings_fluxes_from_bdfls( cbdfls_file
const *bdfls,
double temperature_MeV = 0 ) {
167 initialize2( bdfls, temperature_MeV );
177 if( ( bdfls = cbdflsOpen( fileName, &Error ) ) == NULL )
throw Error;
178 initialize2( bdfls, temperature_MeV );
179 cbdflsRelease( bdfls );
184 void GIDI_settings_fluxes_from_bdfls::initialize2( cbdfls_file
const *bdfls,
double temperature_MeV ) {
186 int nf, length, *fids, order;
187 double *energies, *fluxes;
190 nf = cbdflsFIDs( (cbdfls_file *) bdfls, &fids );
191 for(
int if1 = 0; if1 < nf; ++if1 ) {
192 sprintf( label,
"LLNL_fid_%.3d", fids[if1] );
194 order = cbdflsGetFluxOrder( (cbdfls_file *) bdfls, fids[if1] );
195 for(
int io = 0; io <= order; ++io ) {
196 length = cbdflsGetFlux( (cbdfls_file *) bdfls, fids[if1], io, &energies, &fluxes );
200 mFluxes.push_back( flux );
207 GIDI_settings_fluxes_from_bdfls::~GIDI_settings_fluxes_from_bdfls( ) {
217 sprintf( label,
"LLNL_fid_%.3d", fid );
218 for(
int if1 = 0; if1 < (
int) mFluxes.size( ); ++if1 ) {
219 if( mFluxes[if1].isLabel( label ) )
return( mFluxes[if1] );
226 std::vector<std::string> GIDI_settings_fluxes_from_bdfls::getLabels(
void ) {
228 int size = (
int) mFluxes.size( );
229 std::vector<std::string> labels( size );
231 for(
int if1 = 0; if1 < size; ++if1 ) labels[if1] = mFluxes[if1].getLabel( );
237 std::vector<int> GIDI_settings_fluxes_from_bdfls::getFIDs(
void ) {
239 int size = (
int) mFluxes.size( );
240 std::vector<int> fids( size );
243 for(
int if1 = 0; if1 < size; ++if1 ) {
244 fids[if1] = (
int) strtol( &(mFluxes[if1].getLabel( ).c_str( )[9]), &e, 10 );
253 int nfs = (
int) mFluxes.size( );
255 std::cout <<
"BDFLS FLUXes: number of fluxes = " << nfs << std::endl;
256 for(
int if1 = 0; if1 < nfs ; ++if1 ) mFluxes[if1].
print( outline, valuesPerLine );
void print(int valuesPerLine=10) const
~GIDI_settings_flux_order()
GIDI_settings_flux_order const * operator[](int order) const
typedef int(XMLCALL *XML_NotStandaloneHandler)(void *userData)
void print(bool outline=true, int valuesPerLine=10) const
void initialize(Config const *const theConfig)
Initialize the clustering model based on the Config object.
void print(G4double elem)
std::string getLabel() const
GIDI_settings_flux(std::string const &label, double temperature_MeV)
GIDI_settings_flux_order(int order)
void addFluxOrder(GIDI_settings_flux_order const &fluxOrder)