Skip to content

Releases: milanofthe/pathsim

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

v0.6.4

11 Apr 08:55
Compare
Choose a tag to compare

minor release with some new blocks and some fixes

New Blocks

  • new PID block in pathsim/blocks/ctrl.py to simplify control system simulations
  • ideal DAC and ADC blocks in pathsim/blocks/mixed/converters.py to simplify mixed signal simulations, driven by scheduled events
  • finite impulse response FIR block for digital filters in pathsim/blocks/mixed/fir.py, driven by scheduled events

Fixes

  • fixed AllpassFilter block in pathsim/blocks/rf/filters.py, now implements a 1st order allpass or a cascade of n 1st order allpass filters

Plotting

  • the Scope block now has a plot2D method to directly visualize phase diagrams (quality of life)

v0.6.3

01 Apr 08:15
Compare
Choose a tag to compare

Simulation

  • updated default args for Simulation.run() so it doesnt reset the simulation by default anymore

Blocks

  • updated blocks.rf.sources.ChirpSource with optional internal phase noise (white, cumulative) contributions, basically the same as in the blocks.rf.noise.PhaseNoise block

Uncertainty Quantification

  • updated the Value class to hold a standard deviation sig next to the numerical value
  • added classmethod var to the Value class to automatically compute the variance of a parameter from the sensitivities using a first order taylor approximation