solve-nivp 0.2.0.dev1__tar.gz → 0.2.0.dev3__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 (125) hide show
  1. solve_nivp-0.2.0.dev3/MANIFEST.in +10 -0
  2. {solve_nivp-0.2.0.dev1/solve_nivp.egg-info → solve_nivp-0.2.0.dev3}/PKG-INFO +2 -3
  3. solve_nivp-0.2.0.dev3/docs/Makefile +20 -0
  4. solve_nivp-0.2.0.dev3/docs/make.bat +35 -0
  5. solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.ODESolver.rst +23 -0
  6. solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.ODESystem.rst +25 -0
  7. solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.adaptive_integrator.rst +12 -0
  8. solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.alart_curnier_contact.rst +12 -0
  9. solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.block_system.rst +7 -0
  10. solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.contact.rst +17 -0
  11. solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.desaxce_contact.rst +13 -0
  12. solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.integrations.rst +22 -0
  13. solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.macklin_contact.rst +17 -0
  14. solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.moreau_jean_fremond.rst +17 -0
  15. solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.ncp_contact.rst +19 -0
  16. solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.nonlinear_solvers.rst +8 -0
  17. solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.pcr.rst +6 -0
  18. solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.projected_radau_contact.rst +21 -0
  19. solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.projections.rst +21 -0
  20. solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.rattle_contact.rst +25 -0
  21. solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.rl.callbacks.rst +7 -0
  22. solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.rl.dependency.rst +12 -0
  23. solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.rl.env.rst +7 -0
  24. solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.rl.rst +16 -0
  25. solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.rst +38 -0
  26. solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.soccp_pgs.rst +19 -0
  27. solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.solvers.block_system.rst +11 -0
  28. solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.solvers.nonlinear_solvers.rst +10 -0
  29. solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.solvers.pcr.rst +10 -0
  30. solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.solvers.rst +13 -0
  31. solve_nivp-0.2.0.dev3/docs/source/conf.py +70 -0
  32. solve_nivp-0.2.0.dev3/docs/source/development.rst +30 -0
  33. solve_nivp-0.2.0.dev3/docs/source/examples.rst +62 -0
  34. solve_nivp-0.2.0.dev3/docs/source/index.rst +20 -0
  35. solve_nivp-0.2.0.dev3/docs/source/public_api.rst +93 -0
  36. solve_nivp-0.2.0.dev3/docs/source/quickstart.rst +42 -0
  37. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/pyproject.toml +9 -4
  38. solve_nivp-0.2.0.dev3/pytest.ini +10 -0
  39. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3/src}/solve_nivp/ODESolver.py +28 -23
  40. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3/src}/solve_nivp/ODESystem.py +1 -1
  41. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3/src}/solve_nivp/__init__.py +34 -7
  42. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3/src}/solve_nivp/adaptive_integrator.py +228 -37
  43. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3/src}/solve_nivp/alart_curnier_contact.py +6 -5
  44. solve_nivp-0.2.0.dev3/src/solve_nivp/block_system.py +9 -0
  45. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3/src}/solve_nivp/desaxce_contact.py +2 -2
  46. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3/src}/solve_nivp/integrations.py +15 -17
  47. solve_nivp-0.2.0.dev3/src/solve_nivp/mjf_integration.py +189 -0
  48. solve_nivp-0.2.0.dev3/src/solve_nivp/moreau_jean_fremond.py +2131 -0
  49. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3/src}/solve_nivp/ncp_contact.py +100 -0
  50. solve_nivp-0.2.0.dev3/src/solve_nivp/nonlinear_solvers.py +9 -0
  51. solve_nivp-0.2.0.dev3/src/solve_nivp/pcr.py +9 -0
  52. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3/src}/solve_nivp/projected_radau_contact.py +816 -96
  53. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3/src}/solve_nivp/projections.py +15 -10
  54. solve_nivp-0.2.0.dev3/src/solve_nivp/soccp_pgs.py +438 -0
  55. solve_nivp-0.2.0.dev3/src/solve_nivp/solvers/__init__.py +14 -0
  56. {solve_nivp-0.2.0.dev1/solve_nivp → solve_nivp-0.2.0.dev3/src/solve_nivp/solvers}/nonlinear_solvers.py +316 -49
  57. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3/src/solve_nivp.egg-info}/PKG-INFO +2 -3
  58. solve_nivp-0.2.0.dev3/src/solve_nivp.egg-info/SOURCES.txt +121 -0
  59. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3/src}/solve_nivp.egg-info/top_level.txt +0 -1
  60. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_auto_h0_and_dae_weighting.py +56 -0
  61. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_import_and_api.py +23 -0
  62. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_large_scale_solver_fixes.py +144 -2
  63. solve_nivp-0.2.0.dev3/tests/test_moreau_jean_fremond.py +797 -0
  64. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_ncp_contact.py +120 -1
  65. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_per_dof_tolerances.py +29 -0
  66. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_prestressed_fault_dynamic_helper.py +15 -11
  67. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_projected_radau_contact.py +260 -1
  68. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_rattle_local_slider.py +18 -12
  69. solve_nivp-0.2.0.dev3/tests/test_soccp_pgs.py +174 -0
  70. solve_nivp-0.2.0.dev1/setup.py +0 -57
  71. solve_nivp-0.2.0.dev1/solve_nivp.egg-info/SOURCES.txt +0 -77
  72. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/LICENSE +0 -0
  73. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/README.md +0 -0
  74. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/setup.cfg +0 -0
  75. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3/src}/solve_nivp/_numba_accel.py +0 -0
  76. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3/src}/solve_nivp/_selftest.py +0 -0
  77. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3/src}/solve_nivp/contact.py +0 -0
  78. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3/src}/solve_nivp/macklin_contact.py +0 -0
  79. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3/src}/solve_nivp/rattle_contact.py +0 -0
  80. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3/src}/solve_nivp/rl/__init__.py +0 -0
  81. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3/src}/solve_nivp/rl/callbacks.py +0 -0
  82. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3/src}/solve_nivp/rl/dependency.py +0 -0
  83. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3/src}/solve_nivp/rl/env.py +0 -0
  84. {solve_nivp-0.2.0.dev1/solve_nivp → solve_nivp-0.2.0.dev3/src/solve_nivp/solvers}/block_system.py +0 -0
  85. {solve_nivp-0.2.0.dev1/solve_nivp → solve_nivp-0.2.0.dev3/src/solve_nivp/solvers}/pcr.py +0 -0
  86. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3/src}/solve_nivp.egg-info/dependency_links.txt +0 -0
  87. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3/src}/solve_nivp.egg-info/entry_points.txt +0 -0
  88. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3/src}/solve_nivp.egg-info/requires.txt +0 -0
  89. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/__init__.py +0 -0
  90. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_3d_and_anisotropic_contact.py +0 -0
  91. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_active_set_filter.py +0 -0
  92. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_alart_curnier_contact.py +0 -0
  93. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_algebraic_constraint_projection.py +0 -0
  94. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_anisotropic_soc_projection.py +0 -0
  95. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_block_system.py +0 -0
  96. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_bouncing_ball_schur_comparison.py +0 -0
  97. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_build_impulse_contact.py +0 -0
  98. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_c_extract_contact.py +0 -0
  99. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_composite_contact_projection.py +0 -0
  100. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_coulomb_projection.py +0 -0
  101. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_coulomb_projection_jacobian.py +0 -0
  102. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_desaxce_contact.py +0 -0
  103. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_dilatancy.py +0 -0
  104. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_error_predictive_rejection.py +0 -0
  105. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_general_moreau_projection.py +0 -0
  106. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_globalization.py +0 -0
  107. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_identity_newton_linear_solver.py +0 -0
  108. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_integrators_added.py +0 -0
  109. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_jacobian_scaling.py +0 -0
  110. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_macklin_contact.py +0 -0
  111. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_mu_scaled_soc_projection.py +0 -0
  112. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_ncp_schur_integration.py +0 -0
  113. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_nl_recovery_cap.py +0 -0
  114. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_nonlinear_solvers_added.py +0 -0
  115. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_pcr.py +0 -0
  116. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_prestress_soc.py +0 -0
  117. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_projection_batch_equivalence.py +0 -0
  118. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_projections_added.py +0 -0
  119. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_radau_iia.py +0 -0
  120. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_rattle_integrator.py +0 -0
  121. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_sdirk2.py +0 -0
  122. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_sdirk2_soc_contact.py +0 -0
  123. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_sparse_semismooth_newton.py +0 -0
  124. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_t_eval.py +0 -0
  125. {solve_nivp-0.2.0.dev1 → solve_nivp-0.2.0.dev3}/tests/test_threading_time_and_fk.py +0 -0
@@ -0,0 +1,10 @@
1
+ include LICENSE
2
+ include README.md
3
+ include pyproject.toml
4
+ include pytest.ini
5
+ include docs/Makefile
6
+ include docs/make.bat
7
+
8
+ recursive-include src/solve_nivp *.py
9
+ recursive-include tests *.py
10
+ recursive-include docs/source *.py *.rst
@@ -1,16 +1,15 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: solve_nivp
3
- Version: 0.2.0.dev1
3
+ Version: 0.2.0.dev3
4
4
  Summary: A Python toolkit for integrating nonsmooth dynamical systems
5
5
  Author: David Riley, Ioannis Stefanou
6
- License: MIT
6
+ License-Expression: MIT
7
7
  Project-URL: Homepage, https://github.com/ERC-INJECT/solve_nivp
8
8
  Project-URL: Documentation, https://github.com/ERC-INJECT/solve_nivp/tree/main/docs
9
9
  Project-URL: Issues, https://github.com/ERC-INJECT/solve_nivp/issues
10
10
  Keywords: nonsmooth dynamics,ODE,DAE,variational inequalities,semismooth Newton,projection methods
11
11
  Classifier: Development Status :: 4 - Beta
12
12
  Classifier: Intended Audience :: Science/Research
13
- Classifier: License :: OSI Approved :: MIT License
14
13
  Classifier: Programming Language :: Python :: 3
15
14
  Classifier: Topic :: Scientific/Engineering :: Mathematics
16
15
  Classifier: Topic :: Scientific/Engineering :: Physics
@@ -0,0 +1,20 @@
1
+ # Minimal makefile for Sphinx documentation
2
+ #
3
+
4
+ # You can set these variables from the command line, and also
5
+ # from the environment for the first two.
6
+ SPHINXOPTS ?=
7
+ SPHINXBUILD ?= sphinx-build
8
+ SOURCEDIR = source
9
+ BUILDDIR = build
10
+
11
+ # Put it first so that "make" without argument is like "make help".
12
+ help:
13
+ @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
14
+
15
+ .PHONY: help Makefile
16
+
17
+ # Catch-all target: route all unknown targets to Sphinx using the new
18
+ # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
19
+ %: Makefile
20
+ @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
@@ -0,0 +1,35 @@
1
+ @ECHO OFF
2
+
3
+ pushd %~dp0
4
+
5
+ REM Command file for Sphinx documentation
6
+
7
+ if "%SPHINXBUILD%" == "" (
8
+ set SPHINXBUILD=sphinx-build
9
+ )
10
+ set SOURCEDIR=source
11
+ set BUILDDIR=build
12
+
13
+ %SPHINXBUILD% >NUL 2>NUL
14
+ if errorlevel 9009 (
15
+ echo.
16
+ echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
17
+ echo.installed, then set the SPHINXBUILD environment variable to point
18
+ echo.to the full path of the 'sphinx-build' executable. Alternatively you
19
+ echo.may add the Sphinx directory to PATH.
20
+ echo.
21
+ echo.If you don't have Sphinx installed, grab it from
22
+ echo.https://www.sphinx-doc.org/
23
+ exit /b 1
24
+ )
25
+
26
+ if "%1" == "" goto help
27
+
28
+ %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
29
+ goto end
30
+
31
+ :help
32
+ %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
33
+
34
+ :end
35
+ popd
@@ -0,0 +1,23 @@
1
+ solve\_nivp.ODESolver
2
+ =====================
3
+
4
+ .. currentmodule:: solve_nivp
5
+
6
+ .. autoclass:: ODESolver
7
+
8
+
9
+ .. automethod:: __init__
10
+
11
+
12
+ .. rubric:: Methods
13
+
14
+ .. autosummary::
15
+
16
+ ~ODESolver.__init__
17
+ ~ODESolver.solve
18
+
19
+
20
+
21
+
22
+
23
+
@@ -0,0 +1,25 @@
1
+ solve\_nivp.ODESystem
2
+ =====================
3
+
4
+ .. currentmodule:: solve_nivp
5
+
6
+ .. autoclass:: ODESystem
7
+
8
+
9
+ .. automethod:: __init__
10
+
11
+
12
+ .. rubric:: Methods
13
+
14
+ .. autosummary::
15
+
16
+ ~ODESystem.__init__
17
+ ~ODESystem.step
18
+ ~ODESystem.step_adaptive
19
+ ~ODESystem.step_fixed
20
+
21
+
22
+
23
+
24
+
25
+
@@ -0,0 +1,12 @@
1
+ solve\_nivp.adaptive\_integrator
2
+ ================================
3
+
4
+ .. automodule:: solve_nivp.adaptive_integrator
5
+
6
+
7
+ .. rubric:: Classes
8
+
9
+ .. autosummary::
10
+
11
+ AdaptiveStepping
12
+
@@ -0,0 +1,12 @@
1
+ solve\_nivp.alart\_curnier\_contact
2
+ ===================================
3
+
4
+ .. automodule:: solve_nivp.alart_curnier_contact
5
+
6
+
7
+ .. rubric:: Functions
8
+
9
+ .. autosummary::
10
+
11
+ build_alart_curnier_contact
12
+ build_dynamic_alart_curnier_contact
@@ -0,0 +1,7 @@
1
+ solve\_nivp.block\_system
2
+ =========================
3
+
4
+ .. automodule:: solve_nivp.block_system
5
+
6
+ Compatibility module. New code should prefer
7
+ ``solve_nivp.solvers.block_system``.
@@ -0,0 +1,17 @@
1
+ solve\_nivp.contact
2
+ ===================
3
+
4
+ .. automodule:: solve_nivp.contact
5
+
6
+
7
+ .. rubric:: Functions
8
+
9
+ .. autosummary::
10
+
11
+ build_impulse_contact
12
+
13
+ .. rubric:: Classes
14
+
15
+ .. autosummary::
16
+
17
+ ContactSystem
@@ -0,0 +1,13 @@
1
+ solve\_nivp.desaxce\_contact
2
+ ============================
3
+
4
+ .. automodule:: solve_nivp.desaxce_contact
5
+
6
+
7
+ .. rubric:: Functions
8
+
9
+ .. autosummary::
10
+
11
+ build_dynamic_desaxce_contact
12
+ build_dynamic_desaxce_projected_contact
13
+ build_dynamic_desaxce_residual_contact
@@ -0,0 +1,22 @@
1
+ solve\_nivp.integrations
2
+ ========================
3
+
4
+ .. automodule:: solve_nivp.integrations
5
+
6
+
7
+ .. rubric:: Classes
8
+
9
+ .. autosummary::
10
+
11
+ AlgebraicBackwardEuler
12
+ BackwardEuler
13
+ BackwardEulerSchur
14
+ CompositeMethod
15
+ EmbeddedBETR
16
+ IntegrationMethod
17
+ RadauIIA
18
+ RadauIIASchur
19
+ SDIRK2
20
+ ThetaMethod
21
+ Trapezoidal
22
+
@@ -0,0 +1,17 @@
1
+ solve\_nivp.macklin\_contact
2
+ ============================
3
+
4
+ .. automodule:: solve_nivp.macklin_contact
5
+
6
+
7
+ .. rubric:: Functions
8
+
9
+ .. autosummary::
10
+
11
+ build_macklin_contact_blocked
12
+
13
+ .. rubric:: Classes
14
+
15
+ .. autosummary::
16
+
17
+ MacklinBlockSystem
@@ -0,0 +1,17 @@
1
+ solve\_nivp.moreau\_jean\_fremond
2
+ =================================
3
+
4
+ .. automodule:: solve_nivp.moreau_jean_fremond
5
+
6
+
7
+ .. rubric:: Functions
8
+
9
+ .. autosummary::
10
+
11
+ build_moreau_jean_fremond
12
+
13
+ .. rubric:: Classes
14
+
15
+ .. autosummary::
16
+
17
+ MoreauJeanFremondStepper
@@ -0,0 +1,19 @@
1
+ solve\_nivp.ncp\_contact
2
+ ========================
3
+
4
+ .. automodule:: solve_nivp.ncp_contact
5
+
6
+
7
+ .. rubric:: Functions
8
+
9
+ .. autosummary::
10
+
11
+ build_dynamic_ncp_contact
12
+ build_ncp_contact
13
+ build_ncp_contact_blocked
14
+
15
+ .. rubric:: Classes
16
+
17
+ .. autosummary::
18
+
19
+ NCPBlockSystem
@@ -0,0 +1,8 @@
1
+ solve\_nivp.nonlinear\_solvers
2
+ ==============================
3
+
4
+ .. automodule:: solve_nivp.nonlinear_solvers
5
+
6
+ Compatibility module. New code should prefer
7
+ ``solve_nivp.solvers.nonlinear_solvers``.
8
+
@@ -0,0 +1,6 @@
1
+ solve\_nivp.pcr
2
+ ===============
3
+
4
+ .. automodule:: solve_nivp.pcr
5
+
6
+ Compatibility module. New code should prefer ``solve_nivp.solvers.pcr``.
@@ -0,0 +1,21 @@
1
+ solve\_nivp.projected\_radau\_contact
2
+ =====================================
3
+
4
+ .. automodule:: solve_nivp.projected_radau_contact
5
+
6
+
7
+ .. rubric:: Functions
8
+
9
+ .. autosummary::
10
+
11
+ build_projected_radau_contact
12
+
13
+ .. rubric:: Classes
14
+
15
+ .. autosummary::
16
+
17
+ DeSaxceProjectedConeLaw
18
+ NCPNormalConeLaw
19
+ ProjectedRadauContactLaw
20
+ ProjectedRadauContactModel
21
+ SOCFischerBurmeisterLaw
@@ -0,0 +1,21 @@
1
+ solve\_nivp.projections
2
+ =======================
3
+
4
+ .. automodule:: solve_nivp.projections
5
+
6
+
7
+ .. rubric:: Classes
8
+
9
+ .. autosummary::
10
+
11
+ AlgebraicConstraintProjection
12
+ AnisotropicSOCProjection
13
+ CompositeContactProjection
14
+ CoulombProjection
15
+ GeneralMoreauVIProjection
16
+ IdentityProjection
17
+ MoreauSOCProjection
18
+ MuScaledSOCProjection
19
+ Projection
20
+ SignProjection
21
+
@@ -0,0 +1,25 @@
1
+ solve\_nivp.rattle\_contact
2
+ ===========================
3
+
4
+ .. automodule:: solve_nivp.rattle_contact
5
+
6
+
7
+ .. rubric:: Functions
8
+
9
+ .. autosummary::
10
+
11
+ build_dynamic_rattle_contact
12
+ build_rattle_system
13
+ solve_dynamic_rattle_contact
14
+
15
+ .. rubric:: Classes
16
+
17
+ .. autosummary::
18
+
19
+ RattleAlgebraicSpec
20
+ RattleBilateralSpec
21
+ RattleContactSpec
22
+ RattleContactSystem
23
+ RattleMechanicalSystem
24
+ RattleSolveResult
25
+ RattleSolver
@@ -0,0 +1,7 @@
1
+ solve\_nivp.rl.callbacks
2
+ =========================
3
+
4
+ .. automodule:: solve_nivp.rl.callbacks
5
+ :members:
6
+ :undoc-members:
7
+ :show-inheritance:
@@ -0,0 +1,12 @@
1
+ solve\_nivp.rl.dependency
2
+ =========================
3
+
4
+ .. automodule:: solve_nivp.rl.dependency
5
+
6
+
7
+ .. rubric:: Functions
8
+
9
+ .. autosummary::
10
+
11
+ ensure_rl_dependencies
12
+
@@ -0,0 +1,7 @@
1
+ solve\_nivp.rl.env
2
+ ==================
3
+
4
+ .. automodule:: solve_nivp.rl.env
5
+ :members:
6
+ :undoc-members:
7
+ :show-inheritance:
@@ -0,0 +1,16 @@
1
+ solve\_nivp.rl
2
+ ==============
3
+
4
+ .. automodule:: solve_nivp.rl
5
+
6
+ The environment and callback modules require optional reinforcement-learning
7
+ dependencies. Install ``solve_nivp[rl]`` to use them at runtime.
8
+
9
+ .. rubric:: Modules
10
+
11
+ .. toctree::
12
+ :maxdepth: 1
13
+
14
+ solve_nivp.rl.callbacks
15
+ solve_nivp.rl.dependency
16
+ solve_nivp.rl.env
@@ -0,0 +1,38 @@
1
+ solve\_nivp API
2
+ ===============
3
+
4
+ .. automodule:: solve_nivp
5
+ :no-members:
6
+
7
+ Top-Level Functions
8
+ -------------------
9
+
10
+ .. autofunction:: solve_nivp.solve_nivp
11
+
12
+ ``solve_ivp_ns`` is kept as a compatibility alias for ``solve_nivp``.
13
+
14
+ Modules
15
+ -------
16
+
17
+ .. toctree::
18
+ :maxdepth: 1
19
+
20
+ solve_nivp.ODESolver
21
+ solve_nivp.ODESystem
22
+ solve_nivp.adaptive_integrator
23
+ solve_nivp.alart_curnier_contact
24
+ solve_nivp.block_system
25
+ solve_nivp.contact
26
+ solve_nivp.desaxce_contact
27
+ solve_nivp.integrations
28
+ solve_nivp.macklin_contact
29
+ solve_nivp.moreau_jean_fremond
30
+ solve_nivp.ncp_contact
31
+ solve_nivp.nonlinear_solvers
32
+ solve_nivp.pcr
33
+ solve_nivp.projected_radau_contact
34
+ solve_nivp.projections
35
+ solve_nivp.rattle_contact
36
+ solve_nivp.rl
37
+ solve_nivp.solvers
38
+ solve_nivp.soccp_pgs
@@ -0,0 +1,19 @@
1
+ solve\_nivp.soccp\_pgs
2
+ ======================
3
+
4
+ .. automodule:: solve_nivp.soccp_pgs
5
+
6
+
7
+ .. rubric:: Functions
8
+
9
+ .. autosummary::
10
+
11
+ desaxce_shift_factory
12
+ fremond_shift_factory
13
+ soccp_pgs
14
+
15
+ .. rubric:: Classes
16
+
17
+ .. autosummary::
18
+
19
+ SocppPgsInfo
@@ -0,0 +1,11 @@
1
+ solve\_nivp.solvers.block\_system
2
+ =================================
3
+
4
+ .. automodule:: solve_nivp.solvers.block_system
5
+
6
+ .. rubric:: Classes
7
+
8
+ .. autosummary::
9
+
10
+ BlockStructuredSystem
11
+ SchurComplementSolver
@@ -0,0 +1,10 @@
1
+ solve\_nivp.solvers.nonlinear\_solvers
2
+ ======================================
3
+
4
+ .. automodule:: solve_nivp.solvers.nonlinear_solvers
5
+
6
+ .. rubric:: Classes
7
+
8
+ .. autosummary::
9
+
10
+ ImplicitEquationSolver
@@ -0,0 +1,10 @@
1
+ solve\_nivp.solvers.pcr
2
+ =======================
3
+
4
+ .. automodule:: solve_nivp.solvers.pcr
5
+
6
+ .. rubric:: Functions
7
+
8
+ .. autosummary::
9
+
10
+ pcr_solve
@@ -0,0 +1,13 @@
1
+ solve\_nivp.solvers
2
+ ===================
3
+
4
+ .. automodule:: solve_nivp.solvers
5
+
6
+ .. rubric:: Modules
7
+
8
+ .. toctree::
9
+ :maxdepth: 1
10
+
11
+ solve_nivp.solvers.block_system
12
+ solve_nivp.solvers.nonlinear_solvers
13
+ solve_nivp.solvers.pcr
@@ -0,0 +1,70 @@
1
+ # Configuration file for the Sphinx documentation builder.
2
+ #
3
+ # For the full list of built-in configuration values, see the documentation:
4
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html
5
+
6
+ from pathlib import Path
7
+ import sys
8
+
9
+ sys.path.insert(0, str(Path(__file__).resolve().parents[2] / 'src'))
10
+
11
+ # -- Project information -----------------------------------------------------
12
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
13
+
14
+ project = 'solve_nivp'
15
+ copyright = '2025, David Riley'
16
+ author = 'David Riley'
17
+ release = '0.2.0.dev1'
18
+
19
+ # -- General configuration ---------------------------------------------------
20
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
21
+
22
+ extensions = [
23
+ 'sphinx.ext.autodoc',
24
+ 'sphinx.ext.autosummary',
25
+ 'sphinx.ext.napoleon', # NumPy/Google-style docstrings
26
+ 'sphinx.ext.viewcode',
27
+ 'sphinx.ext.mathjax',
28
+ 'sphinx.ext.intersphinx',
29
+ ]
30
+
31
+ # API stubs are committed under docs/source/api. Regenerate them explicitly
32
+ # when the public module list changes so normal docs builds do not dirty Git.
33
+ autosummary_generate = False
34
+
35
+ # Type hints in description for cleaner signatures
36
+ autodoc_typehints = 'description'
37
+
38
+ # Optional extras are documented without requiring their runtime dependencies.
39
+ autodoc_mock_imports = [
40
+ 'gymnasium',
41
+ 'stable_baselines3',
42
+ 'sb3_contrib',
43
+ ]
44
+
45
+ # Napoleon options
46
+ napoleon_google_docstring = False
47
+ napoleon_numpy_docstring = True
48
+
49
+ # Intersphinx mappings for cross-references
50
+ intersphinx_mapping = {
51
+ 'python': ('https://docs.python.org/3', None),
52
+ 'numpy': ('https://numpy.org/doc/stable/', None),
53
+ 'scipy': ('https://docs.scipy.org/doc/scipy/', None),
54
+ }
55
+
56
+ templates_path = ['_templates']
57
+ exclude_patterns = []
58
+
59
+
60
+
61
+ # -- Options for HTML output -------------------------------------------------
62
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
63
+
64
+ html_theme = 'alabaster'
65
+ html_static_path = []
66
+
67
+ latex_engine = 'xelatex'
68
+ # latex_elements = {
69
+ # 'preamble': r'\usepackage[utf8]{inputenc}\usepackage[T1]{fontenc}',
70
+ # }
@@ -0,0 +1,30 @@
1
+ Development
2
+ ===========
3
+
4
+ Testing
5
+ -------
6
+ Run the unit tests from the project root in a fresh virtual environment:
7
+
8
+ .. code-block:: bash
9
+
10
+ python3 -m venv .venv && source .venv/bin/activate
11
+ pip install -U pip
12
+ pip install -e .[test]
13
+ pytest -q
14
+
15
+ Documentation
16
+ -------------
17
+ Build the docs locally:
18
+
19
+ .. code-block:: bash
20
+
21
+ cd docs
22
+ make clean html
23
+
24
+ Then open ``_build/html/index.html`` in your browser.
25
+
26
+ Style and contributions
27
+ -----------------------
28
+ - Use NumPy-style docstrings (processed by ``napoleon``).
29
+ - Keep public APIs documented and covered by tests.
30
+ - Submit PRs with focused changes and include updates to docs/examples.