Skip to main content

A comprehensive fiber network generation, simulation, and ML toolkit for materials science research

Project description

๐Ÿงฌ FiberNet

Research-Grade Python Toolkit for Fiber Network Design & Optimization

้ขๅ‘ๆๆ–™็ง‘ๅญฆ็š„็บค็ปด็ฝ‘็ปœ็ป“ๆž„็”Ÿๆˆใ€ๆจกๆ‹ŸไธŽๆ™บ่ƒฝไผ˜ๅŒ–ๅทฅๅ…ทๅŒ…


PyPI version Python License: MIT CI Downloads Docs DOI

Installation ยท Quick Start ยท Features ยท Tutorials ยท Documentation ยท Examples

Developed by ML-BioMat Lab @ BMG-FDU


๐Ÿ“– Overview

FiberNet is a comprehensive Python toolkit for computational design of fiber network structures โ€” from simple random deposition to architectured metamaterials. It provides a complete workflow from structure generation to mechanical simulation and intelligent optimization.

โœจ Core Capabilities

  • 80+ Network Generators spanning 15 architecture families, including field-guided synthesis for biomimetic alignment patterns
  • Custom FEM Solver (Euler-Bernoulli beam theory, built on NumPy + SciPy, no external FEM dependencies)
  • Reinforcement Learning environments for inverse design and multi-objective optimization
  • 94-D Feature Extraction for structure-property analysis
  • 22+ Physics Modules โ€” mechanics, dynamics, fracture, thermal, electromagnetic, fluid, acoustic
  • Gibson-Ashby Validation โ€” analytical benchmarks for cellular solid models
  • TPMS Support โ€” Triply Periodic Minimal Surface lattice generation
  • Optional GPU Acceleration via Taichi

๐Ÿš€ Installation

Option 1: Install from PyPI (Recommended)

# Standard installation (core functionality)
pip install fibernet

# Full installation with all optional dependencies
pip install fibernet[full]

Option 2: Install from GitHub

pip install git+https://github.com/GellmanSparrowS/fibernet.git

# With full dependencies
pip install "fibernet[full] @ git+https://github.com/GellmanSparrowS/fibernet.git"

Option 3: Development Installation

git clone https://github.com/GellmanSparrowS/fibernet.git
cd fibernet
pip install -e ".[dev,full]"

Optional Dependency Groups

Group Description Install Command
viz PyVista 3D + matplotlib 2D visualization pip install fibernet[viz]
mesh Trimesh mesh operations pip install fibernet[mesh]
io HDF5 support via h5py pip install fibernet[io]
accel Taichi GPU acceleration pip install fibernet[accel]
ml scikit-learn ML integration pip install fibernet[ml]
graph NetworkX graph analysis pip install fibernet[graph]
rl Gymnasium + stable-baselines3 pip install fibernet[rl]
full All optional dependencies pip install fibernet[full]

โšก Quick Start

Generate โ†’ Analyze โ†’ Simulate

import fibernet as fn
import numpy as np

# 1. Generate a random 2D fiber network
net = fn.create("random_2d", num_fibers=100, fiber_length=10.0,
                box_size=(30, 30), seed=42)

# 2. Analyze structural properties
stats = fn.analyze(net)
print(f"Fibers: {stats['num_fibers']}, Nematic order: {stats['nematic_order']:.3f}")

# 3. Run mechanical simulation (CPU, custom FEM)
from fibernet.sim.mechanical import FiberFEM
fem = FiberFEM(net, segments_per_fiber=5)
E_eff = fem.effective_modulus(strain=0.001)
print(f"Effective modulus: {E_eff:.2e} Pa")

๐ŸŽฏ Field-Guided Network Generation (NEW in v1.25)

Generate biomimetic fiber networks guided by orientation fields:

from fibernet.gen.field_guided import (
    OrientationField, FieldGuidedConfig, field_guided_network
)

# Create radial orientation field
field = OrientationField(canvas_size=512, field_type="radial")

# Generate network following the field
config = FieldGuidedConfig(
    fiber_count=2000,
    field_strength=0.7,
    fiber_length_mean=100.0,
    seed=42
)
net = field_guided_network(config=config, field=field, box_size=(50, 50))

print(f"Generated {len(net.fibers)} fibers with field-guided alignment")

๐Ÿ”„ Reinforcement Learning for Inverse Design (NEW in v1.25)

Use RL to find optimal structures with target properties:

from fibernet.sim.rl_environment import FiberNetworkEnv, RLEnvConfig

# Create RL environment
env = FiberNetworkEnv(RLEnvConfig(
    target_modulus=1e7,      # Target: 10 MPa
    target_poisson=-0.3,     # Target: auxetic
    generator_type="reentrant"
))

# Run optimization
obs, info = env.reset()
best_reward = -np.inf
best_params = None

for step in range(50):
    action = env.action_space.sample()  # or use your RL algorithm
    obs, reward, done, info = env.step(action)
    
    if reward > best_reward:
        best_reward = reward
        best_params = info['params']
    
    if done:
        break

print(f"Best: E={info['modulus']:.2e} Pa, ฮฝ={info['poisson']:.3f}")

๐Ÿ“Š 94-D Feature Extraction

Extract comprehensive structural features for ML:

from fibernet.analysis.graph_features import GraphFeatureExtractor

extractor = GraphFeatureExtractor(canvas_size=512)
features = extractor.extract(net)

print(f"Extracted {len(features)} features:")
print(f"  Nodes: {features['n_node']}, Edges: {features['n_edge']}")
print(f"  Anisotropy: {features['anisotropy']:.3f}")
print(f"  Nematic order: {features.get('nematic_order', 0):.3f}")

๐Ÿ—๏ธ Complete Closed-Loop Pipeline

FiberNet enables a complete generative โ†’ predictive โ†’ optimization workflow:

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  1. STRUCTURE GENERATION                                     โ”‚
โ”‚  โ€ข 80+ generators (random, ordered, chiral, woven, TPMS)    โ”‚
โ”‚  โ€ข Field-guided synthesis for biomimetic patterns           โ”‚
โ”‚  โ€ข Hierarchical and metamaterial architectures              โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                     โ”‚
                     โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  2. MECHANICAL SIMULATION (Custom FEM)                       โ”‚
โ”‚  โ€ข Euler-Bernoulli beam elements (12 DOF/element)           โ”‚
โ”‚  โ€ข scipy.sparse + SuperLU direct solver                     โ”‚
โ”‚  โ€ข Linear, nonlinear, hyperelastic, plasticity models       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                     โ”‚
                     โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  3. FEATURE EXTRACTION & ML                                  โ”‚
โ”‚  โ€ข 94-dimensional structural features                       โ”‚
โ”‚  โ€ข Train surrogate models (RF, GBM, MLP, GNN)              โ”‚
โ”‚  โ€ข Rapid property prediction (microseconds vs seconds)      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                     โ”‚
                     โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  4. REINFORCEMENT LEARNING OPTIMIZATION                      โ”‚
โ”‚  โ€ข RL agent proposes new structural parameters              โ”‚
โ”‚  โ€ข ML surrogate provides instant reward feedback            โ”‚
โ”‚  โ€ข Multi-objective optimization (stiffness + auxetic)       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                     โ”‚
                     โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  5. VALIDATION                                               โ”‚
โ”‚  โ€ข Gibson-Ashby scaling laws                                โ”‚
โ”‚  โ€ข Cantilever beam analytical solutions                     โ”‚
โ”‚  โ€ข FEM verification of RL-optimized designs                 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐ŸŽจ Key Features

Category Capabilities
Generators 80+ across 15 families: random, ordered, chiral, woven, hierarchical, TPMS (gyroid, diamond, primitive), bundles, curved, laminates, fractal, gradient, biomimetic, CNT, field-guided
FEM Solver Custom Euler-Bernoulli 3D beam elements (12 DOF/element), sparse direct solver (SuperLU), Tikhonov regularization, h-refinement convergence
Mechanics Linear elastic, nonlinear (Newton-Raphson), hyperelastic (Neo-Hookean, Mooney-Rivlin), plasticity, viscoelasticity, damage/fatigue, fracture (LEFM, cohesive zone)
Reinforcement Learning Gymnasium-compatible environments, multi-objective optimization, stable-baselines3 support (PPO/SAC/TD3)
Feature Extraction 94-dimensional vector: 34 structural, 18 pore, 42 contact features
Validation Gibson-Ashby benchmarks, cantilever analytical solutions, patch tests, convergence studies
Multi-Physics Thermal, electromagnetic, acoustic, fluid (Darcy flow), rheology, DMA, diffusion, coupled fields, buckling
Analysis Morphology, topology, spectral, percolation, pore structure, homogenization, anisotropy, effective properties
ML Feature extraction (30+), GNN models, property prediction, dataset generation
I/O JSON, YAML, LAMMPS, VTK, GMSH, PDB, XYZ, HDF5, pandas DataFrames
Visualization PyVista 3D interactive, matplotlib 2D, Plotly web, animations
Acceleration Taichi CPU/GPU parallel FEM (optional)

๐Ÿ“š Tutorials

Complete Jupyter notebooks demonstrating the full workflow:

Tutorial Description Key Topics
01_getting_started.ipynb Installation, core concepts, basic workflow FiberNetwork, Material, basic analysis
02_mechanical_simulation.ipynb FEM mechanics, stress-strain, effective properties FiberFEM, constitutive models, validation
03_machine_learning.ipynb Feature extraction, GNN, property prediction Graph features, RF/GBM/MLP, GNN
metamaterial_design.ipynb Complete pipeline with RL Structure generation โ†’ FEM โ†’ ML โ†’ RL optimization โ†’ Validation
04_reinforcement_validation.ipynb TPMS, FEM validation, Gibson-Ashby TPMS lattices, convergence, benchmarks
05_complete_pipeline_rl_validation.ipynb Diverse structures + RL + validation Field-guided, multi-scale, closed-loop

Tutorial Highlights

metamaterial_design.ipynb โ€” The Complete Story

This tutorial walks through the entire closed-loop pipeline:

  1. โœ… Generate 9+ metamaterial structures (auxetic, chiral, star, arrowhead, octet, diamond, hierarchical, woven, braided)
  2. โœ… Visualize with publication-quality matplotlib plots
  3. โœ… Parametric study: Sweep re-entrant angle, compute E*, ฮฝ*, ฯ*
  4. โœ… FEM simulation: Stress-strain curves, deformation visualization
  5. โœ… ML surrogate: Train RF/GBM/MLP models, screen 500 candidates
  6. โœ… Reinforcement Learning: Closed-loop optimization using ML as reward
  7. โœ… Validation: Cantilever beam, Gibson-Ashby scaling, FEM verification

All computations on CPU, no GPU required.


๐Ÿ”ฌ How the Mechanical Simulation Works

FiberNet implements a custom finite element solver โ€” it does not wrap or depend on any existing open-source FEM library (FEniCS, SfePy, PyFEM, etc.).

Technical Highlights

Aspect Implementation
Element type 3D Euler-Bernoulli beam (12 DOF/element: 3 translations + 3 rotations per node)
Stiffness matrix Analytical 12ร—12 local stiffness with coordinate transformation
Sparse solver scipy.sparse.linalg.spsolve (SuperLU direct)
Regularization Tikhonov regularization for near-singular systems
Nonlinear Newton-Raphson iteration with arc-length control
Constitutive models Linear elastic, bilinear plasticity, Neo-Hookean, Mooney-Rivlin, Arruda-Boyce, Maxwell, Kelvin-Voigt
Dependencies Only NumPy + SciPy (no heavy FEM stack)

Mathematical Foundation

Euler-Bernoulli Beam Theory:

ฮด_tip = PLยณ / (3EI)              # Cantilever deflection
E_eff = 2U / (V ยท ฮตยฒ)            # Effective modulus from strain energy

Gibson-Ashby Cellular Solids:

E*/E_s โˆ (ฯ*/ฯ_s)ยณ              # 2D honeycomb (bending-dominated)
E*/E_s โˆ (ฯ*/ฯ_s)ยฒ              # 3D open-cell foam (stretching-dominated)

๐Ÿ“– See docs/fem_implementation.md for full mathematical details.

Validation Results

from fibernet.sim.validation import run_all_validations, print_validation_report

results = run_all_validations(E_solid=1e9)
print(print_validation_report(results))

Benchmark tests:

  • โœ… Cantilever beam vs. Euler-Bernoulli analytical solution (error: 0.00%)
  • โœ… Gibson-Ashby honeycomb scaling (E* โˆ ฯยณ)
  • โœ… Patch test (uniform strain, machine precision)
  • โœ… h-refinement convergence study

๐ŸŽฏ Field-Guided Network Generation (NEW in v1.25)

Generate biomimetic fiber networks guided by orientation fields, inspired by natural fiber alignment patterns (collagen, cellulose, muscle tissue).

Supported Field Types

Field Type Description Use Case
uniform Constant direction everywhere Aligned composites
radial Outward from center Radial symmetry
vortex Circular pattern Torsional structures
gradient Linear variation Functionally graded materials
random_smooth Smoothly varying random field Biomimetic networks

Example: Vortex Pattern

from fibernet.gen.field_guided import (
    OrientationField, FieldGuidedConfig, 
    field_guided_network, multi_scale_orientation_analysis
)
import matplotlib.pyplot as plt

# Create vortex field
field = OrientationField(canvas_size=512, field_type="vortex")

# Visualize field
fig, ax = plt.subplots(figsize=(8, 8))
field.visualize(ax=ax, stride=30, length=20)
plt.show()

# Generate network
config = FieldGuidedConfig(fiber_count=3000, field_strength=0.8, seed=42)
net = field_guided_network(config=config, field=field, box_size=(50, 50))

# Analyze orientation
analysis = multi_scale_orientation_analysis(net)
print(f"Nematic order: {analysis['nematic_order']:.3f}")
print(f"Dominant angle: {np.degrees(analysis['dominant_angle']):.1f}ยฐ")

๐Ÿ”„ Reinforcement Learning for Inverse Design (NEW in v1.25)

Use RL to autonomously discover optimal structures with target mechanical properties.

Closed-Loop Architecture

Generate Structure โ†’ FEM Simulate โ†’ Extract Features โ†’ Train ML Model
      โ†‘                                                          โ†“
      โ””โ”€โ”€ RL Agent proposes new parameters โ† Evaluate with ML โ†โ”€โ”€โ”˜

Gymnasium-Compatible Environment

from fibernet.sim.rl_environment import FiberNetworkEnv, RLEnvConfig

# Define target properties
config = RLEnvConfig(
    target_modulus=5e7,      # 50 MPa
    target_poisson=-0.3,     # Auxetic
    generator_type="reentrant",
    reward_mode="multi_objective"
)

env = FiberNetworkEnv(config)

# Compatible with stable-baselines3
from stable_baselines3 import PPO

model = PPO("MlpPolicy", env, verbose=1)
model.learn(total_timesteps=10000)

# Get optimized design
obs, info = env.reset()
for _ in range(20):
    action, _ = model.predict(obs, deterministic=True)
    obs, reward, done, info = env.step(action)
    if done:
        break

print(f"Optimized: E={info['modulus']:.2e} Pa, ฮฝ={info['poisson']:.3f}")

Supported Generator Types

Generator Parameters Use Case
reentrant angle, grid_x, grid_y, radius Auxetic metamaterials
random num_fibers, fiber_length, radius Random networks
honeycomb grid_x, radius Regular honeycomb
field_guided fiber_count, field_strength, radius Biomimetic patterns

๐Ÿ›๏ธ Architecture

fibernet/
โ”œโ”€โ”€ core/              Fiber, FiberNetwork, Material, Crosslink, PBC, Transform
โ”œโ”€โ”€ gen/               80+ network generators (15 modules)
โ”‚   โ”œโ”€โ”€ ordered.py       Square, triangular, honeycomb, cubic, octet, kagome
โ”‚   โ”œโ”€โ”€ disordered.py    Random deposition, oriented, Poisson disk
โ”‚   โ”œโ”€โ”€ chiral.py        Helix, double helix, braid, twisted bundle
โ”‚   โ”œโ”€โ”€ woven.py         Plain, twill, satin, 3D orthogonal
โ”‚   โ”œโ”€โ”€ hierarchical.py  Bundle, gradient, core-shell, fractal
โ”‚   โ”œโ”€โ”€ metamaterials.py Re-entrant, chiral, star, arrowhead, diamond, gyroid
โ”‚   โ”œโ”€โ”€ tpms.py          Gyroid, Diamond, Primitive, I-WP, Neovius
โ”‚   โ”œโ”€โ”€ bundles.py       Parallel, twisted, braided, tendon
โ”‚   โ”œโ”€โ”€ curved.py        Sinusoidal, helical, Bezier, crimped
โ”‚   โ”œโ”€โ”€ laminates.py     Unidirectional, cross-ply, angle-ply, sandwich
โ”‚   โ”œโ”€โ”€ field_guided.py  Orientation field, field-guided synthesis (NEW)
โ”‚   โ””โ”€โ”€ ...              (advanced, fractal, gradient, specialized, variants)
โ”œโ”€โ”€ sim/               22+ physics modules
โ”‚   โ”œโ”€โ”€ mechanical.py    Custom FEM (Euler-Bernoulli beam, scipy.sparse)
โ”‚   โ”œโ”€โ”€ nonlinear.py     Newton-Raphson, hyperelastic, plasticity
โ”‚   โ”œโ”€โ”€ validation.py    Gibson-Ashby benchmarks, analytical tests
โ”‚   โ”œโ”€โ”€ rl_environment.py RL environments for inverse design (NEW)
โ”‚   โ”œโ”€โ”€ incremental_fem.py Incremental loading with damage
โ”‚   โ”œโ”€โ”€ buckling_analysis.py Eigenvalue buckling
โ”‚   โ””โ”€โ”€ ...              (dynamics, fracture, thermal, EM, fluid, acoustic, ...)
โ”œโ”€โ”€ analysis/          Morphology, topology, percolation, homogenization
โ”‚   โ””โ”€โ”€ graph_features.py  94-dimensional feature extraction (NEW)
โ”œโ”€โ”€ ml/                Feature extraction, GNN, prediction
โ”œโ”€โ”€ viz/               PyVista 3D, matplotlib 2D, Plotly, animations
โ”œโ”€โ”€ io/                JSON, YAML, LAMMPS, VTK, GMSH, PDB, XYZ, HDF5
โ””โ”€โ”€ utils/             Config, validation, parametric, batch, geometry, units

๐Ÿ“Š Performance

Computational Complexity

Operation Complexity Notes
FEM Assembly O(N_elem ร— 144) Linear in number of elements
FEM Solving O(N_dof^1.5) for 2D, O(N_dof^2) for 3D Sparse direct solver
Feature Extraction O(N_elem + N_nodes) Graph-based features
ML Prediction O(1) Microseconds (trained model)

Typical Performance (CPU)

Network Size Elements DOF FEM Solve Time ML Predict Time
Small (2D) ~500 ~3000 <0.1 s <0.001 s
Medium (2D) ~2000 ~12000 ~1 s <0.001 s
Large (3D) ~10000 ~60000 ~10 s <0.001 s

GPU Acceleration (Optional)

The sim/accelerated.py module provides Taichi-based GPU acceleration for large-scale problems. However, all core FEM functionality works on CPU only with no GPU dependencies.


๐Ÿ“ Citation

If you use FiberNet in your research, please cite:

@software{fibernet2025,
  title     = {FiberNet: A Comprehensive Python Toolkit for Fiber Network
               Generation, Simulation, and Analysis},
  author    = {FiberNet Contributors},
  year      = {2025},
  publisher = {GitHub},
  url       = {https://github.com/GellmanSparrowS/fibernet},
  version   = {1.25.0},
  doi       = {10.5281/zenodo.XXXXXXX}
}

๐Ÿ™ Acknowledgments


๐Ÿ“„ License

MIT License โ€” free for academic and commercial use.


๐Ÿ”— Links


๐Ÿ“– ไธญๆ–‡ๆฆ‚่ฟฐ

FiberNet ๆ˜ฏไธ€ไธช้ขๅ‘ๆๆ–™็ง‘ๅญฆ็ ”็ฉถ็š„็บค็ปด็ฝ‘็ปœ็ป“ๆž„็”Ÿๆˆใ€ๆจกๆ‹ŸไธŽๆ™บ่ƒฝไผ˜ๅŒ– Python ๅทฅๅ…ทๅŒ…ใ€‚

ๆ ธๅฟƒ็‰น็‚น

  • 80+ ็ฝ‘็ปœ็”Ÿๆˆๅ™จ๏ผšๆถต็›– 15 ไธช็ป“ๆž„ๅฎถๆ—๏ผˆ้šๆœบใ€ๆœ‰ๅบใ€ๆ‰‹ๆ€งใ€็ผ–็ป‡ใ€ๅฑ‚็บงใ€TPMSใ€ๅœบๅผ•ๅฏผ็ญ‰๏ผ‰
  • ่‡ช็ ” FEM ๆฑ‚่งฃๅ™จ๏ผšๅŸบไบŽ Euler-Bernoulli ๆข็†่ฎบ๏ผŒไป…ไพ่ต– NumPy + SciPy๏ผŒไธไพ่ต–ไปปไฝ•ๅผ€ๆบ FEM ๅบ“
  • ๅผบๅŒ–ๅญฆไน ็Žฏๅขƒ๏ผšGymnasium ๅ…ผๅฎน๏ผŒๆ”ฏๆŒ็จณๅฎšๅŸบ็บฟ3๏ผˆPPO/SAC/TD3๏ผ‰่ฟ›่กŒ้€†่ฎพ่ฎก
  • 94 ็ปด็‰นๅพๆๅ–๏ผš็ป“ๆž„ใ€ๅญ”้š™ใ€ๆŽฅ่งฆ็‰นๅพ็š„ๅฎŒๆ•ดๆ่ฟฐ
  • Gibson-Ashby ้ชŒ่ฏ๏ผšๆไพ›่œ‚็ชๆๆ–™ๅ’Œๆณกๆฒซๆๆ–™็š„่งฃๆž่งฃๅŸบๅ‡†ๆต‹่ฏ•
  • TPMS ่ถ…ๆๆ–™๏ผšๆ”ฏๆŒ Gyroidใ€Diamondใ€Primitive ็ญ‰ไธ‰ๅ‘จๆœŸๆžๅฐๆ›ฒ้ข็ป“ๆž„
  • 22+ ็‰ฉ็†ๆจกๅ—๏ผšๅŠ›ๅญฆใ€ๅŠจๅŠ›ๅญฆใ€ๆ–ญ่ฃ‚ใ€็ƒญไผ ๅฏผใ€็”ต็ฃใ€ๆตไฝ“ใ€ๅฃฐๅญฆ

ๅฎŒๆ•ด้—ญ็Žฏๆต็จ‹

็ป“ๆž„็”Ÿๆˆ โ†’ ๅŠ›ๅญฆๆจกๆ‹Ÿ โ†’ ็‰นๅพๆๅ– โ†’ ๆœบๅ™จๅญฆไน  โ†’ ๅผบๅŒ–ๅญฆไน ไผ˜ๅŒ– โ†’ ้ชŒ่ฏ
   โ†‘                                                        โ†“
   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ๅฟซ้€Ÿๅผ€ๅง‹

pip install fibernet
import fibernet as fn

# ็”Ÿๆˆ้šๆœบ็ฝ‘็ปœ
net = fn.create("random_2d", num_fibers=100, fiber_length=10.0)

# ๅˆ†ๆž็ป“ๆž„
stats = fn.analyze(net)
print(f"็บค็ปดๆ•ฐ: {stats['num_fibers']}, ๅ‘ๅบๅ‚ๆ•ฐ: {stats['nematic_order']:.3f}")

# ๅŠ›ๅญฆๆจกๆ‹Ÿ
from fibernet.sim.mechanical import FiberFEM
fem = FiberFEM(net, segments_per_fiber=5)
E_eff = fem.effective_modulus(strain=0.001)
print(f"ๆœ‰ๆ•ˆๆจก้‡: {E_eff:.2e} Pa")

ๅœบๅผ•ๅฏผ็ฝ‘็ปœ็”Ÿๆˆ๏ผˆv1.25 ๆ–ฐๅขž๏ผ‰

from fibernet.gen.field_guided import OrientationField, field_guided_network

# ๅˆ›ๅปบๅพ„ๅ‘ๅ–ๅ‘ๅœบ
field = OrientationField(canvas_size=512, field_type="radial")

# ็”Ÿๆˆไปฟ็”Ÿ็บค็ปด็ฝ‘็ปœ
net = field_guided_network(field=field, box_size=(50, 50))
print(f"็”Ÿๆˆ {len(net.fibers)} ๆ นๅœบๅผ•ๅฏผ็บค็ปด")

ๅผบๅŒ–ๅญฆไน ้€†่ฎพ่ฎก๏ผˆv1.25 ๆ–ฐๅขž๏ผ‰

from fibernet.sim.rl_environment import FiberNetworkEnv, RLEnvConfig

# ๅˆ›ๅปบ RL ็Žฏๅขƒ
env = FiberNetworkEnv(RLEnvConfig(
    target_modulus=1e7,      # ็›ฎๆ ‡ๆจก้‡ 10 MPa
    target_poisson=-0.3,     # ็›ฎๆ ‡ๆณŠๆพๆฏ”๏ผˆๆ‹‰่ƒ€๏ผ‰
))

# ่ฟ่กŒไผ˜ๅŒ–
obs, info = env.reset()
for _ in range(50):
    action = env.action_space.sample()
    obs, reward, done, info = env.step(action)

print(f"ๆœ€ไผ˜: E={info['modulus']:.2e} Pa, ฮฝ={info['poisson']:.3f}")

ๅŠ›ๅญฆๆจกๆ‹Ÿ่ฏดๆ˜Ž

FiberNet ็š„ๅŠ›ๅญฆๆจกๆ‹Ÿ้‡‡็”จๅฎŒๅ…จ่‡ช็ ”็š„ๆœ‰้™ๅ…ƒๅฎž็Žฐ๏ผš

  • ๅ•ๅ…ƒ็ฑปๅž‹๏ผš3D Euler-Bernoulli ๆขๅ•ๅ…ƒ๏ผˆ12 DOF/ๅ•ๅ…ƒ๏ผ‰
  • ็จ€็–ๆฑ‚่งฃ๏ผšscipy.sparse + SuperLU
  • ้ž็บฟๆ€ง๏ผšNewton-Raphson ่ฟญไปฃ
  • ๆœฌๆž„ๆจกๅž‹๏ผš็บฟๅผนๆ€งใ€ๅŒ็บฟๆ€งๅก‘ๆ€งใ€่ถ…ๅผนๆ€ง๏ผˆNeo-Hookean๏ผ‰ใ€็ฒ˜ๅผนๆ€ง๏ผˆMaxwell, Kelvin-Voigt๏ผ‰
  • ้ชŒ่ฏ๏ผšๆ‚ฌ่‡‚ๆข่งฃๆž่งฃใ€Patch Testใ€Gibson-Ashby ๆ ‡ๅบฆๅพ‹

โฌ† Back to Top ยท PyPI ยท Docs ยท GitHub

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fibernet-4.0.0.tar.gz (509.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fibernet-4.0.0-py3-none-any.whl (469.1 kB view details)

Uploaded Python 3

File details

Details for the file fibernet-4.0.0.tar.gz.

File metadata

  • Download URL: fibernet-4.0.0.tar.gz
  • Upload date:
  • Size: 509.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for fibernet-4.0.0.tar.gz
Algorithm Hash digest
SHA256 6252a25063d26144bb9b8504bc389c3117fc530382b94555107997452849b99c
MD5 57ea0b82fac2d06435ca6e9948d9d57e
BLAKE2b-256 ee610f1f05161c2853582002a00ff69f42c39c3268863194c86fb63165d5073b

See more details on using hashes here.

File details

Details for the file fibernet-4.0.0-py3-none-any.whl.

File metadata

  • Download URL: fibernet-4.0.0-py3-none-any.whl
  • Upload date:
  • Size: 469.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for fibernet-4.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 99297b4a08b6df6e2cf43c1bd617cf558b88e70f0b171e8841833061cfb4424d
MD5 421c72f1ee9944afa9a42aecbd7ab9c7
BLAKE2b-256 bfe835964af95b21a963069a709abe1a6a31a5f795c39738610c00ec45fc0492

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page