SootLib
Loading...
Searching...
No Matches
sootModel.cc
Go to the documentation of this file.
1#include "sootModel.h"
2#include <iostream>
3
9
14
22
28
29using namespace std;
30using namespace soot;
31
44
46 nucleationModel *nucl_,
47 growthModel *grow_,
48 oxidationModel *oxid_,
49 coagulationModel *coag_) :
50 nsoot(nsoot_), nucl(nucl_), grow(grow_), oxid(oxid_), coag(coag_),
51 mechsNewedHere(false), sources(nsoot_) {
52 checkSpec();
53 nucl->SM = this;
54 grow->SM = this;
55 oxid->SM = this;
56 coag->SM = this;
57}
58
59
72
74 nucleationMech Nmech,
75 growthMech Gmech,
76 oxidationMech Omech,
77 coagulationMech Cmech) : nsoot(nsoot_),
78 mechsNewedHere(true),
79 sources(nsoot_) {
80
81 //---------- set nucleation model
82
83 switch (Nmech) {
85 case nucleationMech::LL : nucl = new nucleationModel_LL(); break;
86 case nucleationMech::LIN : nucl = new nucleationModel_LIN(); break;
88 case nucleationMech::PAH : nucl = new nucleationModel_PAH(); break;
89 default: throw domain_error("Invalid nucleation model requested");
90 }
91
92 //---------- set growth model
93
94 switch (Gmech) {
95 case growthMech::NONE : grow = new growthModel_NONE(); break;
96 case growthMech::LL : grow = new growthModel_LL(); break;
97 case growthMech::LIN : grow = new growthModel_LIN(); break;
98 case growthMech::HACA : grow = new growthModel_HACA(); break;
99 default: throw domain_error("Invalid growth model requested");
100 }
101
102 //---------- set oxidation model
103
104 switch (Omech) {
105 case oxidationMech::NONE : oxid = new oxidationModel_NONE(); break;
106 case oxidationMech::LL : oxid = new oxidationModel_LL(); break;
107 case oxidationMech::HACA : oxid = new oxidationModel_HACA(); break;
110 case oxidationMech::OPTJ : oxid = new oxidationModel_OPTJ(); break;
111 case oxidationMech::OPTG : oxid = new oxidationModel_OPTG(); break;
112 default: throw domain_error("Invalid oxidation model requested");
113 }
114
115 //---------- set coagulation model
116
117 switch (Cmech) {
119 case coagulationMech::FM : coag = new coagulationModel_FM(); break;
121 case coagulationMech::HM : coag = new coagulationModel_HM(); break;
123 default: throw domain_error("Invalid coagulation model requested");
124 }
125
126 //-----------
127
128 nucl->SM = this;
129 grow->SM = this;
130 oxid->SM = this;
131 coag->SM = this;
132
133 //-----------
134
135 checkSpec();
136}
137
143
145
148 cerr << endl
149 << "**********************************************************************" << endl
150 << "Warning: HACA surface growth should pair with HACA oxid and vice-versa" << endl
151 << "**********************************************************************" << endl << endl;
152 //throw domain_error("Invalid model combination: HACA surface growth must pair with HACA oxid and vice-versa");
153}
sootModel * SM
back pointer to soot model
growthMech mechType
identity of the type of growth (child)
Definition: growthModel.h:24
sootModel * SM
back pointer to soot model
Definition: growthModel.h:23
sootModel * SM
back pointer to soot model
oxidationMech mechType
identity of the type of oxidation (child)
sootModel * SM
back pointer to soot model
sootModel(size_t nsoot_, nucleationModel *nucl_, growthModel *grow_, oxidationModel *oxid_, coagulationModel *coag_)
Definition: sootModel.cc:45
void checkSpec()
Definition: sootModel.cc:144
coagulationModel * coag
pointer to coagulation mechanism
Definition: sootModel.h:33
nucleationModel * nucl
pointer to nucleation mechanism
Definition: sootModel.h:30
growthModel * grow
pointer to growth mechanism
Definition: sootModel.h:31
oxidationModel * oxid
pointer to oxidation mechanism
Definition: sootModel.h:32
Definition: sootDefs.h:11
oxidationMech
Definition: sootDefs.h:33
coagulationMech
Definition: sootDefs.h:34
growthMech
Definition: sootDefs.h:32
nucleationMech
Definition: sootDefs.h:31