/** * Return a new, empty kinetics manager. */ Kinetics* KineticsFactory::newKinetics(const string& model) { int ikin = -1; int n; for (n = 0; n < ntypes; n++) { if (model == _types[n]) { ikin = _itypes[n]; } } Kinetics* k=0; switch (ikin) { case cGasKinetics: k = new GasKinetics; break; case cGRI30: k = new GRI_30_Kinetics; break; case cInterfaceKinetics: k = new InterfaceKinetics; break; default: throw UnknownKineticsModel("KineticsFactory::newKinetics", model); } return k; }
Kinetics* KineticsFactory::newKinetics(const string& model) { string lcmodel = lowercase(model); if (lcmodel == "none") { return new Kinetics(); } else if (lcmodel == "gaskinetics") { return new GasKinetics(); } else if (lcmodel == "interface") { return new InterfaceKinetics(); } else if (lcmodel == "edge") { return new EdgeKinetics(); } else if (lcmodel == "aqueouskinetics") { return new AqueousKinetics(); } else { throw UnknownKineticsModel("KineticsFactory::newKinetics", model); } }
Kinetics* KineticsFactory:: newKinetics(XML_Node& phaseData, vector<ThermoPhase*> th) { /* * Look for a child of the xml element phase called * "kinetics". It has an attribute name "model". * Store the value of that attribute in the variable kintype */ string kintype = phaseData.child("kinetics")["model"]; /* * look up the string kintype in the list of known * kinetics managers (list is kept at the top of this file). * Translate it to an integer value, ikin. */ int ikin=-1; int n; for (n = 0; n < ntypes; n++) { if (kintype == _types[n]) { ikin = _itypes[n]; } } /* * Assign the kinetics manager based on the value of ikin. * Kinetics managers are classes derived from the base * Kinetics class. Unknown kinetics managers will throw a * CanteraError here. */ Kinetics* k=0; switch (ikin) { case 0: k = new Kinetics; break; case cGasKinetics: k = new GasKinetics; break; case cGRI30: k = new GRI_30_Kinetics; break; case cInterfaceKinetics: k = new InterfaceKinetics; break; case cEdgeKinetics: k = new EdgeKinetics; break; case cAqueousKinetics: k = new AqueousKinetics; break; default: throw UnknownKineticsModel("KineticsFactory::newKinetics", kintype); } // Now that we have the kinetics manager, we can // import the reaction mechanism into it. importKinetics(phaseData, th, k); // Return the pointer to the kinetics manager return k; }