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.
- {fibernet-4.0.2 → fibernet-4.0.3}/CHANGELOG.md +16 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/PKG-INFO +3 -3
- {fibernet-4.0.2 → fibernet-4.0.3}/README.md +2 -2
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/__init__.py +1 -1
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/accelerated.py +49 -18
- {fibernet-4.0.2 → fibernet-4.0.3}/pyproject.toml +1 -1
- {fibernet-4.0.2 → fibernet-4.0.3}/CONTRIBUTING.md +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/LICENSE +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/MANIFEST.in +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/docs/api/index.rst +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/docs/changelog.rst +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/docs/conf.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/docs/contributing.rst +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/docs/getting_started.rst +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/docs/index.rst +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/docs/quickstart.rst +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/docs/tutorials.rst +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/examples/01_mechanical_analysis.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/examples/02_structure_comparison.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/examples/03_thermal_analysis.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/examples/04_buckling_analysis.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/examples/05_chiral_braided_structures.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/examples/06_uncertainty_quantification.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/examples/07_electromagnetic_analysis.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/examples/08_fatigue_analysis.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/examples/09_creep_analysis.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/examples/10_diffusion_transport.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/examples/11_parameter_sweep.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/examples/12_topology_analysis.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/examples/13_publication_workflow.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/examples/14_advanced_analysis.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/examples/15_ml_property_prediction.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/examples/16_fiber_bundles.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/examples/17_composite_laminates.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/examples/18_pyvista_visualization.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/examples/19_optimization.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/examples/__init__.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/examples/advanced_generators.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/examples/comprehensive_demo.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/examples/full_workflow.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/examples/integration_examples.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/examples/ml_example.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/examples/nonlinear_mechanics.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/examples/research_case_study.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/examples/transformations.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/analysis/__init__.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/analysis/_archived/advanced.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/analysis/_archived/comparison.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/analysis/_archived/homogenization.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/analysis/_archived/morphology.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/analysis/_archived/networkx_integration.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/analysis/_archived/percolation.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/analysis/_archived/properties.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/analysis/_archived/spatial.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/analysis/_archived/statistics.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/analysis/_archived/stress_strain.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/analysis/_archived/topology.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/analysis/graph_features.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/analysis/graph_features_3d.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/api.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/core/__init__.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/core/copy_utils.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/core/crosslinks.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/core/fiber.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/core/material.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/core/network.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/core/pbc.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/core/structure_graph.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/core/tiling.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/core/transform.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/core/transforms.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/doe.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/easy.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/examples/__init__.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/examples/basic_usage.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/__init__.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/_fixes.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/_graph_builder.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/advanced.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/bundles.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/chiral.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/curved.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/disordered.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/field_guided.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/fractal.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/gradient.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/hierarchical.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/laminates.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/metamaterials.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/ordered.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/pattern.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/regular.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/specialized.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/tpms.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/unified.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/variants.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/woven.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/gen/zigzag.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/graph/__init__.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/graph/io.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/graph/weld.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/integrations/__init__.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/integrations/lammps_integration.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/integrations/mdanalysis_integration.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/integrations/networkx_integration.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/integrations/ovito_integration.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/io/__init__.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/io/fea_export.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/io/gmsh.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/io/lammps.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/io/mesh_export.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/io/pandas_io.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/io/pdb.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/io/vtk.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/io/xyz.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/materials.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/ml/__init__.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/ml/_archived/dataset.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/ml/_archived/dataset_v2.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/ml/_archived/graph_neural_network.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/ml/_archived/predictor.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/ml/features.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/ml/utils.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/py.typed +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/pyvista_viz.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/rl/__init__.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/rl/parametric.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/rl/utils.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/scripts/validate_3d_units.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/scripts/validate_3d_v2.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/__init__.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/acoustic.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/buckling_analysis.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/coupled.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/coupling.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/creep.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/cte.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/damage.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/diffusion.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/dma.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/dynamics.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/electromagnetic.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/fatigue.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/fluid.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/fracture.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/fracture_mechanics.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/incremental_fem.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/mechanical.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/molecular_dynamics.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/multiscale.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/nonlinear.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/optimization.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/periodic.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/permeability.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/rheology.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/rl_environment.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/thermal.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/uncertainty.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/validation.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived/viscoelastic.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived_fem/__init__.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_archived_fem/taichi_fem.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/_fem_archive.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/fem.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/sim/rl_env.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/trimesh_integration.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/units.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/utils/__init__.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/utils/batch.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/utils/config.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/utils/ensemble.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/utils/exceptions.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/utils/geometry.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/utils/io.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/utils/parametric.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/utils/units.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/utils/validation.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/version.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/visualization.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/viz/__init__.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/viz/advanced.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/viz/animate.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/viz/graph_plot.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/viz/plot2d.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/viz/plotly_viz.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/viz/render.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/viz/render3d.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/viz/renderer.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/viz/showcase.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/viz/showcase_renderer.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet/viz/visualization.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/fibernet.egg-info/SOURCES.txt +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/requirements-dev.txt +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/requirements.txt +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/setup.cfg +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_accelerated.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_acoustic.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_advanced.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_advanced_statistics.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_api.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_benchmark.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_buckling_analysis.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_bundles.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_comparison.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_copy.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_coupled.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_creep.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_cte.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_curved.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_damage.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_diffusion.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_dma.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_dynamics.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_edge_cases.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_effective_properties.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_electromagnetic.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_ensemble.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_fatigue.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_fea_export.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_field_guided.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_fluid_acoustic.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_fractal.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_fracture_mechanics.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_generators.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_gnn.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_gradient.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_graph_api.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_graph_neural_network.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_homogenization.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_incremental_fem.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_integration.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_integration_v3.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_integrations.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_io.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_laminates.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_mesh_export.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_metamaterial_workflow.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_metamaterials.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_ml.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_molecular_dynamics.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_multiscale.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_nonlinear.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_optimization.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_pandas_io.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_parametric.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_pbc.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_percolation.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_periodic.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_permeability.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_pyvista.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_rl_environment.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_simulation.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_specialized.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_stress_strain.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_taichi_fem.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_topology.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_tpms.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_transforms.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_trimesh.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_uncertainty.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_validation.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_viscoelastic.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/_archived/test_visualization.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/conftest.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/test_3d_units.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/test_config.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/test_core.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/test_crosslinks.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/test_doe.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/test_materials.py +0 -0
- {fibernet-4.0.2 → fibernet-4.0.3}/tests/test_ml_rl_utils.py +0 -0
- {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.
|
|
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
|
-
[](https://pypi.org/project/fibernet/4.0.
|
|
89
|
+
[](https://pypi.org/project/fibernet/4.0.3/)
|
|
90
90
|
[](https://www.python.org/)
|
|
91
91
|
[](LICENSE)
|
|
92
92
|
[](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.
|
|
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
|
-
[](https://pypi.org/project/fibernet/4.0.
|
|
10
|
+
[](https://pypi.org/project/fibernet/4.0.3/)
|
|
11
11
|
[](https://www.python.org/)
|
|
12
12
|
[](LICENSE)
|
|
13
13
|
[](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.
|
|
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.
|
|
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 (
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
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.
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|