physioblocks 1.0.1__tar.gz → 1.0.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. {physioblocks-1.0.1 → physioblocks-1.0.2}/PKG-INFO +5 -2
  2. {physioblocks-1.0.1 → physioblocks-1.0.2}/README.md +4 -1
  3. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/library/configuration/simulation.rst +7 -0
  4. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/user_guide/level_2/create_simulation.rst +3 -3
  5. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/__init__.py +1 -1
  6. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/library/aliases/simulations/circulation_alone_forward_simulation.jsonc +1 -3
  7. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/simulation/solvers.py +30 -0
  8. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_simulation/test_solvers.py +33 -1
  9. {physioblocks-1.0.1 → physioblocks-1.0.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  10. {physioblocks-1.0.1 → physioblocks-1.0.2}/.github/ISSUE_TEMPLATE/documentation.md +0 -0
  11. {physioblocks-1.0.1 → physioblocks-1.0.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  12. {physioblocks-1.0.1 → physioblocks-1.0.2}/.gitignore +0 -0
  13. {physioblocks-1.0.1 → physioblocks-1.0.2}/.gitlab/issue_templates/Bug.md +0 -0
  14. {physioblocks-1.0.1 → physioblocks-1.0.2}/.gitlab/issue_templates/Documentation.md +0 -0
  15. {physioblocks-1.0.1 → physioblocks-1.0.2}/.gitlab/issue_templates/Feature.md +0 -0
  16. {physioblocks-1.0.1 → physioblocks-1.0.2}/.gitlab-ci.yml +0 -0
  17. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/.gitignore +0 -0
  18. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/Makefile +0 -0
  19. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/make.bat +0 -0
  20. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/api_reference/base.rst +0 -0
  21. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/api_reference/computing.rst +0 -0
  22. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/api_reference/configuration.rst +0 -0
  23. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/api_reference/description.rst +0 -0
  24. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/api_reference/io.rst +0 -0
  25. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/api_reference/registers.rst +0 -0
  26. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/api_reference/simulation.rst +0 -0
  27. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/api_reference/utils.rst +0 -0
  28. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/api_reference.rst +0 -0
  29. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/conf.py +0 -0
  30. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/index.rst +0 -0
  31. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/installation.rst +0 -0
  32. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/library/aliases/blocks.rst +0 -0
  33. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/library/aliases/model_components.rst +0 -0
  34. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/library/aliases/nets.rst +0 -0
  35. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/library/aliases/simulation.rst +0 -0
  36. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/library/aliases.rst +0 -0
  37. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/library/blocks.rst +0 -0
  38. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/library/configuration/functions.rst +0 -0
  39. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/library/configuration/net.rst +0 -0
  40. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/library/configuration.rst +0 -0
  41. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/library/functions.rst +0 -0
  42. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/library/model_components.rst +0 -0
  43. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/library.rst +0 -0
  44. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/presentation.rst +0 -0
  45. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/schemes/assembling_example_scheme.tex +0 -0
  46. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/schemes/circulation_net_scheme.tex +0 -0
  47. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/schemes/circulation_net_scheme_heart.tex +0 -0
  48. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/schemes/model_heart_circulation_0D.tex +0 -0
  49. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/schemes/simple_circulation_model.tex +0 -0
  50. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/schemes/simple_circulation_model_heart.tex +0 -0
  51. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/schemes/spherical_heart_net_scheme.tex +0 -0
  52. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/user_guide/level_1/launch_simulation.rst +0 -0
  53. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/user_guide/level_1/launcher.rst +0 -0
  54. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/user_guide/level_1.rst +0 -0
  55. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/user_guide/level_2/aliases.rst +0 -0
  56. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/user_guide/level_2/create_net.rst +0 -0
  57. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/user_guide/level_2/overview.rst +0 -0
  58. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/user_guide/level_2.rst +0 -0
  59. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/user_guide/level_3/block_configuration.rst +0 -0
  60. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/user_guide/level_3/block_definition.rst +0 -0
  61. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/user_guide/level_3/block_test.rst +0 -0
  62. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/user_guide/level_3/overview.rst +0 -0
  63. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/user_guide/level_3/specific_installations.rst +0 -0
  64. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/user_guide/level_3.rst +0 -0
  65. {physioblocks-1.0.1 → physioblocks-1.0.2}/doc/source/user_guide.rst +0 -0
  66. {physioblocks-1.0.1 → physioblocks-1.0.2}/docker/latex/Dockerfile +0 -0
  67. {physioblocks-1.0.1 → physioblocks-1.0.2}/docker/pyenv/Dockerfile +0 -0
  68. {physioblocks-1.0.1 → physioblocks-1.0.2}/licenses/GPL-3.0-only.txt +0 -0
  69. {physioblocks-1.0.1 → physioblocks-1.0.2}/licenses/LGPL-3.0-only.txt +0 -0
  70. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/base/__init__.py +0 -0
  71. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/base/operators.py +0 -0
  72. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/base/registers.py +0 -0
  73. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/computing/__init__.py +0 -0
  74. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/computing/assembling.py +0 -0
  75. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/computing/models.py +0 -0
  76. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/computing/quantities.py +0 -0
  77. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/configuration/__init__.py +0 -0
  78. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/configuration/aliases.py +0 -0
  79. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/configuration/base.py +0 -0
  80. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/configuration/computing/__init__.py +0 -0
  81. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/configuration/computing/quantities.py +0 -0
  82. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/configuration/constants.py +0 -0
  83. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/configuration/description/__init__.py +0 -0
  84. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/configuration/description/blocks.py +0 -0
  85. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/configuration/description/nets.py +0 -0
  86. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/configuration/functions.py +0 -0
  87. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/configuration/simulation/__init__.py +0 -0
  88. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/configuration/simulation/simulations.py +0 -0
  89. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/description/__init__.py +0 -0
  90. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/description/blocks.py +0 -0
  91. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/description/flux.py +0 -0
  92. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/description/nets.py +0 -0
  93. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/io/__init__.py +0 -0
  94. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/io/aliases.py +0 -0
  95. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/io/configuration.py +0 -0
  96. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/launcher/__main__.py +0 -0
  97. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/launcher/configuration.py +0 -0
  98. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/launcher/configure/__main__.py +0 -0
  99. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/launcher/constants.py +0 -0
  100. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/launcher/files.py +0 -0
  101. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/launcher/series.py +0 -0
  102. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/library/__init__.py +0 -0
  103. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/library/aliases/blocks/c_block.json +0 -0
  104. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/library/aliases/blocks/rc_block.json +0 -0
  105. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/library/aliases/blocks/rcr_block.json +0 -0
  106. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/library/aliases/blocks/spherical_cavity_block.json +0 -0
  107. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/library/aliases/blocks/valve_rl_block.json +0 -0
  108. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/library/aliases/flux/heart_flux_dof_couples.jsonc +0 -0
  109. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/library/aliases/model_components/active_law_macro_huxley_two_moments.json +0 -0
  110. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/library/aliases/model_components/rheology_fiber_additive.json +0 -0
  111. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/library/aliases/model_components/spherical_dynamics.json +0 -0
  112. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/library/aliases/model_components/velocity_law_hht.json +0 -0
  113. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/library/aliases/nets/circulation_alone_net.json +0 -0
  114. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/library/aliases/nets/spherical_heart_net.json +0 -0
  115. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/library/aliases/simulations/default_forward_simulation.jsonc +0 -0
  116. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/library/aliases/simulations/default_time.jsonc +0 -0
  117. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/library/aliases/simulations/newton_method_solver.json +0 -0
  118. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/library/aliases/simulations/spherical_heart_forward_simulation.jsonc +0 -0
  119. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/library/aliases/simulations/spherical_heart_with_respiration_forward_simulation.jsonc +0 -0
  120. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/library/blocks/__init__.py +0 -0
  121. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/library/blocks/capacitances.py +0 -0
  122. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/library/blocks/cavity.py +0 -0
  123. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/library/blocks/valves.py +0 -0
  124. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/library/functions/__init__.py +0 -0
  125. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/library/functions/base_operations.py +0 -0
  126. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/library/functions/first_order.py +0 -0
  127. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/library/functions/piecewise.py +0 -0
  128. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/library/functions/trigonometric.py +0 -0
  129. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/library/functions/watchers.py +0 -0
  130. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/library/model_components/__init__.py +0 -0
  131. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/library/model_components/active_law.py +0 -0
  132. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/library/model_components/dynamics.py +0 -0
  133. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/library/model_components/rheology.py +0 -0
  134. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/library/model_components/velocity_law.py +0 -0
  135. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/registers/__init__.py +0 -0
  136. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/registers/load_function_register.py +0 -0
  137. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/registers/save_function_register.py +0 -0
  138. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/registers/type_register.py +0 -0
  139. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/simulation/__init__.py +0 -0
  140. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/simulation/constants.py +0 -0
  141. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/simulation/functions.py +0 -0
  142. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/simulation/runtime.py +0 -0
  143. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/simulation/saved_quantities.py +0 -0
  144. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/simulation/setup.py +0 -0
  145. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/simulation/state.py +0 -0
  146. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/simulation/time_manager.py +0 -0
  147. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/utils/__init__.py +0 -0
  148. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/utils/dynamic_import_utils.py +0 -0
  149. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/utils/exceptions_utils.py +0 -0
  150. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/utils/gradient_test_utils.py +0 -0
  151. {physioblocks-1.0.1 → physioblocks-1.0.2}/physioblocks/utils/math_utils.py +0 -0
  152. {physioblocks-1.0.1 → physioblocks-1.0.2}/pyproject.toml +0 -0
  153. {physioblocks-1.0.1 → physioblocks-1.0.2}/references/circulation_alone_sim.jsonc +0 -0
  154. {physioblocks-1.0.1 → physioblocks-1.0.2}/references/spherical_heart_respiration_sim.jsonc +0 -0
  155. {physioblocks-1.0.1 → physioblocks-1.0.2}/references/spherical_heart_sim.jsonc +0 -0
  156. {physioblocks-1.0.1 → physioblocks-1.0.2}/ruff.toml +0 -0
  157. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/__init__.py +0 -0
  158. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/base/test_register.py +0 -0
  159. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/helpers/__init__.py +0 -0
  160. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/helpers/assertion_helpers.py +0 -0
  161. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/helpers/file_helpers.py +0 -0
  162. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_computing/test_assembling.py +0 -0
  163. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_computing/test_models.py +0 -0
  164. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_computing/test_quantities.py +0 -0
  165. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_config/__init__.py +0 -0
  166. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_config/test_definitions.py +0 -0
  167. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_config/test_generic_save_load.py +0 -0
  168. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_config/tests_alias/test_alias.py +0 -0
  169. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_config/tests_description/__init__.py +0 -0
  170. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_config/tests_description/test_config_blocks.py +0 -0
  171. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_config/tests_description/test_config_boundary_condition.py +0 -0
  172. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_config/tests_description/test_config_nets.py +0 -0
  173. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_config/tests_simulation/__init__.py +0 -0
  174. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_config/tests_simulation/simulation_reference.json +0 -0
  175. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_config/tests_simulation/test_config_simulation.py +0 -0
  176. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_config/tests_simulation/test_config_solvers.py +0 -0
  177. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_config/tests_simulation/test_config_time.py +0 -0
  178. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_config/tests_simulation/test_functions.py +0 -0
  179. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_description/__init__.py +0 -0
  180. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_description/test_blocks.py +0 -0
  181. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_description/test_nets.py +0 -0
  182. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_description/test_relations.py +0 -0
  183. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_io/__init__.py +0 -0
  184. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_io/references/alt_config_file_path.json +0 -0
  185. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_io/references/commented_config_file_path.jsonc +0 -0
  186. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_io/references/configuration.json +0 -0
  187. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_io/test_aliases.py +0 -0
  188. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_io/test_configuration.py +0 -0
  189. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_library/tests_blocks/test_capacitances.py +0 -0
  190. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_library/tests_blocks/test_cavity.py +0 -0
  191. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_library/tests_blocks/test_valves.py +0 -0
  192. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_library/tests_functions/test_base_operations_functions.py +0 -0
  193. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_library/tests_functions/test_first_order_functions.py +0 -0
  194. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_library/tests_functions/test_piecewise_functions.py +0 -0
  195. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_library/tests_functions/test_trigonometric_functions.py +0 -0
  196. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_library/tests_functions/test_watch_functions.py +0 -0
  197. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_library/tests_model_components/test_active_law.py +0 -0
  198. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_library/tests_model_components/test_dynamics_block.py +0 -0
  199. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_library/tests_model_components/test_rheology.py +0 -0
  200. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_library/tests_model_components/test_velocity_law_hht.py +0 -0
  201. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_references/__init__.py +0 -0
  202. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_references/circulation_alone/circulation_alone_sim_gradient_test.json +0 -0
  203. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_references/circulation_alone/ref_circulation_alone_sim.csv +0 -0
  204. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_references/conftest.py +0 -0
  205. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_references/io.py +0 -0
  206. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_references/spherical_heart/ref_spherical_heart_respiration_sim.csv +0 -0
  207. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_references/spherical_heart/ref_spherical_heart_sim.csv +0 -0
  208. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_references/spherical_heart/spherical_heart_sim_gradient_test.json +0 -0
  209. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_references/test_circulation_alone.py +0 -0
  210. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_references/test_spherical_heart.py +0 -0
  211. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_registers/test_load_register.py +0 -0
  212. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_registers/test_save_register.py +0 -0
  213. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_registers/test_type_register.py +0 -0
  214. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_simulation/__init__.py +0 -0
  215. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_simulation/test_runtime.py +0 -0
  216. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_simulation/test_setup.py +0 -0
  217. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_simulation/test_state.py +0 -0
  218. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_simulation/test_time_manager.py +0 -0
  219. {physioblocks-1.0.1 → physioblocks-1.0.2}/tests/tests_utils/test_math_utils.py +0 -0
  220. {physioblocks-1.0.1 → physioblocks-1.0.2}/tox.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: physioblocks
3
- Version: 1.0.1
3
+ Version: 1.0.2
4
4
  Dynamic: Author
5
5
  Dynamic: Author-email
6
6
  Dynamic: License
@@ -124,4 +124,7 @@ python -m physioblocks.launcher references/spherical_heart_sim.jsonc -v -t -s Qu
124
124
  ```
125
125
 
126
126
 
127
- Results will be available in the `$LAUNCHER_FOLDER_PATH$/simulations/QuickStart` series folder.
127
+ Results will be available in the `$LAUNCHER_FOLDER_PATH$/simulations/QuickStart` series folder:
128
+ * the csv file contains the simulation results.
129
+ * the html allows you to visualize the results.
130
+ * the log and json files are here for debug purposes.
@@ -76,4 +76,7 @@ python -m physioblocks.launcher references/spherical_heart_sim.jsonc -v -t -s Qu
76
76
  ```
77
77
 
78
78
 
79
- Results will be available in the `$LAUNCHER_FOLDER_PATH$/simulations/QuickStart` series folder.
79
+ Results will be available in the `$LAUNCHER_FOLDER_PATH$/simulations/QuickStart` series folder:
80
+ * the csv file contains the simulation results.
81
+ * the html allows you to visualize the results.
82
+ * the log and json files are here for debug purposes.
@@ -133,6 +133,13 @@ Solvers Configuration
133
133
 
134
134
  Description of available configuration item to build :class:`~physioblocks.simulation.solvers.AbstractSolver` object from a configuration file.
135
135
 
136
+
137
+ Linear Solver
138
+ -------------
139
+
140
+ * **Class:** :class:`~physioblocks.simulation.solvers.LinearSolver`
141
+ * **Type name:** ``linear_solver``
142
+
136
143
  Newton Solver
137
144
  -------------
138
145
 
@@ -89,8 +89,7 @@ Solver
89
89
 
90
90
  This field define the solver implementation used to run a single simulation step.
91
91
 
92
- For now, only the :class:`~physioblocks.simulation.solvers.NewtonSolver` object is implemented in the current API.
93
- Its ``type`` is found in the :ref:`configuration section <library_configuration_simulation_solvers>` of the library
92
+ The ``type`` parameters of available solver are found in the :ref:`configuration section <library_configuration_simulation_solvers>` of the library.
94
93
 
95
94
  .. code:: json
96
95
 
@@ -111,6 +110,7 @@ In this case, we set two parameters to the solver:
111
110
  Concerning our simple example the problem is **linear**, so a **Newton method is not adapted**.
112
111
  Still, we should be able to solve the system in two iterations, so ``iteration_max`` is set to 2.
113
112
 
113
+ A better choice would have been the ``linear_solver``, but we wanted to show the Newton solver in the example because it will be useful for most nets.
114
114
 
115
115
  Time
116
116
  ^^^^
@@ -135,7 +135,7 @@ It needs :
135
135
  }
136
136
 
137
137
  Here we set a 30 seconds simulation starting at 0.0.
138
- The simulation gives the state each 1ms and can divide a time step in parts of minimum lenght 62.5us before considering it can not solve the global system for the step.
138
+ The simulation gives the state each 1ms and can divide a time step in parts of minimum length 62.5us before considering it can not solve the global system for the step.
139
139
 
140
140
  Net
141
141
  ^^^
@@ -26,7 +26,7 @@
26
26
 
27
27
  """Physioblocks package definition"""
28
28
 
29
- __version__ = "1.0.1"
29
+ __version__ = "1.0.2"
30
30
  __copyright__ = "INRIA"
31
31
  __license__ = "LGPL-3.0-only"
32
32
  __authors__ = [
@@ -49,7 +49,5 @@
49
49
  "inverses": ["aorta_distal.resistance"]
50
50
  }
51
51
  },
52
- "solver": {
53
- "iteration_max": 2 // This problem is linear
54
- }
52
+ "solver": {"type": "linear_solver"}
55
53
  }
@@ -114,6 +114,36 @@ class AbstractSolver(ABC):
114
114
  """
115
115
 
116
116
 
117
+ LINEAR_SOLVER = "linear_solver"
118
+
119
+
120
+ @register_type(LINEAR_SOLVER)
121
+ class LinearSolver(AbstractSolver):
122
+ """
123
+ Implementation of the :class:`~.AbstractSolver` class for linear problems.
124
+ """
125
+
126
+ def solve(
127
+ self,
128
+ state: State,
129
+ system: EqSystem,
130
+ magnitudes: dict[str, float] | None = None,
131
+ ) -> Solution:
132
+ """
133
+ Solve the equation system directly
134
+
135
+ :return: the solution
136
+ :rtype: Solution
137
+ """
138
+ res = system.compute_residual()
139
+ grad = system.compute_gradient()
140
+
141
+ xn = np.linalg.solve(grad, res)
142
+ x = state.state_vector - xn
143
+
144
+ return Solution(x, True)
145
+
146
+
117
147
  # Type id for the Newton Solver
118
148
  NEWTON_SOLVER_TYPE_ID = "newton_solver"
119
149
 
@@ -28,9 +28,10 @@ from unittest.mock import Mock, patch
28
28
 
29
29
  import numpy as np
30
30
  import pytest
31
+ from numpy.linalg import LinAlgError
31
32
 
32
33
  from physioblocks.computing.assembling import EqSystem
33
- from physioblocks.simulation.solvers import AbstractSolver, NewtonSolver
34
+ from physioblocks.simulation.solvers import AbstractSolver, LinearSolver, NewtonSolver
34
35
  from physioblocks.simulation.state import State
35
36
 
36
37
 
@@ -68,6 +69,12 @@ def mock_gradient():
68
69
  )
69
70
 
70
71
 
72
+ def mock_singular_gradient():
73
+ return np.array(
74
+ [[0, 0], [0, 0]],
75
+ )
76
+
77
+
71
78
  @pytest.fixture
72
79
  def system() -> EqSystem:
73
80
  return EqSystem(2)
@@ -94,6 +101,31 @@ class TestAbstractSolver:
94
101
  assert solver_mag.tolerance == pytest.approx(1e-12)
95
102
 
96
103
 
104
+ class TestLinearSolver:
105
+ @patch.multiple(
106
+ EqSystem,
107
+ compute_residual=Mock(return_value=mock_residual_converge()),
108
+ compute_gradient=Mock(return_value=mock_gradient()),
109
+ )
110
+ def test_run(self, state, system):
111
+ solver = LinearSolver()
112
+ sol = solver.solve(state, system)
113
+
114
+ assert sol.converged is True
115
+ assert sol.x == pytest.approx([0, 0])
116
+
117
+ @patch.multiple(
118
+ EqSystem,
119
+ compute_residual=Mock(return_value=mock_residual_converge()),
120
+ compute_gradient=Mock(return_value=mock_singular_gradient()),
121
+ )
122
+ def test_singular_matrix(self, state, system):
123
+ solver = LinearSolver()
124
+
125
+ with pytest.raises(LinAlgError):
126
+ solver.solve(state, system)
127
+
128
+
97
129
  class TestNewtonSolver:
98
130
  @patch.multiple(
99
131
  EqSystem,
File without changes
File without changes
File without changes
File without changes
File without changes