Xmod Co-simulation [work] 【GENUINE ✭】
@dataclass class XModStep: """Result of a model step.""" outputs: Dict[str, np.ndarray] # port name -> value new_time: float event_occurred: bool = False
def step(self, t: float, dt: float, inputs: Dict[str, np.ndarray]) -> XModStep: x_meas = inputs.get("x_measured", np.array([0.0]))[0] F_cmd = self.Kp * (self.x_ref - x_meas) return XModStep( outputs={"F_cmd": np.array([F_cmd])}, new_time=t + dt ) xmod co-simulation
# Log results history = [] def log(t, outputs): x = outputs["mass_spring"].get("x", [0])[0] history.append((t, x)) print(f"t={t:.3f}, x={x:.4f}") @dataclass class XModStep: """Result of a model step
class XModModel(ABC): """Base class for an xmod co-simulation component.""" np.ndarray] # port name ->
def get_state(self): return {"x": self.x, "v": self.v}