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);
70 shared_ptr<ReactorBase> r0, shared_ptr<ReactorBase> r1,
const string& name)
72 auto wall = std::dynamic_pointer_cast<WallBase>(
76 "Detected incompatible ConnectorNode type '{}'", model);
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.