6 #define GIDI_USE_BDFLS 0
8 #ifndef GIDI_settings_hpp_included
9 #define GIDI_settings_hpp_included 1
17 #include <statusMessageReporting.h>
20 #if defined( __INTEL_COMPILER )
21 #pragma warning( push )
23 #if __INTEL_COMPILER > 1399
24 #pragma warning( disable:2021 )
25 #elif __INTEL_COMPILER > 1199
26 #pragma warning( disable:2304 )
31 #define GIDI_settings_projectileEnergyMode_continuousEnergy 1
32 #define GIDI_settings_projectileEnergyMode_grouped ( 1 << 1 )
33 #define GIDI_settings_projectileEnergyMode_fixedGrid ( 1 << 2 )
48 inline double operator[](
int const index )
const {
return( mBoundaries[index] ); }
49 inline int size(
void )
const {
return( (
int) mBoundaries.size( ) ); }
51 inline double const *
pointer(
void )
const {
return( &(mBoundaries[0]) ); }
54 inline std::string
getLabel( )
const {
return( mLabel ); }
56 inline bool isLabel( std::string &label )
const {
return( label == mLabel ); }
57 void print(
bool outline =
false,
int valuesPerLine = 10 )
const;
60 void initialize( std::string
const &label,
int size,
int length,
double const *values );
66 class GIDI_settings_groups_from_bdfls {
69 std::vector<GIDI_settings_group> mGroups;
72 GIDI_settings_groups_from_bdfls( std::string
const &fileName );
73 GIDI_settings_groups_from_bdfls(
char const *fileName );
74 GIDI_settings_groups_from_bdfls( cbdfls_file
const *bdfls );
75 ~GIDI_settings_groups_from_bdfls( );
78 std::vector<std::string> getLabels(
void )
const;
79 std::vector<int> getGIDs(
void )
const;
80 void print(
bool outline =
true,
int valuesPerLine = 10 )
const;
84 void initialize2( cbdfls_file
const *bdfls );
102 double const *energies ,
103 double const *fluxes );
105 std::vector<double>
const &energies ,
106 std::vector<double>
const &fluxes );
110 inline int getOrder(
void )
const {
return( mOrder ); }
111 inline int size(
void )
const {
return( (
int) mEnergies.size( ) ); }
112 inline double const *
getEnergies(
void )
const {
return( &(mEnergies[0]) ); }
113 inline double const *
getFluxes(
void )
const {
return( &(mFluxes[0]) ); }
114 void print(
int valuesPerLine = 10 )
const;
117 void initialize(
int order,
int length,
double const *energies,
double const *fluxes );
134 inline int getMaxOrder(
void )
const {
return( (
int) mFluxOrders.size( ) - 1 ); }
135 inline int size(
void )
const {
return( (
int) mFluxOrders.size( ) ); }
137 inline std::string
getLabel( )
const {
return( mLabel ); }
138 inline bool isLabel( std::string
const &label )
const {
return( label == mLabel ); }
139 inline bool isLabel(
char const *label )
const {
return( label == mLabel ); }
142 void print(
bool outline =
true,
int valuesPerLine = 10 )
const;
146 class GIDI_settings_fluxes_from_bdfls {
149 std::vector<GIDI_settings_flux> mFluxes;
152 GIDI_settings_fluxes_from_bdfls( std::string
const &fileName,
double temperature_MeV );
153 GIDI_settings_fluxes_from_bdfls(
char const *fileName,
double temperature_MeV );
154 GIDI_settings_fluxes_from_bdfls( cbdfls_file
const *bdfls,
double temperature_MeV );
155 ~GIDI_settings_fluxes_from_bdfls( );
158 std::vector<std::string> getLabels(
void );
159 std::vector<int> getFIDs(
void );
160 void print(
bool outline =
true,
int valuesPerLine = 10 );
163 void initialize(
char const *fileName,
double temperature_MeV );
164 void initialize2( cbdfls_file
const *bdfls,
double temperature_MeV );
181 GIDI::ptwXPoints *
groupFunction( GIDI::statusMessageReporting *smr, GIDI::ptwXPoints *groupX, GIDI::ptwXYPoints *ptwXY1,
int order )
const;
197 int initialize(
int PoPId,
bool transporting,
int energyMode );
204 inline int getPoPId(
void )
const {
return( mPoPId ); }
209 GIDI::ptwXPoints *
groupFunction( GIDI::statusMessageReporting *smr, GIDI::ptwXYPoints *ptwXY1,
double temperature,
int order )
const;
235 #if defined( __INTEL_COMPILER )
236 #pragma warning( pop )
239 #endif // End of GIDI_settings_hpp_included
GIDI::ptwXPoints * groupFunction(GIDI::statusMessageReporting *smr, GIDI::ptwXPoints *groupX, GIDI::ptwXYPoints *ptwXY1, int order) const
int getNumberOfGroups(void) const
int getNumberOfGroups(void) const
bool isEnergyMode_continuous(void) const
GIDI::ptwXPoints * groupFunction(GIDI::statusMessageReporting *smr, GIDI::ptwXYPoints *ptwXY1, double temperature, int order) const
double const * getEnergies(void) const
GIDI_settings_flux const * getFlux(double temperature) const
bool isEnergyMode_fixedGrid(void) const
std::vector< GIDI_settings_flux_order > mFluxOrders
List of fluxes for each Legendre order, l, sorted by Legendre order starting with l = 0...
GIDI_settings_flux const * getProcessedFlux(double temperature) const
int addFlux(GIDI::statusMessageReporting *smr, GIDI_settings_flux const &flux)
GIDI_settings_particle(int PoPId, bool transporting, int energyMode)
void print(int valuesPerLine=10) const
GIDI_settings_group(std::string const &label="empty", int size=0)
void setGroup(GIDI_settings_group const &group)
GIDI_settings_group mGroup
GIDI_settings_group getGroup(void) const
std::vector< GIDI::ptwXYPoints * > mFluxXY
~GIDI_settings_flux_order()
double getTemperature() const
int mOrder
The Legendre order of the flux.
GIDI_settings_processedFlux(GIDI_settings_flux const &flux, GIDI::ptwXPoints *groupX)
int addParticle(GIDI_settings_particle const &particle)
GIDI_settings_flux_order const * operator[](int order) const
std::vector< double > mBoundaries
GIDI_settings_particle const * getParticle(int PoPId) const
GIDI::ptwXPoints * mGroupX
void initialize(std::string const &label, int size, int length, double const *values)
double const * getFluxes(void) const
double operator[](int const index) const
~GIDI_settings_particle()
void print(bool outline=true, int valuesPerLine=10) const
GIDI_settings_processedFlux const * nearestFluxToTemperature(double temperature) const
std::vector< double > mFluxes
List of flux values - one for each element of mEnergies.
int getMaxOrder(void) const
std::vector< double > mEnergies
List of flux energies.
double const * pointer(void) const
int getGroupIndexFromEnergy(double e_in, bool encloseOutOfRange) const
void initialize(Config const *const theConfig)
Initialize the clustering model based on the Config object.
void print(G4double elem)
int getEnergyMode(void) const
void print(bool outline=false, int valuesPerLine=10) const
int eraseParticle(int PoPId)
bool isLabel(std::string &label) const
GIDI_settings()
This is the top settings class used when a GND file is read.
This class stores the flux for one Legendre order (see class GIDI_settings_flux). ...
int getGroupIndexFromEnergy(double energy, bool encloseOutOfRange) const
G4double energy(const ThreeVector &p, const G4double m)
std::string getLabel() const
double getTemperature() const
bool isLabel(std::string const &label) const
#define GIDI_settings_projectileEnergyMode_fixedGrid
bool getTransporting(void) const
bool isLabel(char const *label) const
GIDI_settings_flux(std::string const &label, double temperature_MeV)
void setFromCDoubleArray(int length, double *values)
~GIDI_settings_processedFlux()
#define GIDI_settings_projectileEnergyMode_grouped
std::string mLabel
Label for the flux.
bool isEnergyMode_grouped(void) const
std::map< int, GIDI_settings_particle > mParticles
int initialize(int PoPId, bool transporting, int energyMode)
std::string getLabel() const
void initialize(int order, int length, double const *energies, double const *fluxes)
GIDI_settings_flux_order(int order)
#define GIDI_settings_projectileEnergyMode_continuousEnergy
std::vector< GIDI_settings_processedFlux > mProcessedFluxes
void addFluxOrder(GIDI_settings_flux_order const &fluxOrder)
std::vector< GIDI::ptwXPoints * > mGroupedFlux