Что ищем, семпай?

Xmod Co-simulation -

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

@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 set_state(self, state: Dict): self.x = state["x"] self.v = state["v"] Example: Simple controller (P-controller) ---------------------------------------------------------------------- class PController(XModModel): """Outputs F = Kp * (x_ref - x_measured).""" @abstractmethod def step(self, t: float, dt: float, inputs:

def __init__(self, name: str, m: float, k: float, c: float): super().__init__(name) self.m = m self.k = k self.c = c self.x = 0.0 self.v = 0.0 # Define ports self.input_ports = [XModPort("F_ext")] self.output_ports = [XModPort("x"), XModPort("v")] @abstractmethod def step(self

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.""" outputs: Dict[str, np.ndarray] # port name -> value new_time: float event_occurred: bool = False