fibernet 4.0.2__tar.gz → 4.0.3__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 (272) hide show
  1. {fibernet-4.0.2 → fibernet-4.0.3}/CHANGELOG.md +16 -0
  2. {fibernet-4.0.2 → fibernet-4.0.3}/PKG-INFO +3 -3
  3. {fibernet-4.0.2 → fibernet-4.0.3}/README.md +2 -2
  4. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/__init__.py +1 -1
  5. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/accelerated.py +49 -18
  6. {fibernet-4.0.2 → fibernet-4.0.3}/pyproject.toml +1 -1
  7. {fibernet-4.0.2 → fibernet-4.0.3}/CONTRIBUTING.md +0 -0
  8. {fibernet-4.0.2 → fibernet-4.0.3}/LICENSE +0 -0
  9. {fibernet-4.0.2 → fibernet-4.0.3}/MANIFEST.in +0 -0
  10. {fibernet-4.0.2 → fibernet-4.0.3}/docs/api/index.rst +0 -0
  11. {fibernet-4.0.2 → fibernet-4.0.3}/docs/changelog.rst +0 -0
  12. {fibernet-4.0.2 → fibernet-4.0.3}/docs/conf.py +0 -0
  13. {fibernet-4.0.2 → fibernet-4.0.3}/docs/contributing.rst +0 -0
  14. {fibernet-4.0.2 → fibernet-4.0.3}/docs/getting_started.rst +0 -0
  15. {fibernet-4.0.2 → fibernet-4.0.3}/docs/index.rst +0 -0
  16. {fibernet-4.0.2 → fibernet-4.0.3}/docs/quickstart.rst +0 -0
  17. {fibernet-4.0.2 → fibernet-4.0.3}/docs/tutorials.rst +0 -0
  18. {fibernet-4.0.2 → fibernet-4.0.3}/examples/01_mechanical_analysis.py +0 -0
  19. {fibernet-4.0.2 → fibernet-4.0.3}/examples/02_structure_comparison.py +0 -0
  20. {fibernet-4.0.2 → fibernet-4.0.3}/examples/03_thermal_analysis.py +0 -0
  21. {fibernet-4.0.2 → fibernet-4.0.3}/examples/04_buckling_analysis.py +0 -0
  22. {fibernet-4.0.2 → fibernet-4.0.3}/examples/05_chiral_braided_structures.py +0 -0
  23. {fibernet-4.0.2 → fibernet-4.0.3}/examples/06_uncertainty_quantification.py +0 -0
  24. {fibernet-4.0.2 → fibernet-4.0.3}/examples/07_electromagnetic_analysis.py +0 -0
  25. {fibernet-4.0.2 → fibernet-4.0.3}/examples/08_fatigue_analysis.py +0 -0
  26. {fibernet-4.0.2 → fibernet-4.0.3}/examples/09_creep_analysis.py +0 -0
  27. {fibernet-4.0.2 → fibernet-4.0.3}/examples/10_diffusion_transport.py +0 -0
  28. {fibernet-4.0.2 → fibernet-4.0.3}/examples/11_parameter_sweep.py +0 -0
  29. {fibernet-4.0.2 → fibernet-4.0.3}/examples/12_topology_analysis.py +0 -0
  30. {fibernet-4.0.2 → fibernet-4.0.3}/examples/13_publication_workflow.py +0 -0
  31. {fibernet-4.0.2 → fibernet-4.0.3}/examples/14_advanced_analysis.py +0 -0
  32. {fibernet-4.0.2 → fibernet-4.0.3}/examples/15_ml_property_prediction.py +0 -0
  33. {fibernet-4.0.2 → fibernet-4.0.3}/examples/16_fiber_bundles.py +0 -0
  34. {fibernet-4.0.2 → fibernet-4.0.3}/examples/17_composite_laminates.py +0 -0
  35. {fibernet-4.0.2 → fibernet-4.0.3}/examples/18_pyvista_visualization.py +0 -0
  36. {fibernet-4.0.2 → fibernet-4.0.3}/examples/19_optimization.py +0 -0
  37. {fibernet-4.0.2 → fibernet-4.0.3}/examples/__init__.py +0 -0
  38. {fibernet-4.0.2 → fibernet-4.0.3}/examples/advanced_generators.py +0 -0
  39. {fibernet-4.0.2 → fibernet-4.0.3}/examples/comprehensive_demo.py +0 -0
  40. {fibernet-4.0.2 → fibernet-4.0.3}/examples/full_workflow.py +0 -0
  41. {fibernet-4.0.2 → fibernet-4.0.3}/examples/integration_examples.py +0 -0
  42. {fibernet-4.0.2 → fibernet-4.0.3}/examples/ml_example.py +0 -0
  43. {fibernet-4.0.2 → fibernet-4.0.3}/examples/nonlinear_mechanics.py +0 -0
  44. {fibernet-4.0.2 → fibernet-4.0.3}/examples/research_case_study.py +0 -0
  45. {fibernet-4.0.2 → fibernet-4.0.3}/examples/transformations.py +0 -0
  46. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/analysis/__init__.py +0 -0
  47. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/analysis/_archived/advanced.py +0 -0
  48. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/analysis/_archived/comparison.py +0 -0
  49. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/analysis/_archived/homogenization.py +0 -0
  50. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/analysis/_archived/morphology.py +0 -0
  51. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/analysis/_archived/networkx_integration.py +0 -0
  52. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/analysis/_archived/percolation.py +0 -0
  53. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/analysis/_archived/properties.py +0 -0
  54. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/analysis/_archived/spatial.py +0 -0
  55. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/analysis/_archived/statistics.py +0 -0
  56. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/analysis/_archived/stress_strain.py +0 -0
  57. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/analysis/_archived/topology.py +0 -0
  58. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/analysis/graph_features.py +0 -0
  59. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/analysis/graph_features_3d.py +0 -0
  60. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/api.py +0 -0
  61. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/core/__init__.py +0 -0
  62. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/core/copy_utils.py +0 -0
  63. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/core/crosslinks.py +0 -0
  64. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/core/fiber.py +0 -0
  65. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/core/material.py +0 -0
  66. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/core/network.py +0 -0
  67. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/core/pbc.py +0 -0
  68. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/core/structure_graph.py +0 -0
  69. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/core/tiling.py +0 -0
  70. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/core/transform.py +0 -0
  71. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/core/transforms.py +0 -0
  72. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/doe.py +0 -0
  73. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/easy.py +0 -0
  74. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/examples/__init__.py +0 -0
  75. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/examples/basic_usage.py +0 -0
  76. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/__init__.py +0 -0
  77. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/_fixes.py +0 -0
  78. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/_graph_builder.py +0 -0
  79. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/advanced.py +0 -0
  80. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/bundles.py +0 -0
  81. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/chiral.py +0 -0
  82. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/curved.py +0 -0
  83. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/disordered.py +0 -0
  84. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/field_guided.py +0 -0
  85. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/fractal.py +0 -0
  86. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/gradient.py +0 -0
  87. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/hierarchical.py +0 -0
  88. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/laminates.py +0 -0
  89. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/metamaterials.py +0 -0
  90. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/ordered.py +0 -0
  91. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/pattern.py +0 -0
  92. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/regular.py +0 -0
  93. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/specialized.py +0 -0
  94. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/tpms.py +0 -0
  95. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/unified.py +0 -0
  96. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/variants.py +0 -0
  97. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/woven.py +0 -0
  98. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/zigzag.py +0 -0
  99. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/graph/__init__.py +0 -0
  100. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/graph/io.py +0 -0
  101. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/graph/weld.py +0 -0
  102. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/integrations/__init__.py +0 -0
  103. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/integrations/lammps_integration.py +0 -0
  104. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/integrations/mdanalysis_integration.py +0 -0
  105. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/integrations/networkx_integration.py +0 -0
  106. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/integrations/ovito_integration.py +0 -0
  107. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/io/__init__.py +0 -0
  108. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/io/fea_export.py +0 -0
  109. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/io/gmsh.py +0 -0
  110. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/io/lammps.py +0 -0
  111. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/io/mesh_export.py +0 -0
  112. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/io/pandas_io.py +0 -0
  113. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/io/pdb.py +0 -0
  114. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/io/vtk.py +0 -0
  115. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/io/xyz.py +0 -0
  116. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/materials.py +0 -0
  117. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/ml/__init__.py +0 -0
  118. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/ml/_archived/dataset.py +0 -0
  119. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/ml/_archived/dataset_v2.py +0 -0
  120. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/ml/_archived/graph_neural_network.py +0 -0
  121. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/ml/_archived/predictor.py +0 -0
  122. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/ml/features.py +0 -0
  123. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/ml/utils.py +0 -0
  124. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/py.typed +0 -0
  125. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/pyvista_viz.py +0 -0
  126. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/rl/__init__.py +0 -0
  127. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/rl/parametric.py +0 -0
  128. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/rl/utils.py +0 -0
  129. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/scripts/validate_3d_units.py +0 -0
  130. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/scripts/validate_3d_v2.py +0 -0
  131. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/__init__.py +0 -0
  132. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/acoustic.py +0 -0
  133. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/buckling_analysis.py +0 -0
  134. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/coupled.py +0 -0
  135. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/coupling.py +0 -0
  136. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/creep.py +0 -0
  137. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/cte.py +0 -0
  138. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/damage.py +0 -0
  139. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/diffusion.py +0 -0
  140. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/dma.py +0 -0
  141. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/dynamics.py +0 -0
  142. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/electromagnetic.py +0 -0
  143. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/fatigue.py +0 -0
  144. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/fluid.py +0 -0
  145. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/fracture.py +0 -0
  146. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/fracture_mechanics.py +0 -0
  147. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/incremental_fem.py +0 -0
  148. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/mechanical.py +0 -0
  149. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/molecular_dynamics.py +0 -0
  150. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/multiscale.py +0 -0
  151. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/nonlinear.py +0 -0
  152. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/optimization.py +0 -0
  153. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/periodic.py +0 -0
  154. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/permeability.py +0 -0
  155. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/rheology.py +0 -0
  156. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/rl_environment.py +0 -0
  157. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/thermal.py +0 -0
  158. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/uncertainty.py +0 -0
  159. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/validation.py +0 -0
  160. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/viscoelastic.py +0 -0
  161. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived_fem/__init__.py +0 -0
  162. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived_fem/taichi_fem.py +0 -0
  163. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_fem_archive.py +0 -0
  164. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/fem.py +0 -0
  165. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/rl_env.py +0 -0
  166. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/trimesh_integration.py +0 -0
  167. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/units.py +0 -0
  168. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/utils/__init__.py +0 -0
  169. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/utils/batch.py +0 -0
  170. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/utils/config.py +0 -0
  171. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/utils/ensemble.py +0 -0
  172. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/utils/exceptions.py +0 -0
  173. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/utils/geometry.py +0 -0
  174. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/utils/io.py +0 -0
  175. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/utils/parametric.py +0 -0
  176. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/utils/units.py +0 -0
  177. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/utils/validation.py +0 -0
  178. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/version.py +0 -0
  179. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/visualization.py +0 -0
  180. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/viz/__init__.py +0 -0
  181. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/viz/advanced.py +0 -0
  182. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/viz/animate.py +0 -0
  183. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/viz/graph_plot.py +0 -0
  184. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/viz/plot2d.py +0 -0
  185. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/viz/plotly_viz.py +0 -0
  186. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/viz/render.py +0 -0
  187. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/viz/render3d.py +0 -0
  188. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/viz/renderer.py +0 -0
  189. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/viz/showcase.py +0 -0
  190. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/viz/showcase_renderer.py +0 -0
  191. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/viz/visualization.py +0 -0
  192. {fibernet-4.0.2 → fibernet-4.0.3}/fibernet.egg-info/SOURCES.txt +0 -0
  193. {fibernet-4.0.2 → fibernet-4.0.3}/requirements-dev.txt +0 -0
  194. {fibernet-4.0.2 → fibernet-4.0.3}/requirements.txt +0 -0
  195. {fibernet-4.0.2 → fibernet-4.0.3}/setup.cfg +0 -0
  196. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_accelerated.py +0 -0
  197. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_acoustic.py +0 -0
  198. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_advanced.py +0 -0
  199. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_advanced_statistics.py +0 -0
  200. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_api.py +0 -0
  201. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_benchmark.py +0 -0
  202. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_buckling_analysis.py +0 -0
  203. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_bundles.py +0 -0
  204. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_comparison.py +0 -0
  205. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_copy.py +0 -0
  206. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_coupled.py +0 -0
  207. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_creep.py +0 -0
  208. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_cte.py +0 -0
  209. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_curved.py +0 -0
  210. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_damage.py +0 -0
  211. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_diffusion.py +0 -0
  212. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_dma.py +0 -0
  213. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_dynamics.py +0 -0
  214. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_edge_cases.py +0 -0
  215. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_effective_properties.py +0 -0
  216. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_electromagnetic.py +0 -0
  217. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_ensemble.py +0 -0
  218. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_fatigue.py +0 -0
  219. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_fea_export.py +0 -0
  220. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_field_guided.py +0 -0
  221. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_fluid_acoustic.py +0 -0
  222. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_fractal.py +0 -0
  223. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_fracture_mechanics.py +0 -0
  224. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_generators.py +0 -0
  225. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_gnn.py +0 -0
  226. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_gradient.py +0 -0
  227. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_graph_api.py +0 -0
  228. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_graph_neural_network.py +0 -0
  229. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_homogenization.py +0 -0
  230. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_incremental_fem.py +0 -0
  231. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_integration.py +0 -0
  232. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_integration_v3.py +0 -0
  233. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_integrations.py +0 -0
  234. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_io.py +0 -0
  235. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_laminates.py +0 -0
  236. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_mesh_export.py +0 -0
  237. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_metamaterial_workflow.py +0 -0
  238. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_metamaterials.py +0 -0
  239. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_ml.py +0 -0
  240. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_molecular_dynamics.py +0 -0
  241. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_multiscale.py +0 -0
  242. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_nonlinear.py +0 -0
  243. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_optimization.py +0 -0
  244. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_pandas_io.py +0 -0
  245. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_parametric.py +0 -0
  246. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_pbc.py +0 -0
  247. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_percolation.py +0 -0
  248. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_periodic.py +0 -0
  249. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_permeability.py +0 -0
  250. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_pyvista.py +0 -0
  251. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_rl_environment.py +0 -0
  252. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_simulation.py +0 -0
  253. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_specialized.py +0 -0
  254. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_stress_strain.py +0 -0
  255. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_taichi_fem.py +0 -0
  256. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_topology.py +0 -0
  257. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_tpms.py +0 -0
  258. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_transforms.py +0 -0
  259. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_trimesh.py +0 -0
  260. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_uncertainty.py +0 -0
  261. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_validation.py +0 -0
  262. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_viscoelastic.py +0 -0
  263. {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_visualization.py +0 -0
  264. {fibernet-4.0.2 → fibernet-4.0.3}/tests/conftest.py +0 -0
  265. {fibernet-4.0.2 → fibernet-4.0.3}/tests/test_3d_units.py +0 -0
  266. {fibernet-4.0.2 → fibernet-4.0.3}/tests/test_config.py +0 -0
  267. {fibernet-4.0.2 → fibernet-4.0.3}/tests/test_core.py +0 -0
  268. {fibernet-4.0.2 → fibernet-4.0.3}/tests/test_crosslinks.py +0 -0
  269. {fibernet-4.0.2 → fibernet-4.0.3}/tests/test_doe.py +0 -0
  270. {fibernet-4.0.2 → fibernet-4.0.3}/tests/test_materials.py +0 -0
  271. {fibernet-4.0.2 → fibernet-4.0.3}/tests/test_ml_rl_utils.py +0 -0
  272. {fibernet-4.0.2 → fibernet-4.0.3}/tests/test_units.py +0 -0
@@ -1,3 +1,19 @@
1
+ ## [4.0.3] - 2026-07-17
2
+
3
+ ### Fixed
4
+ - **Critical: Taichi SNode exhaustion causing simulation hang at ~128 structures**
5
+ - Added `_field_cache` to `TaichiEngine` class
6
+ - Reuses Taichi fields across calls with same `(dim, num_nodes, num_edges)`
7
+ - Before: Each `dynamics()` call allocated 14 Taichi fields → SNode limit (~1024) hit at ~128 calls → process hangs indefinitely
8
+ - After: Fields cached and reused → tested 150+ structures without hang
9
+ - Memory usage reduced significantly (no field accumulation)
10
+
11
+ ### Technical Details
12
+ - File: `fibernet/sim/accelerated.py`
13
+ - Change: Added class-level `_field_cache` dict keyed by `(dim, num_nodes, num_edges)`
14
+ - Impact: Fixes critical hang bug, improves memory efficiency
15
+ - Test: Successfully ran 150 structures sequentially (previously hung at #128)
16
+
1
17
  ## [4.0.2] - 2026-07-16
2
18
 
3
19
  ### Performance
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fibernet
3
- Version: 4.0.2
3
+ Version: 4.0.3
4
4
  Summary: A comprehensive fiber network generation, simulation, and ML toolkit for materials science research
5
5
  Author: FiberNet Contributors
6
6
  License-Expression: MIT
@@ -86,7 +86,7 @@ Dynamic: license-file
86
86
 
87
87
  ---
88
88
 
89
- [![PyPI version](https://img.shields.io/pypi/v/fibernet.svg?logo=pypi&logoColor=white&label=PyPI)](https://pypi.org/project/fibernet/4.0.2/)
89
+ [![PyPI version](https://img.shields.io/pypi/v/fibernet.svg?logo=pypi&logoColor=white&label=PyPI)](https://pypi.org/project/fibernet/4.0.3/)
90
90
  [![Python](https://img.shields.io/badge/Python-3.9%2B-blue?logo=python&logoColor=white)](https://www.python.org/)
91
91
  [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
92
92
  [![Downloads](https://img.shields.io/pypi/dm/fibernet.svg?label=Downloads&color=brightgreen)](https://pypi.org/project/fibernet/)
@@ -626,4 +626,4 @@ python3 tutorials/v4_tutorial/test_pipeline.py --full
626
626
 
627
627
  ---
628
628
 
629
- *FiberNet v4.0.0 | [PyPI](https://pypi.org/project/fibernet/4.0.2/) | [GitHub](https://github.com/GellmanSparrowS/fibernet)*
629
+ *FiberNet v4.0.0 | [PyPI](https://pypi.org/project/fibernet/4.0.3/) | [GitHub](https://github.com/GellmanSparrowS/fibernet)*
@@ -7,7 +7,7 @@
7
7
 
8
8
  ---
9
9
 
10
- [![PyPI version](https://img.shields.io/pypi/v/fibernet.svg?logo=pypi&logoColor=white&label=PyPI)](https://pypi.org/project/fibernet/4.0.2/)
10
+ [![PyPI version](https://img.shields.io/pypi/v/fibernet.svg?logo=pypi&logoColor=white&label=PyPI)](https://pypi.org/project/fibernet/4.0.3/)
11
11
  [![Python](https://img.shields.io/badge/Python-3.9%2B-blue?logo=python&logoColor=white)](https://www.python.org/)
12
12
  [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
13
13
  [![Downloads](https://img.shields.io/pypi/dm/fibernet.svg?label=Downloads&color=brightgreen)](https://pypi.org/project/fibernet/)
@@ -547,4 +547,4 @@ python3 tutorials/v4_tutorial/test_pipeline.py --full
547
547
 
548
548
  ---
549
549
 
550
- *FiberNet v4.0.0 | [PyPI](https://pypi.org/project/fibernet/4.0.2/) | [GitHub](https://github.com/GellmanSparrowS/fibernet)*
550
+ *FiberNet v4.0.0 | [PyPI](https://pypi.org/project/fibernet/4.0.3/) | [GitHub](https://github.com/GellmanSparrowS/fibernet)*
@@ -33,7 +33,7 @@ Parametric Structure Generation (for RL)
33
33
  >>> internal = g.get_internal_nodes() # Nodes available for RL actions
34
34
  """
35
35
 
36
- __version__ = "4.0.2"
36
+ __version__ = "4.0.3"
37
37
 
38
38
  # --- Core ---
39
39
  from fibernet.core.structure_graph import StructureGraph, SNode, SEdge
@@ -266,6 +266,10 @@ class TaichiEngine:
266
266
  Explicit Verlet integration with damping.
267
267
  """
268
268
 
269
+ # Cache Taichi fields and kernels to avoid SNode exhaustion
270
+ # Key: (dim, num_nodes, num_edges)
271
+ _field_cache = {}
272
+
269
273
  def __init__(self, arch: str = "cpu", num_threads: int = 4):
270
274
  _ensure_taichi(arch, num_threads)
271
275
 
@@ -395,16 +399,51 @@ class TaichiEngine:
395
399
  else:
396
400
  stiff_np = np.full(num_edges, stiffness)
397
401
 
398
- # Taichi fields (allocated once)
399
- ti_pos = ti.Vector.field(dim, dtype=ti.f64, shape=num_nodes)
400
- ti_vel = ti.Vector.field(dim, dtype=ti.f64, shape=num_nodes)
401
- ti_edges = ti.Vector.field(2, dtype=ti.i32, shape=num_edges)
402
- ti_L0 = ti.field(dtype=ti.f64, shape=num_edges)
403
- ti_k = ti.field(dtype=ti.f64, shape=num_edges)
404
- ti_fixed = ti.field(dtype=ti.i32, shape=num_nodes)
405
- ti_ext = ti.Vector.field(dim, dtype=ti.f64, shape=num_nodes)
406
- ti_pos0 = ti.Vector.field(dim, dtype=ti.f64, shape=num_nodes)
407
-
402
+ # Taichi fields (cached to avoid SNode exhaustion)
403
+ cache_key = (dim, num_nodes, num_edges)
404
+ if cache_key not in TaichiEngine._field_cache:
405
+ # Allocate fields once
406
+ ti_pos = ti.Vector.field(dim, dtype=ti.f64, shape=num_nodes)
407
+ ti_vel = ti.Vector.field(dim, dtype=ti.f64, shape=num_nodes)
408
+ ti_edges = ti.Vector.field(2, dtype=ti.i32, shape=num_edges)
409
+ ti_L0 = ti.field(dtype=ti.f64, shape=num_edges)
410
+ ti_k = ti.field(dtype=ti.f64, shape=num_edges)
411
+ ti_fixed = ti.field(dtype=ti.i32, shape=num_nodes)
412
+ ti_ext = ti.Vector.field(dim, dtype=ti.f64, shape=num_nodes)
413
+ ti_pos0 = ti.Vector.field(dim, dtype=ti.f64, shape=num_nodes)
414
+ ti_sched = ti.Vector.field(dim, dtype=ti.f64, shape=num_nodes)
415
+ ti_sched_mask = ti.field(dtype=ti.i32, shape=num_nodes)
416
+ ti_dt = ti.field(dtype=ti.f64, shape=())
417
+ ti_dashpot = ti.field(dtype=ti.f64, shape=())
418
+ ti_drag = ti.field(dtype=ti.f64, shape=())
419
+ ti_ramp = ti.field(dtype=ti.f64, shape=())
420
+
421
+ TaichiEngine._field_cache[cache_key] = {
422
+ 'ti_pos': ti_pos, 'ti_vel': ti_vel, 'ti_edges': ti_edges,
423
+ 'ti_L0': ti_L0, 'ti_k': ti_k, 'ti_fixed': ti_fixed,
424
+ 'ti_ext': ti_ext, 'ti_pos0': ti_pos0, 'ti_sched': ti_sched,
425
+ 'ti_sched_mask': ti_sched_mask, 'ti_dt': ti_dt,
426
+ 'ti_dashpot': ti_dashpot, 'ti_drag': ti_drag, 'ti_ramp': ti_ramp,
427
+ }
428
+ else:
429
+ # Reuse cached fields
430
+ cached = TaichiEngine._field_cache[cache_key]
431
+ ti_pos = cached['ti_pos']
432
+ ti_vel = cached['ti_vel']
433
+ ti_edges = cached['ti_edges']
434
+ ti_L0 = cached['ti_L0']
435
+ ti_k = cached['ti_k']
436
+ ti_fixed = cached['ti_fixed']
437
+ ti_ext = cached['ti_ext']
438
+ ti_pos0 = cached['ti_pos0']
439
+ ti_sched = cached['ti_sched']
440
+ ti_sched_mask = cached['ti_sched_mask']
441
+ ti_dt = cached['ti_dt']
442
+ ti_dashpot = cached['ti_dashpot']
443
+ ti_drag = cached['ti_drag']
444
+ ti_ramp = cached['ti_ramp']
445
+
446
+ # Reset field data (always, even on cache hit)
408
447
  ti_pos0.from_numpy(pos_orig.astype(np.float64))
409
448
  ti_pos.from_numpy(pos_orig.astype(np.float64))
410
449
  ti_vel.from_numpy(np.zeros_like(pos_orig))
@@ -430,17 +469,9 @@ class TaichiEngine:
430
469
  sched_mask = np.zeros(num_nodes, dtype=np.int32)
431
470
  for ni in schedule_nodes:
432
471
  sched_mask[ni] = 1
433
- ti_sched = ti.Vector.field(dim, dtype=ti.f64, shape=num_nodes)
434
472
  ti_sched.from_numpy(schedule_targets.astype(np.float64))
435
- ti_sched_mask = ti.field(dtype=ti.i32, shape=num_nodes)
436
473
  ti_sched_mask.from_numpy(sched_mask)
437
474
 
438
- # Parameter fields
439
- ti_dt = ti.field(dtype=ti.f64, shape=())
440
- ti_dashpot = ti.field(dtype=ti.f64, shape=())
441
- ti_drag = ti.field(dtype=ti.f64, shape=())
442
- ti_ramp = ti.field(dtype=ti.f64, shape=())
443
-
444
475
  @ti.kernel
445
476
  def substep():
446
477
  _dt = ti_dt[None]
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "fibernet"
7
- version = "4.0.2"
7
+ version = "4.0.3"
8
8
  description = "A comprehensive fiber network generation, simulation, and ML toolkit for materials science research"
9
9
  readme = "README.md"
10
10
  license = "MIT"
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