Loading include/Reaction.h +9 −3 Original line number Diff line number Diff line Loading @@ -216,11 +216,17 @@ private: class Transfer : public Reaction { public: Transfer(const double* _kmc, std::vector <uint64_t*> _eductc, std::vector<uint64_t*> _productc, polymerSpecies* _macroEduct1, polymerSpecies* _macroProduct1, bool _keepRadical); polymerSpecies* _macroEduct1, polymerSpecies* _macroProduct1); virtual double calculatePartialProbability() const override; virtual TerminationConditions execute() override; }; class Transfer_dormant_radical_formed : public Reaction { public: Transfer_dormant_radical_formed(const double* _kmc, std::vector <uint64_t*> _eductc, std::vector<uint64_t*> _productc, polymerSpecies* _macroEduct1, polymerSpecies* _macroProduct1); virtual double calculatePartialProbability() const override; virtual TerminationConditions execute() override; private: bool keepRadical = false; }; class Depropagation : public Reaction { Loading include/modelObjects.h +1 −1 Original line number Diff line number Diff line Loading @@ -56,6 +56,7 @@ enum class ReactionTemplate : uint16_t { ThermalInitiation2, ThermalInitiation3, Transfer, Transfer_dormant_radical_formed, TransferToMonomer, TransferToPolymer, TransferToPolymer_HYC, Loading Loading @@ -171,7 +172,6 @@ struct reactionObject { std::vector<int> productIdList; std::string optionalParameterFilename = ""; bool keepRadical = false; }; struct pluginObject { int id = 0; Loading src/Reaction.cpp +36 −5 Original line number Diff line number Diff line Loading @@ -595,7 +595,7 @@ TerminationConditions ThermalInitiation3::execute() { } Transfer::Transfer(const double* _kmc, std::vector <uint64_t*> _eductc, std::vector<uint64_t*> _productc, polymerSpecies* _macroEduct1, polymerSpecies* _macroProduct1, bool _keepRadical) polymerSpecies* _macroEduct1, polymerSpecies* _macroProduct1) : Reaction(_eductc.size(), _productc.size(), _kmc, 1, 1) { for (size_t i = 0; i < _eductc.size(); i++) { eductCounter[i] = _eductc[i]; Loading @@ -605,7 +605,6 @@ Transfer::Transfer(const double* _kmc, std::vector <uint64_t*> _eductc, std::vec } macroEduct[0] = _macroEduct1; macroProduct[0] = _macroProduct1; keepRadical = _keepRadical; } TerminationConditions Transfer::execute() { for (size_t i = 0; i < eductCounter.size(); i++) { Loading @@ -615,9 +614,9 @@ TerminationConditions Transfer::execute() { ++* productCounter[i]; } Polymer* p1 = macroEduct[0]->popPolymer(); if (!keepRadical) { p1->removeRadical(); } macroProduct[0]->addPolymer(p1); return TerminationConditions::Undefined; } Loading @@ -629,6 +628,38 @@ double Transfer::calculatePartialProbability() const { return Probability; } Transfer_dormant_radical_formed::Transfer_dormant_radical_formed(const double* _kmc, std::vector <uint64_t*> _eductc, std::vector<uint64_t*> _productc, polymerSpecies* _macroEduct1, polymerSpecies* _macroProduct1) : Reaction(_eductc.size(), _productc.size(), _kmc, 1, 1) { for (size_t i = 0; i < _eductc.size(); i++) { eductCounter[i] = _eductc[i]; } for (size_t i = 0; i < _productc.size(); i++) { productCounter[i] = _productc[i]; } macroEduct[0] = _macroEduct1; macroProduct[0] = _macroProduct1; } TerminationConditions Transfer_dormant_radical_formed::execute() { for (size_t i = 0; i < eductCounter.size(); i++) { --*eductCounter[i]; } for (size_t i = 0; i < productCounter.size(); i++) { ++*productCounter[i]; } Polymer* p1 = macroEduct[0]->popPolymer(); macroProduct[0]->addPolymer(p1); return TerminationConditions::Undefined; } double Transfer_dormant_radical_formed::calculatePartialProbability() const { double Probability = *kmc * *eductCounter[0]; for (size_t i = 1; i < eductCounter.size(); i++) { Probability *= *eductCounter[i]; } return Probability; } Depropagation::Depropagation(const double* _kmc, std::vector <uint64_t*> _eductc, std::vector<uint64_t*> _productc, polymerSpecies* _macroEduct1, polymerSpecies* _macroProduct1, int _monomerID) : Reaction(_eductc.size(), _productc.size(), _kmc, 1, 1), monomerID(_monomerID) { Loading src/filesJSON.cpp +1 −3 Original line number Diff line number Diff line Loading @@ -136,7 +136,6 @@ void importModelFromJSON(const string &_filename, kineticModel* _mcPolymerModel) reactionObj.id = countReactions; reactionObj.coefficientID = getCoefficientID(reaction["coefficient"], coefficientObjectList); reactionObj.rktTemplate = StringToReactionTemplate(reaction["template"]); reactionObj.keepRadical = reaction["keepRadical"]; if (reaction.count("filename") > 0) { reactionObj.optionalParameterFilename = reaction["filename"]; Loading Loading @@ -304,7 +303,6 @@ void exportModelToJSON(const string &_filename, reaction[productLabel] = _speciesObjects.at(elemReactants).name; ++countProducts; } reaction["keepRadical"] = elem.keepRadical; reactionArrayJSON.push_back(reaction); } json pluginArrayJSON; Loading src/modelObjects.cpp +5 −0 Original line number Diff line number Diff line Loading @@ -91,6 +91,8 @@ std::string ReactionTemplateToString(ReactionTemplate _template) { return "ThermalInitiation3"; case ReactionTemplate::Transfer: return "Transfer"; case ReactionTemplate::Transfer_dormant_radical_formed: return "Transfer_dormant_radical_formed"; case ReactionTemplate::TransferToMonomer: return "TransferToMonomer"; case ReactionTemplate::TransferToPolymer: Loading Loading @@ -173,6 +175,9 @@ ReactionTemplate StringToReactionTemplate(const std::string& _str) { if (_str == "Transfer") { return ReactionTemplate::Transfer; } if (_str == "Transfer_dormant_radical_formed") { return ReactionTemplate::Transfer_dormant_radical_formed; } if (_str == "Depropagation") { return ReactionTemplate::Depropagation; } Loading Loading
include/Reaction.h +9 −3 Original line number Diff line number Diff line Loading @@ -216,11 +216,17 @@ private: class Transfer : public Reaction { public: Transfer(const double* _kmc, std::vector <uint64_t*> _eductc, std::vector<uint64_t*> _productc, polymerSpecies* _macroEduct1, polymerSpecies* _macroProduct1, bool _keepRadical); polymerSpecies* _macroEduct1, polymerSpecies* _macroProduct1); virtual double calculatePartialProbability() const override; virtual TerminationConditions execute() override; }; class Transfer_dormant_radical_formed : public Reaction { public: Transfer_dormant_radical_formed(const double* _kmc, std::vector <uint64_t*> _eductc, std::vector<uint64_t*> _productc, polymerSpecies* _macroEduct1, polymerSpecies* _macroProduct1); virtual double calculatePartialProbability() const override; virtual TerminationConditions execute() override; private: bool keepRadical = false; }; class Depropagation : public Reaction { Loading
include/modelObjects.h +1 −1 Original line number Diff line number Diff line Loading @@ -56,6 +56,7 @@ enum class ReactionTemplate : uint16_t { ThermalInitiation2, ThermalInitiation3, Transfer, Transfer_dormant_radical_formed, TransferToMonomer, TransferToPolymer, TransferToPolymer_HYC, Loading Loading @@ -171,7 +172,6 @@ struct reactionObject { std::vector<int> productIdList; std::string optionalParameterFilename = ""; bool keepRadical = false; }; struct pluginObject { int id = 0; Loading
src/Reaction.cpp +36 −5 Original line number Diff line number Diff line Loading @@ -595,7 +595,7 @@ TerminationConditions ThermalInitiation3::execute() { } Transfer::Transfer(const double* _kmc, std::vector <uint64_t*> _eductc, std::vector<uint64_t*> _productc, polymerSpecies* _macroEduct1, polymerSpecies* _macroProduct1, bool _keepRadical) polymerSpecies* _macroEduct1, polymerSpecies* _macroProduct1) : Reaction(_eductc.size(), _productc.size(), _kmc, 1, 1) { for (size_t i = 0; i < _eductc.size(); i++) { eductCounter[i] = _eductc[i]; Loading @@ -605,7 +605,6 @@ Transfer::Transfer(const double* _kmc, std::vector <uint64_t*> _eductc, std::vec } macroEduct[0] = _macroEduct1; macroProduct[0] = _macroProduct1; keepRadical = _keepRadical; } TerminationConditions Transfer::execute() { for (size_t i = 0; i < eductCounter.size(); i++) { Loading @@ -615,9 +614,9 @@ TerminationConditions Transfer::execute() { ++* productCounter[i]; } Polymer* p1 = macroEduct[0]->popPolymer(); if (!keepRadical) { p1->removeRadical(); } macroProduct[0]->addPolymer(p1); return TerminationConditions::Undefined; } Loading @@ -629,6 +628,38 @@ double Transfer::calculatePartialProbability() const { return Probability; } Transfer_dormant_radical_formed::Transfer_dormant_radical_formed(const double* _kmc, std::vector <uint64_t*> _eductc, std::vector<uint64_t*> _productc, polymerSpecies* _macroEduct1, polymerSpecies* _macroProduct1) : Reaction(_eductc.size(), _productc.size(), _kmc, 1, 1) { for (size_t i = 0; i < _eductc.size(); i++) { eductCounter[i] = _eductc[i]; } for (size_t i = 0; i < _productc.size(); i++) { productCounter[i] = _productc[i]; } macroEduct[0] = _macroEduct1; macroProduct[0] = _macroProduct1; } TerminationConditions Transfer_dormant_radical_formed::execute() { for (size_t i = 0; i < eductCounter.size(); i++) { --*eductCounter[i]; } for (size_t i = 0; i < productCounter.size(); i++) { ++*productCounter[i]; } Polymer* p1 = macroEduct[0]->popPolymer(); macroProduct[0]->addPolymer(p1); return TerminationConditions::Undefined; } double Transfer_dormant_radical_formed::calculatePartialProbability() const { double Probability = *kmc * *eductCounter[0]; for (size_t i = 1; i < eductCounter.size(); i++) { Probability *= *eductCounter[i]; } return Probability; } Depropagation::Depropagation(const double* _kmc, std::vector <uint64_t*> _eductc, std::vector<uint64_t*> _productc, polymerSpecies* _macroEduct1, polymerSpecies* _macroProduct1, int _monomerID) : Reaction(_eductc.size(), _productc.size(), _kmc, 1, 1), monomerID(_monomerID) { Loading
src/filesJSON.cpp +1 −3 Original line number Diff line number Diff line Loading @@ -136,7 +136,6 @@ void importModelFromJSON(const string &_filename, kineticModel* _mcPolymerModel) reactionObj.id = countReactions; reactionObj.coefficientID = getCoefficientID(reaction["coefficient"], coefficientObjectList); reactionObj.rktTemplate = StringToReactionTemplate(reaction["template"]); reactionObj.keepRadical = reaction["keepRadical"]; if (reaction.count("filename") > 0) { reactionObj.optionalParameterFilename = reaction["filename"]; Loading Loading @@ -304,7 +303,6 @@ void exportModelToJSON(const string &_filename, reaction[productLabel] = _speciesObjects.at(elemReactants).name; ++countProducts; } reaction["keepRadical"] = elem.keepRadical; reactionArrayJSON.push_back(reaction); } json pluginArrayJSON; Loading
src/modelObjects.cpp +5 −0 Original line number Diff line number Diff line Loading @@ -91,6 +91,8 @@ std::string ReactionTemplateToString(ReactionTemplate _template) { return "ThermalInitiation3"; case ReactionTemplate::Transfer: return "Transfer"; case ReactionTemplate::Transfer_dormant_radical_formed: return "Transfer_dormant_radical_formed"; case ReactionTemplate::TransferToMonomer: return "TransferToMonomer"; case ReactionTemplate::TransferToPolymer: Loading Loading @@ -173,6 +175,9 @@ ReactionTemplate StringToReactionTemplate(const std::string& _str) { if (_str == "Transfer") { return ReactionTemplate::Transfer; } if (_str == "Transfer_dormant_radical_formed") { return ReactionTemplate::Transfer_dormant_radical_formed; } if (_str == "Depropagation") { return ReactionTemplate::Depropagation; } Loading