"""Process-model data structures for :mod:`pidtune`. This subpackage defines the model abstractions described in ``docs/design/02_data_models.md``: * :class:`~pidtune.models.base.ProcessModel` — the abstract interface every model implements (step/frequency response, parameter access, validation, serialisation). * :class:`~pidtune.models.fopdt.FOPDTModel` — first-order plus dead time (gain ``K``, time constant ``tau``, dead time ``theta``); the workhorse model for classical tuning rules. * :class:`~pidtune.models.sopdt.SOPDTModel` — second-order plus dead time (gain, two time constants or natural frequency/damping, dead time). * :class:`~pidtune.models.transfer_function.TransferFunctionModel` — arbitrary rational transfer functions given as numerator/denominator polynomial coefficients, with optional dead time. All models are immutable after construction and validate their parameters eagerly, raising :class:`~pidtune.exceptions.ModelValidationError` on bad input. """ from __future__ import annotations from pidtune.models.base import ProcessModel from pidtune.models.fopdt import FOPDTModel from pidtune.models.sopdt import SOPDTModel from pidtune.models.transfer_function import TransferFunctionModel __all__ = [ "ProcessModel", "FOPDTModel", "SOPDTModel", "TransferFunctionModel", ]