Skip to content

Releases: milanofthe/pathsim

v0.8.0

08 Aug 08:35
5438ff9
Compare
Choose a tag to compare

Port Aliases

Block input and output ports are now accessible via string aliases in addition to integer indices. These aliases can be defined for custom blocks. For SISO blocks they are the default in and out keys.

Extension of Block Library

Added many new blocks to the block library in the pathsim.blocks.math module. These are elementary functions and are purely algebraic.

What's Changed

Full Changelog: v0.7.2...v0.8.0

v0.7.2

04 Aug 09:42
bca927e
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.7.1...v0.7.2

v0.7.1

28 Jul 13:50
fb6d2fe
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.7.0...v0.7.1

v0.7.0

06 Jun 10:54
abb6a58
Compare
Choose a tag to compare

Refactor

This release comes with performance improvements for scheduled events and a refactor of the block library.

This changes the import hierarchy of the blocks and eliminates the rf and mixed submodules. The goal was to have a coherent block library that shows intention for block usage and remove ambiguity about what block to use from what module for what purpose.

Performance improvements for the Schedule events is realized by a new estimate method that truncates the timestep when in danger of overshooting the event time of scheduled events. This is very noticable (expect about 10-30% when scheduled events are present in the simulation), as it leads to a big reduction in discarded simulation steps.

What's Changed

Full Changelog: v0.6.10...v0.7.0

v0.6.10

15 May 08:41
d85cccb
Compare
Choose a tag to compare

Port definitions with tuples

Enable port definitions to accept lists / tuples of int:

C = Connection(B1[0, 1], B2[1, 2])

where previously you could do slicing

C = Connection(B1[0:2], B2[1:3])

or had to define multiple connections.

But now you can define the connections arbitrarily, for example like this:

C = Connection(B1[3, 5, 8, 2], B2[4, 3, 2, 5])

Performance

The intention was to remove unnecessary function calls during data transfer between blocks for performance (brings 5 to 10% performance gains, which is always nice) and to make things more concise. Specifically this means removing the Block.get and Block.set methods and instead directly using the inputs and outputs registers for data transfer. For the Subsystem, this is realized by using @property to access the inputs and outputs of the internal Interface block, which also makes this block definition much more concise.

What's Changed

Full Changelog: v0.6.9...v0.6.10

v0.6.9

08 May 20:21
d089034
Compare
Choose a tag to compare

Performance again

This is a big one. Fully reworking how system function evaluation works using directed graphs brings BIG performance gains. Expect from 20% up to 300% gains for systems with long algenraic paths. For details go here.

What's Changed

Full Changelog: v0.6.8...v0.6.9

v0.6.8

29 Apr 13:34
a22ff35
Compare
Choose a tag to compare

Performance

  • Improved simulation performance by cutting unnecessary branching from the main simulaiton loop. This was achieved by assembling lists of active system components (blocks, connections, events) dynamically before the timestep and then using only those for iterations within the timestep. In most cases, this improves performance by about 10%.
  • Refactor of the timestepping methods in ´Simulation´ to be more readable and better separate implicit/explicit and fixed/adaptive solvers.

What's Changed

Full Changelog: v0.6.7...v0.6.8

v0.6.7

27 Apr 11:43
9596cd3
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.6.6...v0.6.7

v0.6.6

22 Apr 05:43
ab54af7
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.6.5...v0.6.6

v0.6.5

17 Apr 10:55
Compare
Choose a tag to compare

another minor releas with some fixes and some handy new features

Packaging thanks to @RemDelaporteMathurin

  • moving all the source code to a src directory
  • replace outdated setup.py and requirements.txt files by a pyproject.toml file
  • remove the _version.py file (which btw should not be under version control) and have it dynamically written by setuptools

Fixes

  • fixed __len__ method of mixed signal blocks, most of them have no algebraic passthrough

Blocks

  • added special AntiWindupPID block in pathsim/blocks/ctrl.py which is a PID controller with a mechanism for anti-windup using backcalculation that inherits from the standard PID block

Plotting

  • added .plot2D() method to the Scope block as a quality of life method for fast phase portrait visualizaiton
  • added .plot3D() method to the Scope block as a quality of life method for fast visualizations three dimensional solution trajectories

Solvers

  • added a 2nd order Runge-Kutta-Fehlberg adaprive solver RKF21 as a very cheap explicit adaptive option

Docs

  • improved docstrings of all solvers to give users more background on how to choose an appropriate solver for their problem

Testing

  • added mixed signal examples under tests/models/_models as model files to testing for CI