15std::mutex ConnectorFactory::connector_mutex;
17ConnectorFactory::ConnectorFactory()
19 reg(
"MassFlowController",
20 [](shared_ptr<ReactorBase> r0, shared_ptr<ReactorBase> r1,
const string& name)
21 {
return new MassFlowController(r0, r1, name); });
22 reg(
"PressureController",
23 [](shared_ptr<ReactorBase> r0, shared_ptr<ReactorBase> r1,
const string& name)
24 {
return new PressureController(r0, r1, name); });
26 [](shared_ptr<ReactorBase> r0, shared_ptr<ReactorBase> r1,
const string& name)
27 {
return new Valve(r0, r1, name); });
29 [](shared_ptr<ReactorBase> r0, shared_ptr<ReactorBase> r1,
const string& name)
30 {
return new Wall(r0, r1, name); });
34 std::unique_lock<std::mutex> lock(connector_mutex);
36 s_factory =
new ConnectorFactory;
42 std::unique_lock<std::mutex> lock(connector_mutex);
49 shared_ptr<ReactorBase> r0, shared_ptr<ReactorBase> r1,
const string& name)
51 return shared_ptr<ConnectorNode>(
52 ConnectorFactory::factory()->create(model, r0, r1, name));
57 shared_ptr<ReactorBase> r0, shared_ptr<ReactorBase> r1,
const string& name)
59 auto dev = std::dynamic_pointer_cast<FlowDevice>(
63 "Detected incompatible ConnectorNode type '{}'", model);
68shared_ptr<FlowDevice>
newFlowDevice(
const string& model,
const string& name)
71 "After Cantera 3.2, Reactors must be provided as parameters.");
77 shared_ptr<ReactorBase> r0, shared_ptr<ReactorBase> r1,
const string& name)
79 auto wall = std::dynamic_pointer_cast<WallBase>(
83 "Detected incompatible ConnectorNode type '{}'", model);
88shared_ptr<WallBase>
newWall(
const string& model,
const string& name)
91 "After Cantera 3.2, Reactors must be provided as parameters.");
92 return newWall(model,
nullptr,
nullptr, name);
Header file for base class WallBase.
Base class for exceptions thrown by Cantera classes.
Factory class to create ConnectorNode objects.
void deleteFactory() override
Virtual abstract function that deletes the factory.
void reg(const string &name, function< ConnectorNode *(Args...)> f)
Some flow devices derived from class FlowDevice.
shared_ptr< FlowDevice > newFlowDevice(const string &model, shared_ptr< ReactorBase > r0, shared_ptr< ReactorBase > r1, const string &name)
Create a FlowDevice object of the specified type.
shared_ptr< WallBase > newWall(const string &model, shared_ptr< ReactorBase > r0, shared_ptr< ReactorBase > r1, const string &name)
Create a WallBase object of the specified type.
shared_ptr< ConnectorNode > newConnectorNode(const string &model, shared_ptr< ReactorBase > r0, shared_ptr< ReactorBase > r1, const string &name)
Create a ConnectorNode object of the specified type.
Namespace for the Cantera kernel.
void warn_deprecated(const string &source, const AnyBase &node, const string &message)
A deprecation warning for syntax in an input file.