#ifndef RADIX_RADIXIO_F71STREAM_HH_ #define RADIX_RADIXIO_F71STREAM_HH_ #include #include #include #include #include #include #include #include "radixio/eafstream.hh" #include "radixcore/visibility.hh" namespace radix { class RADIX_PUBLIC F71Stream { private: std::string mFile; eafstream mStream; public: F71Stream() = delete; F71Stream(const std::string& mFile); /** * @brief read_case Reads a single case from the stream * @param f71case_type& inventory * * Requires the f71case_type to have the following methods: * * setLightElementNuclides(const std::vector& zaids) * setActinideNuclides(const std::vector& zaids) * setFissionProductNuclides(const std::vector& zaids) * * setLightElementNuclideAbundances(const std::vector& abs) * setActinideNuclideAbundances(const std::vector& abs) * setFissionProductNuclideAbundances(const std::vector& abs) * * setTitle(const std::string& title) * setBasis(const std::string& basis) * * setLightElementGammaEnergyBounds(const std::vector& bounds) * setActinideGammaEnergyBounds(const std::vector& bounds) * setFissionProductGammaEnergyBounds(const std::vector& bounds) * * setLightElementSpectrum(const std::vector& spectrum) * setActinideSpectrum(const std::vector& spectrum) * setFissionProductSpectrum(const std::vector& spectrum) * * setGammaEnergyBounds(const std::vector& bounds) * setPhotonPerSSpectrum(const std::vector& spectrum) * setMevPerSSpectrum(const std::vector& spectrum) * * setPhotonSpectrumTitle(const std::string& title) * setSpontFissionNeutronSource(const std::vector& source) * setActinideAlphaNSource(const std::vector& source) * setTotalNeutronSpectrum(const std::vector& spectrum) * setAlphaNSpectrum(const std::vector& spectrum) * setSpontaneousFissionSpectrum(const std::vector& spectrum) * setNeutronEnergyBounds(const std::vector& bounds) * * setTime(double seconds) * setPower(float power) * setFlux(float flux) * @return bool on if inventory was populated */ template bool read_case(f71case_type& inventory); }; // class F71Stream class RADIX_PUBLIC F71Case { // forward declare private implementation class PImpl; // unique pointer to private implmentation std::unique_ptr p; public: F71Case(); F71Case(const F71Case& orig); const std::vector& lightElementNuclides() const; void setLightElementNuclides(const std::vector& zaids); const std::vector& actinideNuclides() const; void setActinideNuclides(const std::vector& zaids); const std::vector& fissionProductNuclides() const; void setFissionProductNuclides(const std::vector& zaids); const std::vector& lightElementNuclideAbundances() const; void setLightElementNuclideAbundances(const std::vector& abs); const std::vector& actinideNuclideAbundances() const; void setActinideNuclideAbundances(const std::vector& abs); const std::vector& fissionProductNuclideAbundances() const; void setFissionProductNuclideAbundances(const std::vector& abs); std::string title() const; void setTitle(const std::string& title); std::string basis() const; void setBasis(const std::string& basis); const std::vector& lightElementGammaEnergyBounds() const; void setLightElementGammaEnergyBounds(const std::vector& bounds); const std::vector& actinideGammaEnergyBounds() const; void setActinideGammaEnergyBounds(const std::vector& bounds); const std::vector& fissionProductGammaEnergyBounds() const; void setFissionProductGammaEnergyBounds(const std::vector& bounds); const std::vector& lightElementSpectrum() const; void setLightElementSpectrum(const std::vector& spectrum); const std::vector& actinitdeSpectrum() const; void setActinideSpectrum(const std::vector& spectrum); const std::vector& fissionProductSpectrum() const; void setFissionProductSpectrum(const std::vector& spectrum); const std::vector& gammaEnergyBounds() const; void setGammaEnergyBounds(const std::vector& bounds); const std::vector& photonPerSSpectrum() const; void setPhotonPerSSpectrum(const std::vector& spectrum); const std::vector& mevPerSSpectrum() const; void setMevPerSSpectrum(const std::vector& spectrum); std::string photonSpectrumTitle() const; void setPhotonSpectrumTitle(const std::string& title); const std::vector& spontaneousFissionNeutronSource() const; void setSpontaneousFissionNeutronSource(const std::vector& source); const std::vector& actinideAlphaNSource() const; void setActinideAlphaNSource(const std::vector& source); const std::vector& totalNeutronSpectrum() const; void setTotalNeutronSpectrum(const std::vector& spectrum); const std::vector& alphaNSpectrum() const; void setAlphaNSpectrum(const std::vector& spectrum); const std::vector& spontaneousFissionSpectrum() const; void setSpontaneousFissionSpectrum(const std::vector& spectrum); const std::vector& neutronEnergyBounds() const; void setNeutronEnergyBounds(const std::vector& bounds); double time() const; void setTime(double seconds); float power() const; void setPower(float power); float flux() const; void setFlux(float flux); }; // F71Case } // namespace radix #include "radixio/f71stream.i.hh" #endif /** RADIX_RADIXIO_F71STREAM_HH_ */