Co-simulation |work| - Xmod

@dataclass class XModStep: """Result of a model step.""" outputs: Dict[str, np.ndarray] # port name -> value new_time: float event_occurred: bool = False

def add_model(self, model: XModModel): self.models[model.name] = model xmod co-simulation

def set_state(self, state: Dict): pass xmod co-simulation master ---------------------------------------------------------------------- class XModCoSimulation: """Orchestrates coupled xmod models.""" @dataclass class XModStep: """Result of a model step

@abstractmethod def step(self, t: float, dt: float, inputs: Dict[str, np.ndarray]) -> XModStep: """Advance model by dt from t with given inputs.""" pass np.ndarray] # port name -&gt

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")