class FluidSystem(DynamicalModel): source = F.SubModel(FlowSource) waterTower = F.SubModel(WaterTower) valveOut = F.SubModel(Valve) flowController = F.SubModel(FlowController) sink = F.SubModel(PressureSource) def __init__(self): self.source.meta.port.connect(self.waterTower.meta.portIn) self.waterTower.meta.portOut.connect(self.valveOut.meta.port1) self.valveOut.meta.port2.connect(self.sink.meta.port) self.waterTower.meta.hWater.connect( self.flowController.meta.waterLevel) self.flowController.meta.valveOpen.connect( self.valveOut.meta.controlSignal)
class Tank(DynamicalModel): qSource = F.SubModel(HeatSource) m1 = F.SubModel(ThermalMass) m2 = F.SubModel(ThermalMass) c = F.SubModel(ThermalConduction) conv = F.SubModel(Convection) ch = F.SubModel(FluidChamber) def __init__(self): self.m1.meta.p1.connect(self.qSource.meta.p) self.m1.meta.p2.connect(self.c.meta.p1) self.c.meta.p2.connect(self.m2.meta.p1) self.m2.meta.p2.connect(self.conv.meta.portWall) self.ch.meta.portWall.connect(self.conv.meta.portFluid)
class MechSystem(DynamicalModel): fs = F.SubModel(ForceSource) mass = F.SubModel(BoundMass) def __init__(self): self.fs.meta.p.connect(self.mass.meta.p)