pathsim 0.23.0__tar.gz → 0.23.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (485) hide show
  1. {pathsim-0.23.0 → pathsim-0.23.2}/PKG-INFO +1 -1
  2. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/_version.py +3 -3
  3. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/bvp.py +12 -4
  4. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/rf.py +4 -3
  5. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/solvers/rkf45.py +13 -11
  6. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim.egg-info/PKG-INFO +1 -1
  7. pathsim-0.23.2/src/pathsim.egg-info/scm_version.json +8 -0
  8. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/rf/test_rf.py +1 -1
  9. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/test_bvp.py +40 -1
  10. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/solvers/test_rkf45.py +53 -6
  11. pathsim-0.23.0/src/pathsim.egg-info/scm_version.json +0 -8
  12. {pathsim-0.23.0 → pathsim-0.23.2}/.codecov.yml +0 -0
  13. {pathsim-0.23.0 → pathsim-0.23.2}/.github/FUNDING.yml +0 -0
  14. {pathsim-0.23.0 → pathsim-0.23.2}/.github/workflows/pypi_deployment.yml +0 -0
  15. {pathsim-0.23.0 → pathsim-0.23.2}/.github/workflows/tests_codecov.yml +0 -0
  16. {pathsim-0.23.0 → pathsim-0.23.2}/.github/workflows/urlchecker.yml +0 -0
  17. {pathsim-0.23.0 → pathsim-0.23.2}/.gitignore +0 -0
  18. {pathsim-0.23.0 → pathsim-0.23.2}/CITATION.cff +0 -0
  19. {pathsim-0.23.0 → pathsim-0.23.2}/LICENSE.txt +0 -0
  20. {pathsim-0.23.0 → pathsim-0.23.2}/README.md +0 -0
  21. {pathsim-0.23.0 → pathsim-0.23.2}/conftest.py +0 -0
  22. {pathsim-0.23.0 → pathsim-0.23.2}/docs/.readthedocs.yaml +0 -0
  23. {pathsim-0.23.0 → pathsim-0.23.2}/docs/Makefile +0 -0
  24. {pathsim-0.23.0 → pathsim-0.23.2}/docs/requirements.txt +0 -0
  25. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/_ext/github_issues.py +0 -0
  26. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/_static/custom.css +0 -0
  27. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/_static/redirect.js +0 -0
  28. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/api.rst +0 -0
  29. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/conf.py +0 -0
  30. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/contributing.rst +0 -0
  31. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/abs_braking.ipynb +0 -0
  32. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/algebraic_loop.ipynb +0 -0
  33. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/billards.ipynb +0 -0
  34. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/bouncing_ball.ipynb +0 -0
  35. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/bouncing_pendulum.ipynb +0 -0
  36. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/cascade_controller.ipynb +0 -0
  37. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/checkpoints.ipynb +0 -0
  38. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/chemical_reactor.ipynb +0 -0
  39. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/coupled_oscillators.ipynb +0 -0
  40. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/data/BouncingBall_ME.fmu +0 -0
  41. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/data/CoupledClutches_CS_linux64.fmu +0 -0
  42. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/data/CoupledClutches_CS_win64.fmu +0 -0
  43. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/data/Dahlquist.fmu +0 -0
  44. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/data/VanDerPol_ME.fmu +0 -0
  45. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/dcmotor_control.ipynb +0 -0
  46. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/delta_sigma_adc.ipynb +0 -0
  47. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/diode_circuit.ipynb +0 -0
  48. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/elastic_pendulum.ipynb +0 -0
  49. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/algebraicloop_blockdiagram_g.png +0 -0
  50. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/billard_circle_g.png +0 -0
  51. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/bouncing_ball_blockdiagram_g.png +0 -0
  52. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/bouncing_ball_both_g.png +0 -0
  53. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/bouncing_ball_g.png +0 -0
  54. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/bouncing_ball_result_events_g.png +0 -0
  55. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/bouncing_ball_result_g.png +0 -0
  56. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/bouncing_ball_result_timesteps_g.png +0 -0
  57. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/bouncing_pendulum_blockdiagram_g.png +0 -0
  58. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/cascade_blockdiagram_g.png +0 -0
  59. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/coupled_oscillators_blockdiagram_g.png +0 -0
  60. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/coupled_oscillators_g.png +0 -0
  61. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/delta_sigma_blockdiagram_g.png +0 -0
  62. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/diode_blockdiagram_g.png +0 -0
  63. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/elastic_pendulum_g.png +0 -0
  64. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/fmcw_blockdiagram_g.png +0 -0
  65. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/fmcw_g.png +0 -0
  66. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/harmonic_oscillator_g.png +0 -0
  67. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/harmonic_oscillator_result_g.png +0 -0
  68. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/kalman_filter_blockdiagram_g.png +0 -0
  69. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/linear_feedback_blockdiagram_g.png +0 -0
  70. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/linear_feedback_result_g.png +0 -0
  71. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/linear_feedback_result_sensitivity_g.png +0 -0
  72. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/miller_frequency_divider_blockdiagram_g.png +0 -0
  73. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/nonlinear_noisy_amplifier_blockdiagram_g.png +0 -0
  74. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/ode_blockdiagram_g.png +0 -0
  75. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/pendulum_blockdiagram_g.png +0 -0
  76. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/pid_blockdiagram_g.png +0 -0
  77. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/sar_adc_blockdiagram_g.png +0 -0
  78. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/stick_slip_blockdiagram_g.png +0 -0
  79. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/stick_slip_blockdiagram_slip_g.png +0 -0
  80. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/stick_slip_blockdiagram_stick_g.png +0 -0
  81. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/stick_slip_g.png +0 -0
  82. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/thermostat_blockdiagram_g.png +0 -0
  83. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/vanderpol_blockdiagram_g.png +0 -0
  84. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/vanderpol_result_g.png +0 -0
  85. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/vanderpol_subsystem_blockdiagram_g.png +0 -0
  86. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/vanderpol_subsystem_lvl1_g.png +0 -0
  87. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/vanderpol_subsystem_lvl2_g.png +0 -0
  88. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/vanderpol_subsystem_lvl3_g.png +0 -0
  89. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/figures_g/volterralotka_blockdiagram_g.png +0 -0
  90. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/ode_blockdiagram_2.png +0 -0
  91. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/stick_slip_blockdiagram_slip.png +0 -0
  92. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/figures/stick_slip_blockdiagram_stick.png +0 -0
  93. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/fmcw_radar.ipynb +0 -0
  94. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/fmu_cosimulation.ipynb +0 -0
  95. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/fmu_model_exchange_bouncing_ball.ipynb +0 -0
  96. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/fmu_model_exchange_vanderpol.ipynb +0 -0
  97. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/harmonic_oscillator.ipynb +0 -0
  98. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/kalman_filter.ipynb +0 -0
  99. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/linear_feedback.ipynb +0 -0
  100. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/lorenz_attractor.ipynb +0 -0
  101. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/nested_subsystems.ipynb +0 -0
  102. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/noisy_amplifier.ipynb +0 -0
  103. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/pendulum.ipynb +0 -0
  104. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/pid_controller.ipynb +0 -0
  105. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/poincare_maps.ipynb +0 -0
  106. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/rf_network_oneport.ipynb +0 -0
  107. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/sar_adc.ipynb +0 -0
  108. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/spectrum_analysis.ipynb +0 -0
  109. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/stick_slip.ipynb +0 -0
  110. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/switched_bouncing_ball.ipynb +0 -0
  111. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/thermostat.ipynb +0 -0
  112. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/transfer_function.ipynb +0 -0
  113. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples/vanderpol.ipynb +0 -0
  114. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/examples.rst +0 -0
  115. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/figures/pathsim_object_hierarchy_g.png +0 -0
  116. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/figures/pathsim_solver_hierarchy_g.png +0 -0
  117. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/figures/sin_cos_blockdiagram_g.png +0 -0
  118. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/figures/system_g.png +0 -0
  119. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/index.rst +0 -0
  120. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/logos/pathsim_icon.png +0 -0
  121. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/logos/pathsim_logo.png +0 -0
  122. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/logos/pathsim_simplistic_logo.png +0 -0
  123. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.blocks._block.rst +0 -0
  124. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.blocks.adder.rst +0 -0
  125. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.blocks.amplifier.rst +0 -0
  126. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.blocks.comparator.rst +0 -0
  127. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.blocks.converters.rst +0 -0
  128. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.blocks.counter.rst +0 -0
  129. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.blocks.ctrl.rst +0 -0
  130. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.blocks.delay.rst +0 -0
  131. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.blocks.differentiator.rst +0 -0
  132. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.blocks.discrete.rst +0 -0
  133. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.blocks.dynsys.rst +0 -0
  134. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.blocks.filters.rst +0 -0
  135. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.blocks.fmu.rst +0 -0
  136. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.blocks.function.rst +0 -0
  137. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.blocks.integrator.rst +0 -0
  138. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.blocks.kalman.rst +0 -0
  139. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.blocks.lti.rst +0 -0
  140. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.blocks.math.rst +0 -0
  141. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.blocks.multiplier.rst +0 -0
  142. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.blocks.noise.rst +0 -0
  143. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.blocks.ode.rst +0 -0
  144. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.blocks.relay.rst +0 -0
  145. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.blocks.rf.rst +0 -0
  146. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.blocks.rng.rst +0 -0
  147. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.blocks.rst +0 -0
  148. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.blocks.scope.rst +0 -0
  149. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.blocks.sources.rst +0 -0
  150. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.blocks.spectrum.rst +0 -0
  151. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.blocks.switch.rst +0 -0
  152. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.blocks.table.rst +0 -0
  153. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.blocks.wrapper.rst +0 -0
  154. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.connection.rst +0 -0
  155. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.events._event.rst +0 -0
  156. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.events.condition.rst +0 -0
  157. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.events.rst +0 -0
  158. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.events.schedule.rst +0 -0
  159. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.events.zerocrossing.rst +0 -0
  160. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.optim.anderson.rst +0 -0
  161. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.optim.booster.rst +0 -0
  162. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.optim.numerical.rst +0 -0
  163. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.optim.operator.rst +0 -0
  164. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.optim.rst +0 -0
  165. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.simulation.rst +0 -0
  166. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.solvers._rungekutta.rst +0 -0
  167. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.solvers._solver.rst +0 -0
  168. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.solvers.bdf.rst +0 -0
  169. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.solvers.dirk2.rst +0 -0
  170. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.solvers.dirk3.rst +0 -0
  171. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.solvers.esdirk32.rst +0 -0
  172. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.solvers.esdirk4.rst +0 -0
  173. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.solvers.esdirk43.rst +0 -0
  174. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.solvers.esdirk54.rst +0 -0
  175. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.solvers.esdirk85.rst +0 -0
  176. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.solvers.euler.rst +0 -0
  177. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.solvers.gear.rst +0 -0
  178. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.solvers.rk4.rst +0 -0
  179. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.solvers.rkbs32.rst +0 -0
  180. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.solvers.rkck54.rst +0 -0
  181. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.solvers.rkdp54.rst +0 -0
  182. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.solvers.rkdp87.rst +0 -0
  183. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.solvers.rkf21.rst +0 -0
  184. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.solvers.rkf45.rst +0 -0
  185. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.solvers.rkf78.rst +0 -0
  186. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.solvers.rkv65.rst +0 -0
  187. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.solvers.rst +0 -0
  188. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.solvers.ssprk22.rst +0 -0
  189. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.solvers.ssprk33.rst +0 -0
  190. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.solvers.ssprk34.rst +0 -0
  191. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.solvers.steadystate.rst +0 -0
  192. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.subsystem.rst +0 -0
  193. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.utils.adaptivebuffer.rst +0 -0
  194. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.utils.analysis.rst +0 -0
  195. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.utils.gilbert.rst +0 -0
  196. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.utils.logger.rst +0 -0
  197. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.utils.portreference.rst +0 -0
  198. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.utils.progresstracker.rst +0 -0
  199. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.utils.realtimeplotter.rst +0 -0
  200. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.utils.register.rst +0 -0
  201. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/modules/pathsim.utils.rst +0 -0
  202. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/pathsim_docs.mplstyle +0 -0
  203. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/quickstart.ipynb +0 -0
  204. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/roadmap.rst +0 -0
  205. {pathsim-0.23.0 → pathsim-0.23.2}/docs/source/roadmap_generated.rst +0 -0
  206. {pathsim-0.23.0 → pathsim-0.23.2}/examples/example_abs_braking.py +0 -0
  207. {pathsim-0.23.0 → pathsim-0.23.2}/examples/example_adc.py +0 -0
  208. {pathsim-0.23.0 → pathsim-0.23.2}/examples/example_algebraicchain.py +0 -0
  209. {pathsim-0.23.0 → pathsim-0.23.2}/examples/example_algebraicloop.py +0 -0
  210. {pathsim-0.23.0 → pathsim-0.23.2}/examples/example_cascade.py +0 -0
  211. {pathsim-0.23.0 → pathsim-0.23.2}/examples/example_dcmotor.py +0 -0
  212. {pathsim-0.23.0 → pathsim-0.23.2}/examples/example_deltasigma.py +0 -0
  213. {pathsim-0.23.0 → pathsim-0.23.2}/examples/example_derivative.py +0 -0
  214. {pathsim-0.23.0 → pathsim-0.23.2}/examples/example_diode.py +0 -0
  215. {pathsim-0.23.0 → pathsim-0.23.2}/examples/example_dualslope.py +0 -0
  216. {pathsim-0.23.0 → pathsim-0.23.2}/examples/example_elastic_pendulum.py +0 -0
  217. {pathsim-0.23.0 → pathsim-0.23.2}/examples/example_feedback.py +0 -0
  218. {pathsim-0.23.0 → pathsim-0.23.2}/examples/example_filters.py +0 -0
  219. {pathsim-0.23.0 → pathsim-0.23.2}/examples/example_harmonic_oscillator.py +0 -0
  220. {pathsim-0.23.0 → pathsim-0.23.2}/examples/example_kalman_filter.py +0 -0
  221. {pathsim-0.23.0 → pathsim-0.23.2}/examples/example_nested_subsystems.py +0 -0
  222. {pathsim-0.23.0 → pathsim-0.23.2}/examples/example_noise.py +0 -0
  223. {pathsim-0.23.0 → pathsim-0.23.2}/examples/example_pendulum.py +0 -0
  224. {pathsim-0.23.0 → pathsim-0.23.2}/examples/example_phasenoise.py +0 -0
  225. {pathsim-0.23.0 → pathsim-0.23.2}/examples/example_pid.py +0 -0
  226. {pathsim-0.23.0 → pathsim-0.23.2}/examples/example_pid_antiwindup.py +0 -0
  227. {pathsim-0.23.0 → pathsim-0.23.2}/examples/example_pid_vs_discretePID.py +0 -0
  228. {pathsim-0.23.0 → pathsim-0.23.2}/examples/example_radar.py +0 -0
  229. {pathsim-0.23.0 → pathsim-0.23.2}/examples/example_reactor.py +0 -0
  230. {pathsim-0.23.0 → pathsim-0.23.2}/examples/example_sar.py +0 -0
  231. {pathsim-0.23.0 → pathsim-0.23.2}/examples/example_solar.py +0 -0
  232. {pathsim-0.23.0 → pathsim-0.23.2}/examples/example_solver_hotswap.py +0 -0
  233. {pathsim-0.23.0 → pathsim-0.23.2}/examples/example_spectrum.py +0 -0
  234. {pathsim-0.23.0 → pathsim-0.23.2}/examples/example_spectrum_rf_oneport.py +0 -0
  235. {pathsim-0.23.0 → pathsim-0.23.2}/examples/example_steadystate.py +0 -0
  236. {pathsim-0.23.0 → pathsim-0.23.2}/examples/example_stickslip.py +0 -0
  237. {pathsim-0.23.0 → pathsim-0.23.2}/examples/example_transferfunction.py +0 -0
  238. {pathsim-0.23.0 → pathsim-0.23.2}/examples/example_vanderpol_subsystem.py +0 -0
  239. {pathsim-0.23.0 → pathsim-0.23.2}/examples/examples_event/example_billards_sphere.py +0 -0
  240. {pathsim-0.23.0 → pathsim-0.23.2}/examples/examples_event/example_bouncing_pendulum.py +0 -0
  241. {pathsim-0.23.0 → pathsim-0.23.2}/examples/examples_event/example_bouncingball.py +0 -0
  242. {pathsim-0.23.0 → pathsim-0.23.2}/examples/examples_event/example_bouncingball_friction.py +0 -0
  243. {pathsim-0.23.0 → pathsim-0.23.2}/examples/examples_event/example_bouncingball_switched.py +0 -0
  244. {pathsim-0.23.0 → pathsim-0.23.2}/examples/examples_event/example_integrator_reset.py +0 -0
  245. {pathsim-0.23.0 → pathsim-0.23.2}/examples/examples_event/example_pulse.py +0 -0
  246. {pathsim-0.23.0 → pathsim-0.23.2}/examples/examples_event/example_stickslip_event.py +0 -0
  247. {pathsim-0.23.0 → pathsim-0.23.2}/examples/examples_event/example_thermostat.py +0 -0
  248. {pathsim-0.23.0 → pathsim-0.23.2}/examples/examples_event/example_volterralotka_event.py +0 -0
  249. {pathsim-0.23.0 → pathsim-0.23.2}/examples/examples_odes/example_bonhoeffer_vanderpol.py +0 -0
  250. {pathsim-0.23.0 → pathsim-0.23.2}/examples/examples_odes/example_brusselator.py +0 -0
  251. {pathsim-0.23.0 → pathsim-0.23.2}/examples/examples_odes/example_chemical.py +0 -0
  252. {pathsim-0.23.0 → pathsim-0.23.2}/examples/examples_odes/example_duffing.py +0 -0
  253. {pathsim-0.23.0 → pathsim-0.23.2}/examples/examples_odes/example_fairen_velarde.py +0 -0
  254. {pathsim-0.23.0 → pathsim-0.23.2}/examples/examples_odes/example_fitzhughnagumo.py +0 -0
  255. {pathsim-0.23.0 → pathsim-0.23.2}/examples/examples_odes/example_flame.py +0 -0
  256. {pathsim-0.23.0 → pathsim-0.23.2}/examples/examples_odes/example_glycolysis.py +0 -0
  257. {pathsim-0.23.0 → pathsim-0.23.2}/examples/examples_odes/example_lorenz.py +0 -0
  258. {pathsim-0.23.0 → pathsim-0.23.2}/examples/examples_odes/example_morse.py +0 -0
  259. {pathsim-0.23.0 → pathsim-0.23.2}/examples/examples_odes/example_robertson.py +0 -0
  260. {pathsim-0.23.0 → pathsim-0.23.2}/examples/examples_odes/example_roessler.py +0 -0
  261. {pathsim-0.23.0 → pathsim-0.23.2}/examples/examples_odes/example_thomas_cyclic.py +0 -0
  262. {pathsim-0.23.0 → pathsim-0.23.2}/examples/examples_odes/example_vanderpol.py +0 -0
  263. {pathsim-0.23.0 → pathsim-0.23.2}/examples/examples_odes/example_volterralotka.py +0 -0
  264. {pathsim-0.23.0 → pathsim-0.23.2}/git +0 -0
  265. {pathsim-0.23.0 → pathsim-0.23.2}/pyproject.toml +0 -0
  266. {pathsim-0.23.0 → pathsim-0.23.2}/setup.cfg +0 -0
  267. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/__init__.py +0 -0
  268. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/_constants.py +0 -0
  269. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/README.md +0 -0
  270. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/__init__.py +0 -0
  271. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/_block.py +0 -0
  272. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/adder.py +0 -0
  273. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/amplifier.py +0 -0
  274. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/comparator.py +0 -0
  275. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/constraint.py +0 -0
  276. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/converters.py +0 -0
  277. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/counter.py +0 -0
  278. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/ctrl.py +0 -0
  279. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/dae.py +0 -0
  280. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/delay.py +0 -0
  281. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/differentiator.py +0 -0
  282. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/discrete.py +0 -0
  283. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/divider.py +0 -0
  284. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/dynsys.py +0 -0
  285. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/filters.py +0 -0
  286. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/fmu.py +0 -0
  287. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/function.py +0 -0
  288. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/integrator.py +0 -0
  289. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/kalman.py +0 -0
  290. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/logic.py +0 -0
  291. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/lti.py +0 -0
  292. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/math.py +0 -0
  293. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/multiplier.py +0 -0
  294. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/noise.py +0 -0
  295. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/ode.py +0 -0
  296. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/relay.py +0 -0
  297. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/rng.py +0 -0
  298. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/scope.py +0 -0
  299. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/sources.py +0 -0
  300. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/spectrum.py +0 -0
  301. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/switch.py +0 -0
  302. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/table.py +0 -0
  303. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/blocks/wrapper.py +0 -0
  304. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/connection.py +0 -0
  305. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/events/__init__.py +0 -0
  306. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/events/_event.py +0 -0
  307. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/events/condition.py +0 -0
  308. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/events/schedule.py +0 -0
  309. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/events/zerocrossing.py +0 -0
  310. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/exceptions.py +0 -0
  311. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/optim/__init__.py +0 -0
  312. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/optim/anderson.py +0 -0
  313. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/optim/booster.py +0 -0
  314. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/optim/newton.py +0 -0
  315. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/optim/numerical.py +0 -0
  316. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/optim/operator.py +0 -0
  317. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/simulation.py +0 -0
  318. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/solvers/README.md +0 -0
  319. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/solvers/__init__.py +0 -0
  320. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/solvers/_rungekutta.py +0 -0
  321. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/solvers/_solver.py +0 -0
  322. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/solvers/bdf.py +0 -0
  323. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/solvers/dirk2.py +0 -0
  324. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/solvers/dirk3.py +0 -0
  325. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/solvers/esdirk32.py +0 -0
  326. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/solvers/esdirk4.py +0 -0
  327. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/solvers/esdirk43.py +0 -0
  328. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/solvers/esdirk54.py +0 -0
  329. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/solvers/esdirk85.py +0 -0
  330. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/solvers/euler.py +0 -0
  331. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/solvers/gear.py +0 -0
  332. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/solvers/rk4.py +0 -0
  333. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/solvers/rkbs32.py +0 -0
  334. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/solvers/rkck54.py +0 -0
  335. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/solvers/rkdp54.py +0 -0
  336. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/solvers/rkdp87.py +0 -0
  337. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/solvers/rkf21.py +0 -0
  338. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/solvers/rkf78.py +0 -0
  339. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/solvers/rkv65.py +0 -0
  340. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/solvers/ssprk22.py +0 -0
  341. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/solvers/ssprk33.py +0 -0
  342. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/solvers/ssprk34.py +0 -0
  343. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/solvers/steadystate.py +0 -0
  344. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/subsystem.py +0 -0
  345. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/utils/__init__.py +0 -0
  346. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/utils/adaptivebuffer.py +0 -0
  347. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/utils/analysis.py +0 -0
  348. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/utils/deprecation.py +0 -0
  349. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/utils/diagnostics.py +0 -0
  350. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/utils/fmuwrapper.py +0 -0
  351. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/utils/gilbert.py +0 -0
  352. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/utils/graph.py +0 -0
  353. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/utils/logger.py +0 -0
  354. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/utils/mutable.py +0 -0
  355. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/utils/portreference.py +0 -0
  356. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/utils/progresstracker.py +0 -0
  357. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/utils/realtimeplotter.py +0 -0
  358. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim/utils/register.py +0 -0
  359. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim.egg-info/SOURCES.txt +0 -0
  360. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim.egg-info/dependency_links.txt +0 -0
  361. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim.egg-info/requires.txt +0 -0
  362. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim.egg-info/scm_file_list.json +0 -0
  363. {pathsim-0.23.0 → pathsim-0.23.2}/src/pathsim.egg-info/top_level.txt +0 -0
  364. {pathsim-0.23.0 → pathsim-0.23.2}/tests/README.md +0 -0
  365. {pathsim-0.23.0 → pathsim-0.23.2}/tests/__init__.py +0 -0
  366. {pathsim-0.23.0 → pathsim-0.23.2}/tests/evals/CoupledClutches_CS.fmu +0 -0
  367. {pathsim-0.23.0 → pathsim-0.23.2}/tests/evals/__init__.py +0 -0
  368. {pathsim-0.23.0 → pathsim-0.23.2}/tests/evals/conftest.py +0 -0
  369. {pathsim-0.23.0 → pathsim-0.23.2}/tests/evals/test_algebraic_system.py +0 -0
  370. {pathsim-0.23.0 → pathsim-0.23.2}/tests/evals/test_bouncingball_friction_event_system.py +0 -0
  371. {pathsim-0.23.0 → pathsim-0.23.2}/tests/evals/test_bouncingball_system.py +0 -0
  372. {pathsim-0.23.0 → pathsim-0.23.2}/tests/evals/test_brusselator_system.py +0 -0
  373. {pathsim-0.23.0 → pathsim-0.23.2}/tests/evals/test_cosim_fmu_system.py +0 -0
  374. {pathsim-0.23.0 → pathsim-0.23.2}/tests/evals/test_counter_comparator_system.py +0 -0
  375. {pathsim-0.23.0 → pathsim-0.23.2}/tests/evals/test_dynamical_system_ivp.py +0 -0
  376. {pathsim-0.23.0 → pathsim-0.23.2}/tests/evals/test_fitzhughnagumo_system.py +0 -0
  377. {pathsim-0.23.0 → pathsim-0.23.2}/tests/evals/test_harmonic_oscillator_system.py +0 -0
  378. {pathsim-0.23.0 → pathsim-0.23.2}/tests/evals/test_linear_feedback_system.py +0 -0
  379. {pathsim-0.23.0 → pathsim-0.23.2}/tests/evals/test_logic_system.py +0 -0
  380. {pathsim-0.23.0 → pathsim-0.23.2}/tests/evals/test_lorenz_system.py +0 -0
  381. {pathsim-0.23.0 → pathsim-0.23.2}/tests/evals/test_me_analytical.py +0 -0
  382. {pathsim-0.23.0 → pathsim-0.23.2}/tests/evals/test_model_exchange_fmu_system.py +0 -0
  383. {pathsim-0.23.0 → pathsim-0.23.2}/tests/evals/test_pid_system.py +0 -0
  384. {pathsim-0.23.0 → pathsim-0.23.2}/tests/evals/test_relay_thermostat_system.py +0 -0
  385. {pathsim-0.23.0 → pathsim-0.23.2}/tests/evals/test_rescale_delay_system.py +0 -0
  386. {pathsim-0.23.0 → pathsim-0.23.2}/tests/evals/test_robertson_system.py +0 -0
  387. {pathsim-0.23.0 → pathsim-0.23.2}/tests/evals/test_roessler_system.py +0 -0
  388. {pathsim-0.23.0 → pathsim-0.23.2}/tests/evals/test_signal_processing_system.py +0 -0
  389. {pathsim-0.23.0 → pathsim-0.23.2}/tests/evals/test_steadystate_transient_system.py +0 -0
  390. {pathsim-0.23.0 → pathsim-0.23.2}/tests/evals/test_switch_lti_system.py +0 -0
  391. {pathsim-0.23.0 → pathsim-0.23.2}/tests/evals/test_vanderpol_system.py +0 -0
  392. {pathsim-0.23.0 → pathsim-0.23.2}/tests/evals/test_volterralotka_system.py +0 -0
  393. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/__init__.py +0 -0
  394. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/__init__.py +0 -0
  395. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/_embedding.py +0 -0
  396. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/rf/__init__.py +0 -0
  397. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/rf/ring_slot.s2p +0 -0
  398. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/rf/ring_slot_meas.s1p +0 -0
  399. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/test_adder.py +0 -0
  400. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/test_amplifier.py +0 -0
  401. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/test_block.py +0 -0
  402. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/test_comparator.py +0 -0
  403. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/test_constraint.py +0 -0
  404. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/test_converters.py +0 -0
  405. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/test_counter.py +0 -0
  406. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/test_ctrl.py +0 -0
  407. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/test_dae.py +0 -0
  408. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/test_delay.py +0 -0
  409. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/test_differentiator.py +0 -0
  410. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/test_discrete.py +0 -0
  411. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/test_divider.py +0 -0
  412. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/test_dynsys.py +0 -0
  413. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/test_filters.py +0 -0
  414. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/test_fmu.py +0 -0
  415. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/test_function.py +0 -0
  416. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/test_integrator.py +0 -0
  417. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/test_kalman.py +0 -0
  418. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/test_logic.py +0 -0
  419. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/test_lti.py +0 -0
  420. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/test_math.py +0 -0
  421. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/test_multiplier.py +0 -0
  422. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/test_noise.py +0 -0
  423. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/test_ode.py +0 -0
  424. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/test_relay.py +0 -0
  425. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/test_rng.py +0 -0
  426. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/test_scope.py +0 -0
  427. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/test_sources.py +0 -0
  428. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/test_spectrum.py +0 -0
  429. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/test_switch.py +0 -0
  430. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/test_table.py +0 -0
  431. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/blocks/test_wrapper.py +0 -0
  432. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/events/__init__.py +0 -0
  433. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/events/test_condition.py +0 -0
  434. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/events/test_event.py +0 -0
  435. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/events/test_schedule.py +0 -0
  436. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/events/test_zerocrossing.py +0 -0
  437. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/optim/__init__.py +0 -0
  438. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/optim/test_anderson.py +0 -0
  439. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/optim/test_newton.py +0 -0
  440. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/optim/test_numerical.py +0 -0
  441. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/optim/test_operator.py +0 -0
  442. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/solvers/__init__.py +0 -0
  443. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/solvers/_referenceproblems.py +0 -0
  444. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/solvers/test_bdf.py +0 -0
  445. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/solvers/test_dirk2.py +0 -0
  446. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/solvers/test_dirk3.py +0 -0
  447. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/solvers/test_esdirk32.py +0 -0
  448. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/solvers/test_esdirk4.py +0 -0
  449. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/solvers/test_esdirk43.py +0 -0
  450. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/solvers/test_esdirk54.py +0 -0
  451. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/solvers/test_esdirk85.py +0 -0
  452. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/solvers/test_euler.py +0 -0
  453. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/solvers/test_gear.py +0 -0
  454. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/solvers/test_rfk21.py +0 -0
  455. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/solvers/test_rk4.py +0 -0
  456. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/solvers/test_rkbs32.py +0 -0
  457. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/solvers/test_rkck54.py +0 -0
  458. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/solvers/test_rkdp54.py +0 -0
  459. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/solvers/test_rkdp87.py +0 -0
  460. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/solvers/test_rkf78.py +0 -0
  461. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/solvers/test_rkv65.py +0 -0
  462. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/solvers/test_solver.py +0 -0
  463. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/solvers/test_ssprk22.py +0 -0
  464. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/solvers/test_ssprk33.py +0 -0
  465. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/solvers/test_ssprk34.py +0 -0
  466. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/solvers/test_steadystate.py +0 -0
  467. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/test_auto_initial_step.py +0 -0
  468. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/test_checkpoint.py +0 -0
  469. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/test_connection.py +0 -0
  470. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/test_diagnostics.py +0 -0
  471. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/test_simulation.py +0 -0
  472. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/test_simulation_pss.py +0 -0
  473. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/test_subsystem.py +0 -0
  474. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/utils/__init__.py +0 -0
  475. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/utils/test_adaptivebuffer.py +0 -0
  476. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/utils/test_analysis.py +0 -0
  477. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/utils/test_fmuwrapper.py +0 -0
  478. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/utils/test_gilbert.py +0 -0
  479. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/utils/test_graph.py +0 -0
  480. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/utils/test_logger.py +0 -0
  481. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/utils/test_mutable.py +0 -0
  482. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/utils/test_portreference.py +0 -0
  483. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/utils/test_progresstracker.py +0 -0
  484. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/utils/test_realtimeplotter.py +0 -0
  485. {pathsim-0.23.0 → pathsim-0.23.2}/tests/pathsim/utils/test_register.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pathsim
3
- Version: 0.23.0
3
+ Version: 0.23.2
4
4
  Summary: A differentiable block based hybrid system simulation framework.
5
5
  Author-email: Milan Rother <milan.rother@gmx.de>
6
6
  License: MIT
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '0.23.0'
22
- __version_tuple__ = version_tuple = (0, 23, 0)
21
+ __version__ = version = '0.23.2'
22
+ __version_tuple__ = version_tuple = (0, 23, 2)
23
23
 
24
- __commit_id__ = commit_id = 'g5fc53f553'
24
+ __commit_id__ = commit_id = 'g6079208a8'
@@ -116,6 +116,10 @@ class BVP1D(Block):
116
116
  initial guess for the free parameters, `None` if there are none
117
117
  tol : float
118
118
  solver tolerance passed to :func:`scipy.integrate.solve_bvp`
119
+ max_nodes : int
120
+ maximum number of mesh nodes allowed during refinement, passed to
121
+ :func:`scipy.integrate.solve_bvp`. A solve that would exceed this cap
122
+ fails and the previous output and warm-start are retained.
119
123
 
120
124
  Attributes
121
125
  ----------
@@ -135,7 +139,8 @@ class BVP1D(Block):
135
139
  x_eval=None,
136
140
  y0=None,
137
141
  p0=None,
138
- tol=1e-6
142
+ tol=1e-6,
143
+ max_nodes=1000
139
144
  ):
140
145
 
141
146
  super().__init__()
@@ -157,8 +162,9 @@ class BVP1D(Block):
157
162
  self.x_eval = (np.linspace(a, b, n_nodes) if x_eval is None
158
163
  else np.asarray(x_eval, dtype=float))
159
164
 
160
- #solver tolerance
165
+ #solver tolerance and mesh node cap
161
166
  self.tol = tol
167
+ self.max_nodes = int(max_nodes)
162
168
 
163
169
  #initial mesh and solution guess (used as warm-start)
164
170
  self._x0 = np.linspace(a, b, n_nodes)
@@ -254,11 +260,13 @@ class BVP1D(Block):
254
260
  if self._has_p:
255
261
  _fun = lambda x, y, p: self.fun(x, y, p, u)
256
262
  _bc = lambda ya, yb, p: self.bc(ya, yb, p, u)
257
- sol = solve_bvp(_fun, _bc, self._x, self._y, p=self._p, tol=self.tol)
263
+ sol = solve_bvp(_fun, _bc, self._x, self._y, p=self._p,
264
+ tol=self.tol, max_nodes=self.max_nodes)
258
265
  else:
259
266
  _fun = lambda x, y: self.fun(x, y, None, u)
260
267
  _bc = lambda ya, yb: self.bc(ya, yb, None, u)
261
- sol = solve_bvp(_fun, _bc, self._x, self._y, tol=self.tol)
268
+ sol = solve_bvp(_fun, _bc, self._x, self._y,
269
+ tol=self.tol, max_nodes=self.max_nodes)
262
270
 
263
271
  self.success = bool(sol.success)
264
272
 
@@ -18,6 +18,7 @@ from typing import TYPE_CHECKING, TypeVar
18
18
 
19
19
  try:
20
20
  import skrf as rf
21
+ from skrf.vectorFitting import VectorFitting as _VectorFitting
21
22
 
22
23
  HAS_SKRF = True
23
24
  except ImportError:
@@ -85,12 +86,12 @@ class RFNetwork(StateSpace):
85
86
 
86
87
  # Select the vector fitting function from scikit-rf
87
88
  vf_fun_name = "auto_fit" if auto_fit else "vector_fit"
88
- vf_fun = getattr(rf.VectorFitting, vf_fun_name)
89
+ vf_fun = getattr(_VectorFitting, vf_fun_name)
89
90
  # Filter kwargs for the selected vf function
90
91
  vf_fun_keys = signature(vf_fun).parameters
91
92
  vf_kwargs = {k: v for k, v in kwargs.items() if k in vf_fun_keys}
92
93
  # Apply vector fitting
93
- vf = rf.VectorFitting(ntwk)
94
+ vf = _VectorFitting(ntwk)
94
95
  getattr(vf, vf_fun_name)(**vf_kwargs)
95
96
  A, B, C, D, _ = vf._get_ABCDE()
96
97
  # keep a copy of the network and VF
@@ -113,6 +114,6 @@ class RFNetwork(StateSpace):
113
114
  s : :py:class:`~numpy.ndarray`
114
115
  Complex-valued S-matrices (fxNxN) calculated at frequencies `freqs`.
115
116
  """
116
- return rf.VectorFitting._get_s_from_ABCDE(
117
+ return _VectorFitting._get_s_from_ABCDE(
117
118
  freqs, self.A, self.B, self.C, self.D, 0
118
119
  )
@@ -15,16 +15,18 @@ from ._rungekutta import ExplicitRungeKutta
15
15
  # SOLVERS ==============================================================================
16
16
 
17
17
  class RKF45(ExplicitRungeKutta):
18
- """Runge-Kutta-Fehlberg 4(5) pair. Six stages, 4th order propagation with
19
- 5th order error estimate.
18
+ """Runge-Kutta-Fehlberg 5(4) pair. Six stages, 5th order propagation with
19
+ an embedded 4th order solution for local error estimation (local
20
+ extrapolation, matching the ``RKCK54`` / ``RKDP54`` convention).
20
21
 
21
22
  The historically first widely-used embedded pair for automatic step-size
22
- control. The 4th order solution is propagated; the difference to the 5th
23
- order solution provides a local error estimate.
23
+ control. The 5th order solution ``b5`` is propagated; the difference to the
24
+ 4th order solution ``b4`` (``TR = b5 - b4``) provides a local error estimate
25
+ of the lower-order result.
24
26
 
25
27
  Characteristics
26
28
  ---------------
27
- * Order: 4 (propagating) / 5 (error estimate)
29
+ * Order: 5 (propagating) / 4 (error estimate)
28
30
  * Stages: 6
29
31
  * Explicit, adaptive timestep
30
32
 
@@ -63,15 +65,15 @@ class RKF45(ExplicitRungeKutta):
63
65
  #intermediate evaluation times
64
66
  self.eval_stages = [0.0, 1/4, 3/8, 12/13, 1, 1/2]
65
67
 
66
- #extended butcher table
68
+ #extended butcher table (propagates the 5th order weights b5)
67
69
  self.BT = {
68
70
  0: [ 1/4],
69
71
  1: [ 3/32, 9/32],
70
- 2: [1932/2197, -7200/2197, 7296/2197],
71
- 3: [ 439/216, -8, 3680/513, -845/4104],
72
- 4: [ -8/27, 2, -3554/2565, 1859/4104, -11/40],
73
- 5: [ 25/216, 0, 1408/2565, 2197/4104, -1/5, 0]
72
+ 2: [1932/2197, -7200/2197, 7296/2197],
73
+ 3: [ 439/216, -8, 3680/513, -845/4104],
74
+ 4: [ -8/27, 2, -3544/2565, 1859/4104, -11/40],
75
+ 5: [ 16/135, 0, 6656/12825, 28561/56430, -9/50, 2/55]
74
76
  }
75
77
 
76
- #coefficients for local truncation error estimate
78
+ #coefficients for local truncation error estimate (TR = b5 - b4)
77
79
  self.TR = [1/360, 0, -128/4275, -2197/75240, 1/50, 2/55]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pathsim
3
- Version: 0.23.0
3
+ Version: 0.23.2
4
4
  Summary: A differentiable block based hybrid system simulation framework.
5
5
  Author-email: Milan Rother <milan.rother@gmx.de>
6
6
  License: MIT
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "0.23.2",
3
+ "distance": 0,
4
+ "node": "g6079208a8cee1d89d8a05a5dadc004bb7f5d2f9a",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-07-04"
8
+ }
@@ -69,7 +69,7 @@ class TestOnePort(unittest.TestCase):
69
69
  "Test space-state ABCD parameters."
70
70
  # ABCD(E) arrays from scikit-rf
71
71
  ntwk = rf.data.ring_slot_meas
72
- vf = rf.VectorFitting(ntwk)
72
+ vf = rf.vectorFitting.VectorFitting(ntwk)
73
73
  vf.auto_fit()
74
74
  A, B, C, D, E = vf._get_ABCDE()
75
75
 
@@ -106,10 +106,49 @@ class TestBVP1D(unittest.TestCase):
106
106
  def test_info(self):
107
107
  info = BVP1D.info()
108
108
  self.assertEqual(info["type"], "BVP1D")
109
- for p in ("fun", "bc", "n", "domain", "n_nodes", "x_eval", "y0", "p0", "tol"):
109
+ for p in ("fun", "bc", "n", "domain", "n_nodes", "x_eval", "y0", "p0",
110
+ "tol", "max_nodes"):
110
111
  self.assertIn(p, info["parameters"])
111
112
 
112
113
 
114
+ def test_max_nodes_passthrough(self):
115
+ #max_nodes is stored as int and forwarded to solve_bvp
116
+ fun = lambda x, y, p, u: np.vstack([y[1], -y[0]])
117
+ bc = lambda ya, yb, p, u: np.array([ya[0], yb[0] - 1.0])
118
+ bvp = BVP1D(fun, bc, n=2, domain=(0.0, np.pi/2), max_nodes=5000)
119
+ self.assertEqual(bvp.max_nodes, 5000)
120
+
121
+ import pathsim.blocks.bvp as bvpmod
122
+ captured = {}
123
+ orig = bvpmod.solve_bvp
124
+ def _capture(*a, **k):
125
+ captured["max_nodes"] = k.get("max_nodes")
126
+ return orig(*a, **k)
127
+ bvpmod.solve_bvp = _capture
128
+ try:
129
+ bvp.update(0.0)
130
+ finally:
131
+ bvpmod.solve_bvp = orig
132
+ self.assertEqual(captured["max_nodes"], 5000)
133
+
134
+
135
+ def test_max_nodes_too_small_fails(self):
136
+ #a cap below the nodes required for convergence makes the solve fail,
137
+ #raising max_nodes recovers it
138
+ fun = lambda x, y, p, u: np.vstack([y[1], -y[0]])
139
+ bc = lambda ya, yb, p, u: np.array([ya[0], yb[0] - 1.0])
140
+
141
+ tight = BVP1D(fun, bc, n=2, domain=(0.0, np.pi/2), n_nodes=3,
142
+ tol=1e-10, max_nodes=4)
143
+ tight.update(0.0)
144
+ self.assertFalse(tight.success)
145
+
146
+ loose = BVP1D(fun, bc, n=2, domain=(0.0, np.pi/2), n_nodes=3,
147
+ tol=1e-10, max_nodes=10000)
148
+ loose.update(0.0)
149
+ self.assertTrue(loose.success)
150
+
151
+
113
152
  def test_simulation(self):
114
153
  #drive the right boundary with a constant source, output tracks u*sin(x)
115
154
  from pathsim import Simulation, Connection
@@ -118,12 +118,28 @@ class TestRKF45(unittest.TestCase):
118
118
  err = np.mean(abs(numerical_solution - analytical_solution))
119
119
  errors.append(err)
120
120
 
121
- #test if errors are monotonically decreasing
122
- self.assertTrue(np.all(np.diff(errors)<0))
123
-
124
- #test convergence order, expected n-1 (global)
125
- p, _ = np.polyfit(np.log10(timesteps), np.log10(errors), deg=1)
126
- self.assertGreater(p, solver.n-1)
121
+ errors = np.array(errors)
122
+ timesteps = np.array(timesteps)
123
+
124
+ #restrict the convergence assessment to the region above the
125
+ #roundoff floor: now that RKF45 propagates the 5th order weights
126
+ #it drives some reference problems to machine precision at fine
127
+ #dt, where the error saturates and is no longer a clean power law
128
+ above_floor = errors > 1e-11
129
+ errs_fit = errors[above_floor]
130
+ dts_fit = timesteps[above_floor]
131
+
132
+ #test if errors are monotonically decreasing (above the floor)
133
+ self.assertTrue(np.all(np.diff(errs_fit) < 0))
134
+
135
+ #test convergence order (global). A conservative n-2 bound is
136
+ #used here because the now-5th-order propagation makes a plain
137
+ #fixed-step fit sensitive to fixture effects on the stiffer
138
+ #reference problems (rapidly growing higher derivatives near the
139
+ #blow-up of 1/(1-t) pollute the asymptotic slope). The clean
140
+ #order fit lives in test_convergence_order_fixed_step.
141
+ p, _ = np.polyfit(np.log10(dts_fit), np.log10(errs_fit), deg=1)
142
+ self.assertGreater(p, solver.n-2)
127
143
 
128
144
  #log stats
129
145
  stats[problem.name] = {"n":p, "err":errors, "dt":timesteps}
@@ -137,6 +153,37 @@ class TestRKF45(unittest.TestCase):
137
153
  # plt.show()
138
154
 
139
155
 
156
+ def test_convergence_order_fixed_step(self):
157
+
158
+ #RKF45 propagates the 5th order weights -> fixed-step global convergence
159
+ #order must be ~5 on a smooth problem. Driven step-by-step to an exact
160
+ #endpoint (no overshoot) so the fitted slope reflects the tableau order.
161
+ #x' = x, x(0) = 1 -> exact x(1) = e.
162
+ func = lambda x, t: x
163
+ exact = np.exp(1.0)
164
+
165
+ n_steps = [10, 20, 40, 80, 160]
166
+ dts = [1.0 / n for n in n_steps]
167
+ errors = []
168
+ for n in n_steps:
169
+ solver = RKF45(1.0)
170
+ solver.reset()
171
+ t, dt = 0.0, 1.0 / n
172
+ for _ in range(n):
173
+ solver.integrate_singlestep(func, time=t, dt=dt)
174
+ t += dt
175
+ errors.append(abs(float(np.ravel(solver.x)[0]) - exact))
176
+
177
+ #errors must decrease monotonically
178
+ self.assertTrue(np.all(np.diff(errors) < 0))
179
+
180
+ #least-squares order fit must be close to 5 (the pre-fix 4th order
181
+ #propagation gives ~4; a broken high-order row would give < 4)
182
+ p, _ = np.polyfit(np.log10(dts), np.log10(errors), deg=1)
183
+ self.assertGreater(p, 4.6)
184
+ self.assertLess(p, 5.4)
185
+
186
+
140
187
  def test_integrate_adaptive(self):
141
188
 
142
189
  #integrate test problem and assess convergence order
@@ -1,8 +0,0 @@
1
- {
2
- "tag": "0.23.0",
3
- "distance": 0,
4
- "node": "g5fc53f5537e347b855719bd7176bab2b6ff72222",
5
- "dirty": false,
6
- "branch": "HEAD",
7
- "node_date": "2026-06-23"
8
- }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes