Loading include/SimulationController.h +1 −1 Original line number Diff line number Diff line Loading @@ -74,7 +74,7 @@ public: void exportConcentrationNumMolecules(double _reactionTime) const; void exportReactionsCount(double _reactionTime) const; void exportPolymers(std::string _prefixFilename, double _reactionTime, bool _binaryExport, bool _writeHeader); void exportLabeledPolymers(std::string _prefixFilename, int _id1, int _id2, double _reactionTime, bool _writeHeader, bool _filter); void exportLabeledPolymers(std::string _prefixFilename, int _id1, int _id2, uint64_t _filter, double _reactionTime, bool _writeHeader); protected: void exportComplete(time_t _timerStart, TerminationConditions _terminationConditions) const; Loading include/polymerSpecies.h +3 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,8 @@ public: void exportCLD(const std::string& _filename, const kineticModel* _mcPolymerModel); void writeCLD(const std::string& _filename, const std::map<int, std::string>& _speciesNameMap, const std::map<int, int>& _speciesTypeMap, const std::map<int, double>& _molarMassMap) const; void exportPolymers(std::ofstream* _os) const; void exportPolymersSubsetNoFilter(std::ofstream* _os, uint64_t _filter); void exportPolymersSubsetFilter(std::ofstream* _os, uint64_t _filter); void getCLD(Histogram* _CLD, const std::vector<Histogram*>& _monomerHistogram); void getCLDHomopolymerization(Histogram* _CLD); std::vector<int> getChainLengthList() const; Loading @@ -58,6 +60,7 @@ public: void addPolymers(std::vector<Polymer*> _p); void addPolymerFromCombination(Polymer* p1, Polymer* p2); std::vector<Polymer*> getAllPolymers(); uint64_t getNumFilterPolymers(uint64_t _filter); private: Polymer* getPolymer() const; std::vector<Polymer*> p; Loading include/simulation.h +2 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,8 @@ public: const MnMw exportPolymersCLDHompolymerization(const std::string& _filename, const kineticModel* _mcPolymerModel) const; bool exportPolymersBinary(const std::string& _filename, const kineticModel* _mcPolymerModel) const; bool exportPolymersBinary(const std::string& _filename, const kineticModel* _mcPolymerModel, const uint64_t _addID, const bool _writeHeader) const; bool exportPolymersBinary(const std::string& _filename, const std::string& _filenameFilter, const kineticModel* _mcPolymerModel, const int _id1, const int _id2, const uint64_t _filter, const bool _writeHeader) const; void setMolecules(int index, uint64_t count); void setRateCoeficient(int _id, double _value); void addMolecules(int _id, int64_t _plusmole); Loading src/SimulationController.cpp +5 −0 Original line number Diff line number Diff line Loading @@ -463,6 +463,11 @@ void SimulationController::exportPolymers(std::string _prefixFilename, double _r kMC->exportPolymersCLD(simulationParameter.outputdir + "/" + "Polymers." + to_string(_reactionTime), currentModel); } } void SimulationController::exportLabeledPolymers(std::string _prefixFilename, int _id1, int _id2, uint64_t _filter, double _reactionTime, bool _writeHeader) { string filename = simulationParameter.outputdir + "/" + _prefixFilename + "Polymers." + to_string(_reactionTime); string filenameFilter = simulationParameter.outputdir + "/" + _prefixFilename + "PolymersFilter." + to_string(_reactionTime); kMC->exportPolymersBinary(filename, filenameFilter, currentModel, _id1, _id2, _filter, _writeHeader); } int SimulationController::getSpeciesIDTransferSpecies(TransferSpeciesDefinition _transferObject) { vector<parameterObject> parameterObjects = currentModel->getParameters(); string speciesName = ""; Loading src/polymerSpecies.cpp +47 −0 Original line number Diff line number Diff line Loading @@ -339,6 +339,9 @@ void polymerSpecies::getCLD(Histogram* _CLD, const vector<Histogram*> &_monomerH } } } if (transferToPolymer) { p.resize(0); } } void polymerSpecies::exportCLD(const string& _filename, const kineticModel* _mcPolymerModel) { Loading Loading @@ -528,6 +531,34 @@ void polymerSpecies::exportPolymers(ofstream* _os) const { } } } void polymerSpecies::exportPolymersSubsetNoFilter(std::ofstream* _os, uint64_t _filter) { if (transferToPolymer) { p = bintree->analyzeAllPolymers(); } for (const auto& elem : p) { Fragment* frg = elem->getFragment(0); if (frg->getLength() != _filter) { elem->exportPolymer(_os); } } if (transferToPolymer) { p.resize(0); } } void polymerSpecies::exportPolymersSubsetFilter(std::ofstream* _os, uint64_t _filter) { if (transferToPolymer) { p = bintree->analyzeAllPolymers(); } for (const auto& elem : p) { Fragment* frg = elem->getFragment(0); if (frg->getLength() == _filter) { elem->exportPolymer(_os); } } if (transferToPolymer) { p.resize(0); } } size_t polymerSpecies::getSize() const { if (transferToPolymer) { Loading Loading @@ -595,5 +626,21 @@ polymerSpeciesProperties polymerSpecies::getPolymerSpeciesProperties() { } return properties; } uint64_t polymerSpecies::getNumFilterPolymers(uint64_t _filter) { if (transferToPolymer) { p = bintree->analyzeAllPolymers(); } uint64_t numFilterPolymers = 0; for (const auto& elem : p) { Fragment* frg = elem->getFragment(0); if (frg->getLength() == _filter) { ++numFilterPolymers; } } if (transferToPolymer) { p.resize(0); } return numFilterPolymers; } } // namespace Loading
include/SimulationController.h +1 −1 Original line number Diff line number Diff line Loading @@ -74,7 +74,7 @@ public: void exportConcentrationNumMolecules(double _reactionTime) const; void exportReactionsCount(double _reactionTime) const; void exportPolymers(std::string _prefixFilename, double _reactionTime, bool _binaryExport, bool _writeHeader); void exportLabeledPolymers(std::string _prefixFilename, int _id1, int _id2, double _reactionTime, bool _writeHeader, bool _filter); void exportLabeledPolymers(std::string _prefixFilename, int _id1, int _id2, uint64_t _filter, double _reactionTime, bool _writeHeader); protected: void exportComplete(time_t _timerStart, TerminationConditions _terminationConditions) const; Loading
include/polymerSpecies.h +3 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,8 @@ public: void exportCLD(const std::string& _filename, const kineticModel* _mcPolymerModel); void writeCLD(const std::string& _filename, const std::map<int, std::string>& _speciesNameMap, const std::map<int, int>& _speciesTypeMap, const std::map<int, double>& _molarMassMap) const; void exportPolymers(std::ofstream* _os) const; void exportPolymersSubsetNoFilter(std::ofstream* _os, uint64_t _filter); void exportPolymersSubsetFilter(std::ofstream* _os, uint64_t _filter); void getCLD(Histogram* _CLD, const std::vector<Histogram*>& _monomerHistogram); void getCLDHomopolymerization(Histogram* _CLD); std::vector<int> getChainLengthList() const; Loading @@ -58,6 +60,7 @@ public: void addPolymers(std::vector<Polymer*> _p); void addPolymerFromCombination(Polymer* p1, Polymer* p2); std::vector<Polymer*> getAllPolymers(); uint64_t getNumFilterPolymers(uint64_t _filter); private: Polymer* getPolymer() const; std::vector<Polymer*> p; Loading
include/simulation.h +2 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,8 @@ public: const MnMw exportPolymersCLDHompolymerization(const std::string& _filename, const kineticModel* _mcPolymerModel) const; bool exportPolymersBinary(const std::string& _filename, const kineticModel* _mcPolymerModel) const; bool exportPolymersBinary(const std::string& _filename, const kineticModel* _mcPolymerModel, const uint64_t _addID, const bool _writeHeader) const; bool exportPolymersBinary(const std::string& _filename, const std::string& _filenameFilter, const kineticModel* _mcPolymerModel, const int _id1, const int _id2, const uint64_t _filter, const bool _writeHeader) const; void setMolecules(int index, uint64_t count); void setRateCoeficient(int _id, double _value); void addMolecules(int _id, int64_t _plusmole); Loading
src/SimulationController.cpp +5 −0 Original line number Diff line number Diff line Loading @@ -463,6 +463,11 @@ void SimulationController::exportPolymers(std::string _prefixFilename, double _r kMC->exportPolymersCLD(simulationParameter.outputdir + "/" + "Polymers." + to_string(_reactionTime), currentModel); } } void SimulationController::exportLabeledPolymers(std::string _prefixFilename, int _id1, int _id2, uint64_t _filter, double _reactionTime, bool _writeHeader) { string filename = simulationParameter.outputdir + "/" + _prefixFilename + "Polymers." + to_string(_reactionTime); string filenameFilter = simulationParameter.outputdir + "/" + _prefixFilename + "PolymersFilter." + to_string(_reactionTime); kMC->exportPolymersBinary(filename, filenameFilter, currentModel, _id1, _id2, _filter, _writeHeader); } int SimulationController::getSpeciesIDTransferSpecies(TransferSpeciesDefinition _transferObject) { vector<parameterObject> parameterObjects = currentModel->getParameters(); string speciesName = ""; Loading
src/polymerSpecies.cpp +47 −0 Original line number Diff line number Diff line Loading @@ -339,6 +339,9 @@ void polymerSpecies::getCLD(Histogram* _CLD, const vector<Histogram*> &_monomerH } } } if (transferToPolymer) { p.resize(0); } } void polymerSpecies::exportCLD(const string& _filename, const kineticModel* _mcPolymerModel) { Loading Loading @@ -528,6 +531,34 @@ void polymerSpecies::exportPolymers(ofstream* _os) const { } } } void polymerSpecies::exportPolymersSubsetNoFilter(std::ofstream* _os, uint64_t _filter) { if (transferToPolymer) { p = bintree->analyzeAllPolymers(); } for (const auto& elem : p) { Fragment* frg = elem->getFragment(0); if (frg->getLength() != _filter) { elem->exportPolymer(_os); } } if (transferToPolymer) { p.resize(0); } } void polymerSpecies::exportPolymersSubsetFilter(std::ofstream* _os, uint64_t _filter) { if (transferToPolymer) { p = bintree->analyzeAllPolymers(); } for (const auto& elem : p) { Fragment* frg = elem->getFragment(0); if (frg->getLength() == _filter) { elem->exportPolymer(_os); } } if (transferToPolymer) { p.resize(0); } } size_t polymerSpecies::getSize() const { if (transferToPolymer) { Loading Loading @@ -595,5 +626,21 @@ polymerSpeciesProperties polymerSpecies::getPolymerSpeciesProperties() { } return properties; } uint64_t polymerSpecies::getNumFilterPolymers(uint64_t _filter) { if (transferToPolymer) { p = bintree->analyzeAllPolymers(); } uint64_t numFilterPolymers = 0; for (const auto& elem : p) { Fragment* frg = elem->getFragment(0); if (frg->getLength() == _filter) { ++numFilterPolymers; } } if (transferToPolymer) { p.resize(0); } return numFilterPolymers; } } // namespace