What's Changed
* The control package has been refactored (122), aiming to make it more modular. A new base class DriveCtrl(Ctrl) has been added. This adds common basic methods needed in different control systems for electric machine drives. This class supports both speed-control and torque-control modes.
* The system models have been refactored (128). The handling of the state variables, inputs, and outputs is changed so that the subsystems are now more modular. Furthermore, main-level system models are simpler and their amount is reduced significantly. The subsystems contain set_outputs() and rhs() methods, which are called by the main-level system model, whose base class is Model(ABC). The basic drive model is Drive(Model), which contains the interconnections of the subsystems in the interconnect() method. The same Drive class can now be used with both induction and synchronous machines (as well as with a diode bridge model, two-mass mechanics or other subsystems where the interconnections remain the same).
* The folder and import structure has been refactored to a more modular form (130). This makes it easier to add new system types later.
* Data classes are used to parametrize the machine models, both the system model and the parameter estimates in the control system (131). This change allows simpler parametrization in a typical use case of accurate parameter estimates. Furthermore, it clarifies the documentation clearer since the expected parameters are more accurately specified through data classes.
* The ExternalRotorSpeed class has been added to the mechanics module (133). This allows to simulate drive systems in torque-control mode. One example simulation script has also been added. Furthermore, the parameters of the TwoMassMechanicalSystem class are now provided through the data class.
* In addition to the above, this release contains various other minor improvements.
**Full Changelog**: https://github.com/Aalto-Electric-Drives/motulator/compare/v0.2.0...v0.3.0