This is a preliminary roadmap for PathSim's development. To be fair, its more a collection of ideas and potential directions then a real roadmap.
- multistep methods (
BDF,GEAR) need startup methods to build history, to maintain consistency order globally - make solver term
$\dot{x}$ accessible for solving index 1 DAEs, especially for stiffly accurateDIRKandESDIRKmethods, will be the basis for futureDAEblocks - add interpolant within timestep to solvers for dense output and to improve interpolation for the event mechanism
- separate checks for event types in simulation loop, purely time dependent events (
Schedule) can be estimated before the timestep is taken and therefore be approached without backtracking, which would improve performance (maybe add some methodEvent.estimate(t))
- periodic steady state solver, probably shooting method with automatic frequency/period detection
- small signal frequency domain analysis based on linearized system
- fork-join block-level parallelization with Python 3.13 free-threading
- more robust and adaptable steady state solver, perhaps through damping, or using
EUBwith convergence driven timestep control - exponential integrators for LTI blocks (
StateSpace,TransferFunction) and for linearized dynamic blocks - more robust resolution of algebraic loops (currently implicitly handled through fixed point loop in
Simulation._update()), probably: loop detection, accelerator injection - jit compilation of internal functions in the operators (
Operator,DynamicOperator)
- the integrators (
Solverchild classes) would benefit from more descriptive docstrings for the api reference including explanations and references (literature) to the specific method used and also some usage suggestions to make solver choice easier and more transparent for the user - add more tutorials to the docs, that focus on:
- types of analyses and visualization methods (transient ->
Scope, frequency ->Spectrum, steadystate -> ??) - types of available solvers in the PathSim solver suite, find your own solver
- the block diagram modelling paradigm in general
- hierarchical modeling with the
Subsystemclass
- types of analyses and visualization methods (transient ->
- type hints for everything
- separate the different kinds of analyses more clearly, transient and steady state analysis results should be separated for
ScopeandSpectrumblocks to feel more natural - add options to integrators (
ImplicitSolver) to specify the type of optimizer to be used to solve the implicit update equation, currenly the hybridNewtonAndersonis used, but more flexibility might be nice in the future
- support for FMI / FMU, import and export of PathSim models and blocks
- support for electrical circuits, SPICE netlists
- support for s-parameters (touchstone files) by vectorfitting and wrapping
StateSpaceblock
- complete testing for blocks in
pathsim/blocks/rfandpathsim/blocks/mixed(currently testing for these blocks is mostly top down)
- test automatic differentiation through
Valuewith every block and with linearization
- permutation testing for all kinds of system topologies, blocks and solvers