solve-nivp 0.2.0.dev2__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.
- {solve_nivp-0.2.0.dev2/src/solve_nivp.egg-info → solve_nivp-0.2.0.dev3}/PKG-INFO +1 -1
- solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.alart_curnier_contact.rst +12 -0
- solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.block_system.rst +7 -0
- solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.contact.rst +17 -0
- solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.desaxce_contact.rst +13 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/docs/source/api/solve_nivp.integrations.rst +4 -0
- solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.macklin_contact.rst +17 -0
- solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.moreau_jean_fremond.rst +17 -0
- solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.ncp_contact.rst +19 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/docs/source/api/solve_nivp.nonlinear_solvers.rst +2 -6
- solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.pcr.rst +6 -0
- solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.projected_radau_contact.rst +21 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/docs/source/api/solve_nivp.projections.rst +4 -0
- solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.rattle_contact.rst +25 -0
- solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.rl.callbacks.rst +7 -0
- solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.rl.env.rst +7 -0
- solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.rl.rst +16 -0
- solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.rst +38 -0
- solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.soccp_pgs.rst +19 -0
- solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.solvers.block_system.rst +11 -0
- solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.solvers.nonlinear_solvers.rst +10 -0
- solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.solvers.pcr.rst +10 -0
- solve_nivp-0.2.0.dev3/docs/source/api/solve_nivp.solvers.rst +13 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/docs/source/conf.py +17 -5
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/docs/source/index.rst +2 -1
- solve_nivp-0.2.0.dev3/docs/source/public_api.rst +93 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/pyproject.toml +1 -1
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/src/solve_nivp/__init__.py +18 -3
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/src/solve_nivp/adaptive_integrator.py +199 -3
- solve_nivp-0.2.0.dev3/src/solve_nivp/mjf_integration.py +189 -0
- solve_nivp-0.2.0.dev3/src/solve_nivp/moreau_jean_fremond.py +2131 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/src/solve_nivp/ncp_contact.py +100 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/src/solve_nivp/projected_radau_contact.py +119 -9
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/src/solve_nivp/soccp_pgs.py +19 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/src/solve_nivp/solvers/nonlinear_solvers.py +216 -8
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3/src/solve_nivp.egg-info}/PKG-INFO +1 -1
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/src/solve_nivp.egg-info/SOURCES.txt +19 -2
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_auto_h0_and_dae_weighting.py +56 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_large_scale_solver_fixes.py +105 -2
- solve_nivp-0.2.0.dev3/tests/test_moreau_jean_fremond.py +797 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_ncp_contact.py +120 -1
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_per_dof_tolerances.py +29 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_projected_radau_contact.py +101 -0
- solve_nivp-0.2.0.dev2/docs/source/api/solve_nivp.rl.rst +0 -15
- solve_nivp-0.2.0.dev2/docs/source/api/solve_nivp.rst +0 -25
- solve_nivp-0.2.0.dev2/docs/source/modules.rst +0 -17
- solve_nivp-0.2.0.dev2/docs/source/solve_nivp.rst +0 -58
- solve_nivp-0.2.0.dev2/src/solve_nivp/moreau_jean_fremond.py +0 -699
- solve_nivp-0.2.0.dev2/tests/test_moreau_jean_fremond.py +0 -346
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/LICENSE +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/MANIFEST.in +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/README.md +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/docs/Makefile +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/docs/make.bat +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/docs/source/api/solve_nivp.ODESolver.rst +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/docs/source/api/solve_nivp.ODESystem.rst +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/docs/source/api/solve_nivp.adaptive_integrator.rst +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/docs/source/api/solve_nivp.rl.dependency.rst +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/docs/source/development.rst +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/docs/source/examples.rst +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/docs/source/quickstart.rst +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/pytest.ini +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/setup.cfg +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/src/solve_nivp/ODESolver.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/src/solve_nivp/ODESystem.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/src/solve_nivp/_numba_accel.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/src/solve_nivp/_selftest.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/src/solve_nivp/alart_curnier_contact.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/src/solve_nivp/block_system.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/src/solve_nivp/contact.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/src/solve_nivp/desaxce_contact.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/src/solve_nivp/integrations.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/src/solve_nivp/macklin_contact.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/src/solve_nivp/nonlinear_solvers.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/src/solve_nivp/pcr.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/src/solve_nivp/projections.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/src/solve_nivp/rattle_contact.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/src/solve_nivp/rl/__init__.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/src/solve_nivp/rl/callbacks.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/src/solve_nivp/rl/dependency.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/src/solve_nivp/rl/env.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/src/solve_nivp/solvers/__init__.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/src/solve_nivp/solvers/block_system.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/src/solve_nivp/solvers/pcr.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/src/solve_nivp.egg-info/dependency_links.txt +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/src/solve_nivp.egg-info/entry_points.txt +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/src/solve_nivp.egg-info/requires.txt +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/src/solve_nivp.egg-info/top_level.txt +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/__init__.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_3d_and_anisotropic_contact.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_active_set_filter.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_alart_curnier_contact.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_algebraic_constraint_projection.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_anisotropic_soc_projection.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_block_system.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_bouncing_ball_schur_comparison.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_build_impulse_contact.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_c_extract_contact.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_composite_contact_projection.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_coulomb_projection.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_coulomb_projection_jacobian.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_desaxce_contact.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_dilatancy.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_error_predictive_rejection.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_general_moreau_projection.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_globalization.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_identity_newton_linear_solver.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_import_and_api.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_integrators_added.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_jacobian_scaling.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_macklin_contact.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_mu_scaled_soc_projection.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_ncp_schur_integration.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_nl_recovery_cap.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_nonlinear_solvers_added.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_pcr.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_prestress_soc.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_prestressed_fault_dynamic_helper.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_projection_batch_equivalence.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_projections_added.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_radau_iia.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_rattle_integrator.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_rattle_local_slider.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_sdirk2.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_sdirk2_soc_contact.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_soccp_pgs.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_sparse_semismooth_newton.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_t_eval.py +0 -0
- {solve_nivp-0.2.0.dev2 → solve_nivp-0.2.0.dev3}/tests/test_threading_time_and_fk.py +0 -0
|
@@ -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,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,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
|
|
@@ -8,9 +8,13 @@ solve\_nivp.projections
|
|
|
8
8
|
|
|
9
9
|
.. autosummary::
|
|
10
10
|
|
|
11
|
+
AlgebraicConstraintProjection
|
|
12
|
+
AnisotropicSOCProjection
|
|
13
|
+
CompositeContactProjection
|
|
11
14
|
CoulombProjection
|
|
12
15
|
GeneralMoreauVIProjection
|
|
13
16
|
IdentityProjection
|
|
17
|
+
MoreauSOCProjection
|
|
14
18
|
MuScaledSOCProjection
|
|
15
19
|
Projection
|
|
16
20
|
SignProjection
|
|
@@ -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,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
|
|
@@ -3,13 +3,18 @@
|
|
|
3
3
|
# For the full list of built-in configuration values, see the documentation:
|
|
4
4
|
# https://www.sphinx-doc.org/en/master/usage/configuration.html
|
|
5
5
|
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
import sys
|
|
8
|
+
|
|
9
|
+
sys.path.insert(0, str(Path(__file__).resolve().parents[2] / 'src'))
|
|
10
|
+
|
|
6
11
|
# -- Project information -----------------------------------------------------
|
|
7
12
|
# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
|
|
8
13
|
|
|
9
14
|
project = 'solve_nivp'
|
|
10
15
|
copyright = '2025, David Riley'
|
|
11
16
|
author = 'David Riley'
|
|
12
|
-
release = '
|
|
17
|
+
release = '0.2.0.dev1'
|
|
13
18
|
|
|
14
19
|
# -- General configuration ---------------------------------------------------
|
|
15
20
|
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
|
|
@@ -23,12 +28,20 @@ extensions = [
|
|
|
23
28
|
'sphinx.ext.intersphinx',
|
|
24
29
|
]
|
|
25
30
|
|
|
26
|
-
#
|
|
27
|
-
|
|
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
|
|
28
34
|
|
|
29
35
|
# Type hints in description for cleaner signatures
|
|
30
36
|
autodoc_typehints = 'description'
|
|
31
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
|
+
|
|
32
45
|
# Napoleon options
|
|
33
46
|
napoleon_google_docstring = False
|
|
34
47
|
napoleon_numpy_docstring = True
|
|
@@ -49,10 +62,9 @@ exclude_patterns = []
|
|
|
49
62
|
# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
|
|
50
63
|
|
|
51
64
|
html_theme = 'alabaster'
|
|
52
|
-
html_static_path = [
|
|
65
|
+
html_static_path = []
|
|
53
66
|
|
|
54
67
|
latex_engine = 'xelatex'
|
|
55
68
|
# latex_elements = {
|
|
56
69
|
# 'preamble': r'\usepackage[utf8]{inputenc}\usepackage[T1]{fontenc}',
|
|
57
70
|
# }
|
|
58
|
-
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
Public API Policy
|
|
2
|
+
=================
|
|
3
|
+
|
|
4
|
+
This page defines the supported surface of ``solve_nivp``. It is intended to
|
|
5
|
+
keep the package usable as a general library while still allowing active
|
|
6
|
+
research backends to evolve.
|
|
7
|
+
|
|
8
|
+
Stable API
|
|
9
|
+
----------
|
|
10
|
+
|
|
11
|
+
The stable API is the recommended import surface for users and downstream
|
|
12
|
+
projects. These names should be documented, covered by tests, and changed only
|
|
13
|
+
with a compatibility plan.
|
|
14
|
+
|
|
15
|
+
Top-level convenience API:
|
|
16
|
+
|
|
17
|
+
* ``solve_nivp.solve_nivp``
|
|
18
|
+
* ``solve_nivp.__version__``
|
|
19
|
+
|
|
20
|
+
System and driver classes:
|
|
21
|
+
|
|
22
|
+
* ``solve_nivp.ODESystem``
|
|
23
|
+
* ``solve_nivp.ODESolver``
|
|
24
|
+
|
|
25
|
+
Nonlinear solver:
|
|
26
|
+
|
|
27
|
+
* ``solve_nivp.ImplicitEquationSolver``
|
|
28
|
+
|
|
29
|
+
Integrator classes:
|
|
30
|
+
|
|
31
|
+
* ``solve_nivp.BackwardEuler``
|
|
32
|
+
* ``solve_nivp.Trapezoidal``
|
|
33
|
+
* ``solve_nivp.ThetaMethod``
|
|
34
|
+
* ``solve_nivp.CompositeMethod``
|
|
35
|
+
* ``solve_nivp.EmbeddedBETR``
|
|
36
|
+
* ``solve_nivp.SDIRK2``
|
|
37
|
+
* ``solve_nivp.RadauIIA``
|
|
38
|
+
|
|
39
|
+
Projection classes:
|
|
40
|
+
|
|
41
|
+
* ``solve_nivp.Projection``
|
|
42
|
+
* ``solve_nivp.IdentityProjection``
|
|
43
|
+
* ``solve_nivp.SignProjection``
|
|
44
|
+
* ``solve_nivp.CoulombProjection``
|
|
45
|
+
* ``solve_nivp.GeneralMoreauVIProjection``
|
|
46
|
+
* ``solve_nivp.MuScaledSOCProjection``
|
|
47
|
+
* ``solve_nivp.MoreauSOCProjection``
|
|
48
|
+
* ``solve_nivp.AnisotropicSOCProjection``
|
|
49
|
+
* ``solve_nivp.AlgebraicConstraintProjection``
|
|
50
|
+
* ``solve_nivp.CompositeContactProjection``
|
|
51
|
+
|
|
52
|
+
Experimental API
|
|
53
|
+
----------------
|
|
54
|
+
|
|
55
|
+
The experimental API is useful and importable, but it is still allowed to
|
|
56
|
+
change while the package design is being refined. Where possible, changes
|
|
57
|
+
should still be documented in release notes and tested against the examples
|
|
58
|
+
that use them.
|
|
59
|
+
|
|
60
|
+
Current experimental areas:
|
|
61
|
+
|
|
62
|
+
* Contact-system builders and backend-specific helpers.
|
|
63
|
+
* Schur-complement contact solvers.
|
|
64
|
+
* RATTLE contact-system helpers.
|
|
65
|
+
* PETSc-specific large-scale solver paths.
|
|
66
|
+
* ``solve_nivp.rl`` reinforcement-learning wrappers.
|
|
67
|
+
|
|
68
|
+
Private Internals
|
|
69
|
+
-----------------
|
|
70
|
+
|
|
71
|
+
Names beginning with ``_`` are private unless explicitly documented here or in
|
|
72
|
+
the API reference. Internal caches, factorization reuse details, helper
|
|
73
|
+
dispatch functions, notebook utilities, and generated example artifacts are not
|
|
74
|
+
part of the compatibility contract.
|
|
75
|
+
|
|
76
|
+
Research And Workspace Material
|
|
77
|
+
-------------------------------
|
|
78
|
+
|
|
79
|
+
The repository currently contains research notebooks, benchmark outputs,
|
|
80
|
+
diagnostic scripts, and generated result files. Those are valuable for
|
|
81
|
+
reproducibility, but they are not the core package API. During cleanup they
|
|
82
|
+
should be separated from the installable library path and marked as examples,
|
|
83
|
+
benchmarks, external reproductions, or archived artifacts.
|
|
84
|
+
|
|
85
|
+
Compatibility Rule
|
|
86
|
+
------------------
|
|
87
|
+
|
|
88
|
+
Stable API changes should prefer one of these routes:
|
|
89
|
+
|
|
90
|
+
* preserve the existing import and behavior;
|
|
91
|
+
* add a new explicit option while keeping the old default;
|
|
92
|
+
* deprecate first, remove later;
|
|
93
|
+
* document unavoidable breaking changes with migration notes.
|
|
@@ -50,7 +50,7 @@ See the Sphinx documentation (``docs/``) for extended examples.
|
|
|
50
50
|
|
|
51
51
|
import numpy as np
|
|
52
52
|
|
|
53
|
-
__version__ = "0.2.0.
|
|
53
|
+
__version__ = "0.2.0.dev3"
|
|
54
54
|
|
|
55
55
|
from .projections import (
|
|
56
56
|
Projection,
|
|
@@ -69,6 +69,7 @@ from .integrations import BackwardEuler, BackwardEulerSchur, RadauIIASchur, Trap
|
|
|
69
69
|
from .solvers.block_system import SchurComplementSolver, BlockStructuredSystem
|
|
70
70
|
from .ODESystem import ODESystem
|
|
71
71
|
from .ODESolver import ODESolver
|
|
72
|
+
from .mjf_integration import (MJFIntegrationMethod, solve_mjf_fixed_step, MJFContactView)
|
|
72
73
|
from .contact import build_impulse_contact, ContactSystem
|
|
73
74
|
from .alart_curnier_contact import (
|
|
74
75
|
build_alart_curnier_contact,
|
|
@@ -211,8 +212,9 @@ def solve_nivp(
|
|
|
211
212
|
adaptive_opts : dict or None
|
|
212
213
|
Optional controls for the adaptive stepper. Recognized keys include
|
|
213
214
|
``h_min``, ``h_max``, ``h_up``, ``h_down``, ``safety``, ``use_PI``,
|
|
214
|
-
``method_order`` (alias ``p``), ``atol``, ``rtol``,
|
|
215
|
-
``skip_error_indices``. ``h0`` here (if
|
|
215
|
+
``method_order`` (alias ``p``), ``atol``, ``rtol``, ``record_diagnostics``,
|
|
216
|
+
``diagnostic_component_names``, and ``skip_error_indices``. ``h0`` here (if
|
|
217
|
+
provided) overrides the top-level
|
|
216
218
|
``h0`` for the initial step guess. Unrecognized keys are ignored.
|
|
217
219
|
adaptive : bool, default True
|
|
218
220
|
Enable Richardson extrapolation based adaptive step size control.
|
|
@@ -429,6 +431,19 @@ def solve_nivp(
|
|
|
429
431
|
# Forward active-set filter setting
|
|
430
432
|
stepper.active_set_filter = bool(active_set_filter)
|
|
431
433
|
|
|
434
|
+
# Optional diagnostics for blockwise error/residual profiling.
|
|
435
|
+
_record_diag = bool(adaptive_opts.get('record_diagnostics', False))
|
|
436
|
+
stepper.record_diagnostics = _record_diag
|
|
437
|
+
solver_instance.record_diagnostics = _record_diag
|
|
438
|
+
_diag_names = adaptive_opts.get('diagnostic_component_names', None)
|
|
439
|
+
if _diag_names is not None:
|
|
440
|
+
try:
|
|
441
|
+
_diag_names = list(_diag_names)
|
|
442
|
+
except TypeError:
|
|
443
|
+
_diag_names = None
|
|
444
|
+
stepper.diagnostic_component_names = _diag_names
|
|
445
|
+
solver_instance.diagnostic_component_names = _diag_names
|
|
446
|
+
|
|
432
447
|
# Handle auto-h0 from top level
|
|
433
448
|
if h0 is None or (isinstance(h0, str) and str(h0).lower() == 'auto'):
|
|
434
449
|
stepper._auto_h0 = True
|