Xmod Co-simulation [SAFE]
sim = XModCoSimulation(dt=0.01) sim.add_model(plant) sim.add_model(ctrl) sim.connect("controller", "F_cmd", "mass_spring", "F_ext") sim.connect("mass_spring", "x", "controller", "x_measured")
@abstractmethod def set_state(self, state: Dict): pass Example: Spring-mass-damper as an xmod model ---------------------------------------------------------------------- class SpringMassDamper(XModModel): """x = position, v = velocity, F_ext = external force input.""" xmod co-simulation
def connect(self, from_model: str, from_port: str, to_model: str, to_port: str): self.connections.append((from_model, from_port, to_model, to_port)) sim = XModCoSimulation(dt=0
@dataclass class XModStep: """Result of a model step.""" outputs: Dict[str, np.ndarray] # port name -> value new_time: float event_occurred: bool = False "x_measured") @abstractmethod def set_state(self