pathsim 0.27.0__tar.gz → 0.27.1__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.
- {pathsim-0.27.0 → pathsim-0.27.1}/PKG-INFO +1 -1
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/_version.py +3 -3
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/dae.py +33 -13
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/simulation.py +4 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim.egg-info/PKG-INFO +1 -1
- pathsim-0.27.1/src/pathsim.egg-info/scm_version.json +8 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/test_dae.py +53 -1
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/test_simulation.py +85 -3
- pathsim-0.27.0/src/pathsim.egg-info/scm_version.json +0 -8
- {pathsim-0.27.0 → pathsim-0.27.1}/.codecov.yml +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/.github/FUNDING.yml +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/.github/pull_request_template.md +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/.github/workflows/pypi_deployment.yml +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/.github/workflows/tests_codecov.yml +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/.github/workflows/urlchecker.yml +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/.gitignore +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/CITATION.cff +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/CONTRIBUTING.md +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/LICENSE.txt +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/README.md +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/conftest.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/abs_braking.ipynb +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/algebraic_loop.ipynb +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/billards.ipynb +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/bouncing_ball.ipynb +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/bouncing_pendulum.ipynb +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/cascade_controller.ipynb +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/checkpoints.ipynb +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/chemical_reactor.ipynb +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/coupled_oscillators.ipynb +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/data/BouncingBall_ME.fmu +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/data/CoupledClutches_CS_linux64.fmu +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/data/CoupledClutches_CS_win64.fmu +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/data/Dahlquist.fmu +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/data/VanDerPol_ME.fmu +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/dcmotor_control.ipynb +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/delta_sigma_adc.ipynb +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/diode_circuit.ipynb +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/elastic_pendulum.ipynb +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/algebraicloop_blockdiagram_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/billard_circle_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/bouncing_ball_blockdiagram_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/bouncing_ball_both_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/bouncing_ball_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/bouncing_ball_result_events_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/bouncing_ball_result_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/bouncing_ball_result_timesteps_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/bouncing_pendulum_blockdiagram_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/cascade_blockdiagram_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/coupled_oscillators_blockdiagram_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/coupled_oscillators_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/delta_sigma_blockdiagram_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/diode_blockdiagram_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/elastic_pendulum_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/fmcw_blockdiagram_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/fmcw_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/harmonic_oscillator_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/harmonic_oscillator_result_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/kalman_filter_blockdiagram_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/linear_feedback_blockdiagram_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/linear_feedback_result_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/linear_feedback_result_sensitivity_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/miller_frequency_divider_blockdiagram_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/nonlinear_noisy_amplifier_blockdiagram_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/ode_blockdiagram_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/pendulum_blockdiagram_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/pid_blockdiagram_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/sar_adc_blockdiagram_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/stick_slip_blockdiagram_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/stick_slip_blockdiagram_slip_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/stick_slip_blockdiagram_stick_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/stick_slip_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/thermostat_blockdiagram_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/vanderpol_blockdiagram_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/vanderpol_result_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/vanderpol_subsystem_blockdiagram_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/vanderpol_subsystem_lvl1_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/vanderpol_subsystem_lvl2_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/vanderpol_subsystem_lvl3_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/volterralotka_blockdiagram_g.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/ode_blockdiagram_2.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/stick_slip_blockdiagram_slip.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/stick_slip_blockdiagram_stick.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/fmcw_radar.ipynb +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/fmu_cosimulation.ipynb +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/fmu_model_exchange_bouncing_ball.ipynb +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/fmu_model_exchange_vanderpol.ipynb +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/harmonic_oscillator.ipynb +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/kalman_filter.ipynb +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/linear_feedback.ipynb +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/lorenz_attractor.ipynb +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/nested_subsystems.ipynb +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/noisy_amplifier.ipynb +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/pendulum.ipynb +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/pid_controller.ipynb +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/poincare_maps.ipynb +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/rf_network_oneport.ipynb +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/sar_adc.ipynb +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/spectrum_analysis.ipynb +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/stick_slip.ipynb +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/switched_bouncing_ball.ipynb +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/thermostat.ipynb +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/transfer_function.ipynb +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/vanderpol.ipynb +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/logos/pathsim_icon.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/logos/pathsim_logo.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/logos/pathsim_simplistic_logo.png +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/docs/source/pathsim_docs.mplstyle +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/example_abs_braking.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/example_adc.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/example_algebraicchain.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/example_algebraicloop.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/example_cascade.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/example_dcmotor.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/example_deltasigma.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/example_derivative.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/example_diode.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/example_dualslope.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/example_elastic_pendulum.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/example_feedback.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/example_filters.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/example_harmonic_oscillator.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/example_kalman_filter.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/example_nested_subsystems.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/example_noise.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/example_pendulum.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/example_phasenoise.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/example_pid.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/example_pid_antiwindup.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/example_pid_vs_discretePID.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/example_radar.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/example_reactor.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/example_sar.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/example_solar.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/example_solver_hotswap.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/example_spectrum.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/example_spectrum_rf_oneport.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/example_steadystate.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/example_stickslip.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/example_transferfunction.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/example_vanderpol_subsystem.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/examples_event/example_billards_sphere.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/examples_event/example_bouncing_pendulum.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/examples_event/example_bouncingball.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/examples_event/example_bouncingball_friction.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/examples_event/example_bouncingball_switched.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/examples_event/example_integrator_reset.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/examples_event/example_pulse.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/examples_event/example_stickslip_event.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/examples_event/example_thermostat.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/examples_event/example_volterralotka_event.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/examples_odes/example_bonhoeffer_vanderpol.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/examples_odes/example_brusselator.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/examples_odes/example_chemical.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/examples_odes/example_duffing.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/examples_odes/example_fairen_velarde.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/examples_odes/example_fitzhughnagumo.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/examples_odes/example_flame.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/examples_odes/example_glycolysis.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/examples_odes/example_lorenz.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/examples_odes/example_morse.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/examples_odes/example_robertson.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/examples_odes/example_roessler.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/examples_odes/example_thomas_cyclic.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/examples_odes/example_vanderpol.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/examples/examples_odes/example_volterralotka.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/git +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/pyproject.toml +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/setup.cfg +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/__init__.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/_constants.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/README.md +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/__init__.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/_block.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/adder.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/amplifier.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/bvp.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/comparator.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/constraint.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/converters.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/counter.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/ctrl.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/delay.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/differentiator.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/discrete.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/divider.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/dynsys.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/filters.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/fmu.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/function.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/integrator.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/kalman.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/logic.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/lti.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/math.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/multiplier.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/noise.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/ode.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/relay.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/rf.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/rng.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/scope.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/sources.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/spectrum.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/switch.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/table.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/blocks/wrapper.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/connection.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/events/__init__.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/events/_event.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/events/condition.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/events/schedule.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/events/zerocrossing.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/exceptions.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/optim/__init__.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/optim/anderson.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/optim/booster.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/optim/linearization.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/optim/newton.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/optim/numerical.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/optim/operator.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/solvers/README.md +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/solvers/__init__.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/solvers/_rungekutta.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/solvers/_solver.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/solvers/bdf.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/solvers/dirk2.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/solvers/dirk3.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/solvers/esdirk32.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/solvers/esdirk4.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/solvers/esdirk43.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/solvers/esdirk54.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/solvers/esdirk85.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/solvers/euler.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/solvers/gear.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/solvers/rk4.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/solvers/rkbs32.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/solvers/rkck54.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/solvers/rkdp54.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/solvers/rkdp87.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/solvers/rkf21.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/solvers/rkf45.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/solvers/rkf78.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/solvers/rkv65.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/solvers/ssprk22.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/solvers/ssprk33.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/solvers/ssprk34.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/solvers/steadystate.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/subsystem.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/utils/__init__.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/utils/adaptivebuffer.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/utils/analysis.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/utils/deprecation.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/utils/diagnostics.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/utils/fmuwrapper.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/utils/gilbert.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/utils/graph.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/utils/logger.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/utils/mutable.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/utils/portreference.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/utils/progresstracker.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/utils/realtimeplotter.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim/utils/register.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim.egg-info/SOURCES.txt +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim.egg-info/dependency_links.txt +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim.egg-info/requires.txt +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim.egg-info/scm_file_list.json +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/src/pathsim.egg-info/top_level.txt +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/README.md +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/__init__.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/evals/CoupledClutches_CS.fmu +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/evals/__init__.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/evals/conftest.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/evals/test_algebraic_system.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/evals/test_bouncingball_friction_event_system.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/evals/test_bouncingball_system.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/evals/test_brusselator_system.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/evals/test_cosim_fmu_system.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/evals/test_counter_comparator_system.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/evals/test_dynamical_system_ivp.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/evals/test_fitzhughnagumo_system.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/evals/test_harmonic_oscillator_system.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/evals/test_linear_feedback_system.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/evals/test_logic_system.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/evals/test_lorenz_system.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/evals/test_me_analytical.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/evals/test_model_exchange_fmu_system.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/evals/test_pid_system.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/evals/test_relay_thermostat_system.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/evals/test_rescale_delay_system.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/evals/test_robertson_system.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/evals/test_roessler_system.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/evals/test_signal_processing_system.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/evals/test_steadystate_transient_system.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/evals/test_switch_lti_system.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/evals/test_vanderpol_system.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/evals/test_volterralotka_system.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/__init__.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/__init__.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/_embedding.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/rf/__init__.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/rf/ring_slot.s2p +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/rf/ring_slot_meas.s1p +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/rf/test_rf.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/test_adder.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/test_amplifier.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/test_block.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/test_bvp.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/test_comparator.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/test_constraint.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/test_converters.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/test_counter.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/test_ctrl.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/test_delay.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/test_differentiator.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/test_discrete.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/test_divider.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/test_dynsys.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/test_filters.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/test_fmu.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/test_function.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/test_integrator.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/test_kalman.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/test_logic.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/test_lti.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/test_math.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/test_multiplier.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/test_noise.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/test_ode.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/test_relay.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/test_rng.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/test_scope.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/test_sources.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/test_spectrum.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/test_switch.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/test_table.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/blocks/test_wrapper.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/events/__init__.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/events/test_condition.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/events/test_event.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/events/test_schedule.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/events/test_zerocrossing.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/optim/__init__.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/optim/test_anderson.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/optim/test_linearization.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/optim/test_newton.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/optim/test_numerical.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/optim/test_operator.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/solvers/__init__.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/solvers/_referenceproblems.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/solvers/test_bdf.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/solvers/test_dirk2.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/solvers/test_dirk3.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/solvers/test_esdirk32.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/solvers/test_esdirk4.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/solvers/test_esdirk43.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/solvers/test_esdirk54.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/solvers/test_esdirk85.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/solvers/test_euler.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/solvers/test_gear.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/solvers/test_rfk21.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/solvers/test_rk4.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/solvers/test_rkbs32.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/solvers/test_rkck54.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/solvers/test_rkdp54.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/solvers/test_rkdp87.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/solvers/test_rkf45.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/solvers/test_rkf78.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/solvers/test_rkv65.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/solvers/test_solver.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/solvers/test_ssprk22.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/solvers/test_ssprk33.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/solvers/test_ssprk34.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/solvers/test_steadystate.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/test_auto_initial_step.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/test_checkpoint.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/test_connection.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/test_diagnostics.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/test_simulation_pss.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/test_subsystem.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/utils/__init__.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/utils/test_adaptivebuffer.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/utils/test_analysis.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/utils/test_fmuwrapper.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/utils/test_gilbert.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/utils/test_graph.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/utils/test_logger.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/utils/test_mutable.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/utils/test_portreference.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/utils/test_progresstracker.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/utils/test_realtimeplotter.py +0 -0
- {pathsim-0.27.0 → pathsim-0.27.1}/tests/pathsim/utils/test_register.py +0 -0
|
@@ -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.27.
|
|
22
|
-
__version_tuple__ = version_tuple = (0, 27,
|
|
21
|
+
__version__ = version = '0.27.1'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 27, 1)
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'ga4e824de2'
|
|
@@ -51,7 +51,10 @@ class SemiExplicitDAE(Block):
|
|
|
51
51
|
\\dot{x} = f_\\mathrm{dyn}(x, z(x, u, t), u, t)
|
|
52
52
|
|
|
53
53
|
to the integration engine, so the DAE integrates with any solver, explicit
|
|
54
|
-
or implicit. The block output is the stacked state :math:`[x, z]
|
|
54
|
+
or implicit. The block output is the stacked state :math:`[x, z]`, or
|
|
55
|
+
:math:`y = f_\\mathrm{out}(x, z, u, t)` if an output function is supplied.
|
|
56
|
+
Without algebraic states (empty `z0`) the block reduces to a plain ODE and
|
|
57
|
+
the constraint solve is skipped.
|
|
55
58
|
|
|
56
59
|
Note
|
|
57
60
|
----
|
|
@@ -126,6 +129,9 @@ class SemiExplicitDAE(Block):
|
|
|
126
129
|
convergence tolerance on the residual norm of the algebraic constraint
|
|
127
130
|
solve, loosen it for ill-conditioned constraints whose residual cannot
|
|
128
131
|
reach the default due to roundoff
|
|
132
|
+
func_out : callable, None
|
|
133
|
+
optional output function with signature `func_out(x, z, u, t)`, the
|
|
134
|
+
block output is the stacked state `[x, z]` if `None`
|
|
129
135
|
|
|
130
136
|
Attributes
|
|
131
137
|
----------
|
|
@@ -148,7 +154,8 @@ class SemiExplicitDAE(Block):
|
|
|
148
154
|
jac_dyn_x=None,
|
|
149
155
|
jac_dyn_z=None,
|
|
150
156
|
jac_alg_x=None,
|
|
151
|
-
tolerance=SOL_TOLERANCE_FPI
|
|
157
|
+
tolerance=SOL_TOLERANCE_FPI,
|
|
158
|
+
func_out=None
|
|
152
159
|
):
|
|
153
160
|
|
|
154
161
|
super().__init__()
|
|
@@ -157,6 +164,9 @@ class SemiExplicitDAE(Block):
|
|
|
157
164
|
self.func_dyn = func_dyn
|
|
158
165
|
self.func_alg = func_alg
|
|
159
166
|
|
|
167
|
+
#optional output function, stacked state [x, z] if 'None'
|
|
168
|
+
self.func_out = func_out
|
|
169
|
+
|
|
160
170
|
#convergence tolerance of the algebraic constraint solve
|
|
161
171
|
self.tolerance = tolerance
|
|
162
172
|
|
|
@@ -187,9 +197,10 @@ class SemiExplicitDAE(Block):
|
|
|
187
197
|
self.op_dyn = DynamicOperator(func=self._rhs, jac_x=_jac_x)
|
|
188
198
|
|
|
189
199
|
#pre-size the output register to the stacked state [x, z]
|
|
190
|
-
self.
|
|
191
|
-
|
|
192
|
-
|
|
200
|
+
if self.func_out is None:
|
|
201
|
+
self.outputs.update_from_array(
|
|
202
|
+
np.concatenate([self.initial_value, self.z0])
|
|
203
|
+
)
|
|
193
204
|
|
|
194
205
|
|
|
195
206
|
def __len__(self):
|
|
@@ -204,10 +215,11 @@ class SemiExplicitDAE(Block):
|
|
|
204
215
|
"""
|
|
205
216
|
super().reset()
|
|
206
217
|
self._z = self.z0.copy()
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
218
|
+
if self.func_out is None:
|
|
219
|
+
x = self.engine.state if self.engine else self.initial_value
|
|
220
|
+
self.outputs.update_from_array(
|
|
221
|
+
np.concatenate([np.atleast_1d(x), self._z])
|
|
222
|
+
)
|
|
211
223
|
|
|
212
224
|
|
|
213
225
|
def _solve_z(self, x, u, t):
|
|
@@ -229,6 +241,10 @@ class SemiExplicitDAE(Block):
|
|
|
229
241
|
z : array[float]
|
|
230
242
|
algebraic states satisfying the constraint
|
|
231
243
|
"""
|
|
244
|
+
#nothing to solve without algebraic states
|
|
245
|
+
if self._z.size == 0:
|
|
246
|
+
return self._z
|
|
247
|
+
|
|
232
248
|
_func = lambda z: self.func_alg(x, z, u, t)
|
|
233
249
|
_jac = None if self.jac_z is None else (lambda z: self.jac_z(x, z, u, t))
|
|
234
250
|
z, _, _ = solve_root(self.opt, _func, self._z, _jac, tolerance=self.tolerance)
|
|
@@ -277,6 +293,8 @@ class SemiExplicitDAE(Block):
|
|
|
277
293
|
"""
|
|
278
294
|
z = self._solve_z(x, u, t)
|
|
279
295
|
fx = np.atleast_2d(self.jac_dyn_x(x, z, u, t))
|
|
296
|
+
if z.size == 0:
|
|
297
|
+
return fx
|
|
280
298
|
fz = np.atleast_2d(self.jac_dyn_z(x, z, u, t))
|
|
281
299
|
gx = np.atleast_2d(self.jac_alg_x(x, z, u, t))
|
|
282
300
|
gz = np.atleast_2d(self.jac_z(x, z, u, t))
|
|
@@ -285,7 +303,7 @@ class SemiExplicitDAE(Block):
|
|
|
285
303
|
|
|
286
304
|
def update(self, t):
|
|
287
305
|
"""Eliminate the algebraic states for the current input and expose the
|
|
288
|
-
stacked state [x, z] at the output.
|
|
306
|
+
output function, or the stacked state [x, z], at the output.
|
|
289
307
|
|
|
290
308
|
Parameters
|
|
291
309
|
----------
|
|
@@ -294,9 +312,11 @@ class SemiExplicitDAE(Block):
|
|
|
294
312
|
"""
|
|
295
313
|
x, u = self.engine.state, self.inputs.to_array()
|
|
296
314
|
self._z = self._solve_z(x, u, t)
|
|
297
|
-
self.
|
|
298
|
-
np.concatenate([np.atleast_1d(x), self._z])
|
|
299
|
-
|
|
315
|
+
if self.func_out is None:
|
|
316
|
+
y = np.concatenate([np.atleast_1d(x), self._z])
|
|
317
|
+
else:
|
|
318
|
+
y = self.func_out(x, self._z, u, t)
|
|
319
|
+
self.outputs.update_from_array(y)
|
|
300
320
|
|
|
301
321
|
|
|
302
322
|
def solve(self, t, dt):
|
|
@@ -2025,6 +2025,10 @@ class Simulation:
|
|
|
2025
2025
|
#main simulation loop
|
|
2026
2026
|
while self.time < end_time and self._active:
|
|
2027
2027
|
|
|
2028
|
+
if not _adaptive and np.isclose(
|
|
2029
|
+
self.time - start_time, duration, rtol=1e-12, atol=0.0):
|
|
2030
|
+
break
|
|
2031
|
+
|
|
2028
2032
|
#advance the simulation by one (effective) timestep '_dt'
|
|
2029
2033
|
try:
|
|
2030
2034
|
success, error_norm, scale, *_ = self.timestep(
|
|
@@ -141,10 +141,62 @@ class TestSemiExplicitDAE(unittest.TestCase):
|
|
|
141
141
|
info = SemiExplicitDAE.info()
|
|
142
142
|
self.assertEqual(info["type"], "SemiExplicitDAE")
|
|
143
143
|
for p in ("func_dyn", "func_alg", "initial_value", "z0", "jac_z",
|
|
144
|
-
"jac_dyn_x", "jac_dyn_z", "jac_alg_x", "tolerance"):
|
|
144
|
+
"jac_dyn_x", "jac_dyn_z", "jac_alg_x", "tolerance", "func_out"):
|
|
145
145
|
self.assertIn(p, info["parameters"])
|
|
146
146
|
|
|
147
147
|
|
|
148
|
+
def test_func_out(self):
|
|
149
|
+
#output function replaces the stacked state [x, z] at the output
|
|
150
|
+
dae = SemiExplicitDAE(
|
|
151
|
+
lambda x, z, u, t: -x + z, lambda x, z, u, t: z - x**2, 0.5, 0.25,
|
|
152
|
+
func_out=lambda x, z, u, t: np.array([x[0] + z[0]])
|
|
153
|
+
)
|
|
154
|
+
self.assertEqual(len(dae.outputs), 1)
|
|
155
|
+
|
|
156
|
+
dae.set_solver(ESDIRK43, None)
|
|
157
|
+
dae.update(0.0)
|
|
158
|
+
self.assertAlmostEqual(float(dae.outputs[0]), 0.5 + 0.25, places=8)
|
|
159
|
+
|
|
160
|
+
#reset keeps the output size of the output function
|
|
161
|
+
dae.reset()
|
|
162
|
+
self.assertEqual(len(dae.outputs), 1)
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
def test_no_algebraic_states(self):
|
|
166
|
+
#empty z reduces the block to a plain ODE without a constraint solve
|
|
167
|
+
calls = []
|
|
168
|
+
def f_alg(x, z, u, t):
|
|
169
|
+
calls.append(1)
|
|
170
|
+
return np.zeros(0)
|
|
171
|
+
|
|
172
|
+
dae = SemiExplicitDAE(
|
|
173
|
+
lambda x, z, u, t: -x, f_alg, initial_value=[1.0, 2.0], z0=np.zeros(0),
|
|
174
|
+
jac_z=lambda x, z, u, t: np.zeros((0, 0)),
|
|
175
|
+
jac_dyn_x=lambda x, z, u, t: -np.eye(2),
|
|
176
|
+
jac_dyn_z=lambda x, z, u, t: np.zeros((2, 0)),
|
|
177
|
+
jac_alg_x=lambda x, z, u, t: np.zeros((0, 2))
|
|
178
|
+
)
|
|
179
|
+
|
|
180
|
+
x, u = np.array([1.0, 2.0]), np.array([0.0])
|
|
181
|
+
self.assertEqual(dae._solve_z(x, u, 0.0).size, 0)
|
|
182
|
+
np.testing.assert_array_equal(dae.op_dyn.jac_x(x, u, 0.0), -np.eye(2))
|
|
183
|
+
self.assertEqual(len(calls), 0)
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
def test_simulation_no_algebraic_states(self):
|
|
187
|
+
#x' = -x with empty z integrates like the ODE block
|
|
188
|
+
from pathsim import Simulation
|
|
189
|
+
|
|
190
|
+
dae = SemiExplicitDAE(
|
|
191
|
+
lambda x, z, u, t: -x, lambda x, z, u, t: np.zeros(0),
|
|
192
|
+
initial_value=[1.0, 2.0], z0=np.zeros(0)
|
|
193
|
+
)
|
|
194
|
+
sim = Simulation(blocks=[dae], dt=0.01, Solver=ESDIRK43, log=False)
|
|
195
|
+
sim.run(1.0)
|
|
196
|
+
|
|
197
|
+
np.testing.assert_allclose(dae.engine.state, np.exp(-1.0)*np.array([1.0, 2.0]), rtol=1e-4)
|
|
198
|
+
|
|
199
|
+
|
|
148
200
|
def test_tolerance_default(self):
|
|
149
201
|
self.assertEqual(self._make_block().tolerance, SOL_TOLERANCE_FPI)
|
|
150
202
|
|
|
@@ -396,10 +396,10 @@ class TestSimulation(unittest.TestCase):
|
|
|
396
396
|
stats = Sim.run(10)
|
|
397
397
|
|
|
398
398
|
#check stats
|
|
399
|
-
self.assertEqual(stats["total_steps"],
|
|
399
|
+
self.assertEqual(stats["total_steps"], 1000)
|
|
400
400
|
|
|
401
|
-
#check internal time progression
|
|
402
|
-
self.assertAlmostEqual(Sim.time, 10
|
|
401
|
+
#check internal time progression stops at the requested endpoint
|
|
402
|
+
self.assertAlmostEqual(Sim.time, 10.0)
|
|
403
403
|
|
|
404
404
|
|
|
405
405
|
|
|
@@ -552,6 +552,88 @@ class TestSimulationIVP(unittest.TestCase):
|
|
|
552
552
|
|
|
553
553
|
|
|
554
554
|
|
|
555
|
+
class TestSimulationRunBoundaries(unittest.TestCase):
|
|
556
|
+
|
|
557
|
+
def test_fixed_run_stops_at_aligned_endpoint(self):
|
|
558
|
+
for dt, duration, steps in [(0.1, 1.0, 10), (0.01, 10.0, 1000),
|
|
559
|
+
(0.2, 2.0, 10)]:
|
|
560
|
+
with self.subTest(dt=dt, duration=duration):
|
|
561
|
+
source = Constant(1.0)
|
|
562
|
+
integrator = Integrator()
|
|
563
|
+
scope = Scope()
|
|
564
|
+
simulation = Simulation(
|
|
565
|
+
[source, integrator, scope],
|
|
566
|
+
[Connection(source, integrator), Connection(integrator, scope)],
|
|
567
|
+
dt=dt, log=False
|
|
568
|
+
)
|
|
569
|
+
|
|
570
|
+
simulation.run(duration, adaptive=False)
|
|
571
|
+
|
|
572
|
+
self.assertAlmostEqual(simulation.time / duration, 1.0)
|
|
573
|
+
self.assertAlmostEqual(integrator.outputs[0] / duration, 1.0)
|
|
574
|
+
times, _ = scope.read()
|
|
575
|
+
self.assertEqual(len(times), steps + 1)
|
|
576
|
+
self.assertEqual(simulation.dt, dt)
|
|
577
|
+
|
|
578
|
+
|
|
579
|
+
def test_fixed_run_keeps_full_steps_for_non_aligned_endpoint(self):
|
|
580
|
+
for dt, duration, endpoint, steps in [(0.3, 1.0, 1.2, 4),
|
|
581
|
+
(2.0, 1.0, 2.0, 1),
|
|
582
|
+
(0.1, 0.05, 0.1, 1)]:
|
|
583
|
+
with self.subTest(dt=dt, duration=duration):
|
|
584
|
+
source = Constant(1.0)
|
|
585
|
+
integrator = Integrator()
|
|
586
|
+
scope = Scope()
|
|
587
|
+
simulation = Simulation(
|
|
588
|
+
[source, integrator, scope],
|
|
589
|
+
[Connection(source, integrator), Connection(integrator, scope)],
|
|
590
|
+
dt=dt, log=False
|
|
591
|
+
)
|
|
592
|
+
|
|
593
|
+
simulation.run(duration, adaptive=False)
|
|
594
|
+
|
|
595
|
+
self.assertAlmostEqual(simulation.time, endpoint)
|
|
596
|
+
self.assertAlmostEqual(integrator.outputs[0], endpoint)
|
|
597
|
+
times, _ = scope.read()
|
|
598
|
+
self.assertEqual(len(times), steps + 1)
|
|
599
|
+
self.assertEqual(simulation.dt, dt)
|
|
600
|
+
|
|
601
|
+
|
|
602
|
+
def test_streaming_run_stops_at_requested_endpoint(self):
|
|
603
|
+
simulation = Simulation(dt=0.1, log=False)
|
|
604
|
+
list(simulation.run_streaming(1.0, adaptive=False))
|
|
605
|
+
self.assertAlmostEqual(simulation.time, 1.0)
|
|
606
|
+
|
|
607
|
+
|
|
608
|
+
def test_fixed_split_runs_match_single_run(self):
|
|
609
|
+
source = Constant(1.0)
|
|
610
|
+
integrator = Integrator()
|
|
611
|
+
ticks = []
|
|
612
|
+
|
|
613
|
+
def sample(time):
|
|
614
|
+
ticks.append(time)
|
|
615
|
+
source.value = 2.0 * integrator.outputs[0] + 1.0
|
|
616
|
+
|
|
617
|
+
simulation = Simulation(
|
|
618
|
+
[source, integrator], [Connection(source, integrator)],
|
|
619
|
+
events=[Schedule(t_start=0.0, t_period=1.0, func_act=sample)],
|
|
620
|
+
dt=0.1, log=False
|
|
621
|
+
)
|
|
622
|
+
|
|
623
|
+
simulation.run(1.0, adaptive=False)
|
|
624
|
+
self.assertAlmostEqual(simulation.time, 1.0)
|
|
625
|
+
simulation.run(1.0, adaptive=False)
|
|
626
|
+
self.assertAlmostEqual(simulation.time, 2.0)
|
|
627
|
+
self.assertEqual(ticks, [0.0, 1.0, 2.0])
|
|
628
|
+
split_output = integrator.outputs[0]
|
|
629
|
+
|
|
630
|
+
ticks.clear()
|
|
631
|
+
simulation.run(2.0, reset=True, adaptive=False)
|
|
632
|
+
self.assertAlmostEqual(simulation.time, 2.0)
|
|
633
|
+
self.assertEqual(ticks, [0.0, 1.0, 2.0])
|
|
634
|
+
self.assertAlmostEqual(integrator.outputs[0], split_output)
|
|
635
|
+
|
|
636
|
+
|
|
555
637
|
class TestSimulationEvents(unittest.TestCase):
|
|
556
638
|
"""Test event management and event handling during simulation"""
|
|
557
639
|
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/billard_circle_g.png
RENAMED
|
File without changes
|
|
File without changes
|
{pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/bouncing_ball_both_g.png
RENAMED
|
File without changes
|
{pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/bouncing_ball_g.png
RENAMED
|
File without changes
|
|
File without changes
|
{pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/bouncing_ball_result_g.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/cascade_blockdiagram_g.png
RENAMED
|
File without changes
|
|
File without changes
|
{pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/coupled_oscillators_g.png
RENAMED
|
File without changes
|
|
File without changes
|
{pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/diode_blockdiagram_g.png
RENAMED
|
File without changes
|
{pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/elastic_pendulum_g.png
RENAMED
|
File without changes
|
{pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/fmcw_blockdiagram_g.png
RENAMED
|
File without changes
|
|
File without changes
|
{pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/harmonic_oscillator_g.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/ode_blockdiagram_g.png
RENAMED
|
File without changes
|
{pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/pendulum_blockdiagram_g.png
RENAMED
|
File without changes
|
{pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/pid_blockdiagram_g.png
RENAMED
|
File without changes
|
{pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/sar_adc_blockdiagram_g.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/figures_g/vanderpol_result_g.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/stick_slip_blockdiagram_slip.png
RENAMED
|
File without changes
|
{pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/figures/stick_slip_blockdiagram_stick.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pathsim-0.27.0 → pathsim-0.27.1}/docs/source/examples/fmu_model_exchange_bouncing_ball.ipynb
RENAMED
|
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
|
|
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
|
|
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
|