Skip to main content

A package for IGA elasticity.

Project description

IGA_for_bsplyne

IGA_for_bsplyne is a high-performance Python library for 3D Isogeometric Analysis (IGA) applied to linear elasticity. It bridges the gap between Computer-Aided Design (CAD) and Finite Element Analysis (FEA) by using B-Spline basis functions directly as the approximation space for structural mechanics.

This library extends the geometric foundations of bsplyne to provide a complete multipatch IGA solver pipeline.

Installation

1. High-Performance Solvers (Optional but Recommended)

For large-scale 3D problems, IGA_for_bsplyne leverages SuiteSparse (via scikit-sparse and sparseqr) to achieve significant speedups.

  • Phase A: System Libraries Install the SuiteSparse headers on your operating system:

    • macOS: brew install suitesparse
    • Ubuntu/Debian: sudo apt-get install libsuitesparse-dev
    • Windows/Conda: conda install -c conda-forge suitesparse
  • Phase B: Python Wrappers Once the system libraries are installed, you must install the Python wrappers manually:

    pip install scikit-sparse sparseqr
    
  • Fallback: If these packages are not detected, the library automatically falls back to standard scipy.sparse solvers and an internal Sparse QR implementation, ensuring full compatibility at the cost of performance.

2. Install the Library

Standard Installation

Install the latest stable version directly from PyPI:

pip install IGA_for_bsplyne

Development Installation

If you wish to modify the code or contribute to the project, install the library in editable mode:

git clone https://github.com/Dorian210/IGA_for_bsplyne
cd IGA_for_bsplyne
pip install -e .

Note: The core dependency bsplyne is handled automatically by pip.

Core Architecture

The library is organized into three specialized layers:

🛠️ Constraint Management: Dirichlet

Handles complex boundary conditions via an affine mapping approach: u = Cd + k.

  • Static condensation: Automatically reduces the system size by removing constrained DOFs.
  • Advanced Relations: Supports slave-reference dependencies and Rigid Body constraints.
  • Key tools: DirichletConstraintHandler for automated multi-point constraint assembly.

🧊 Local Physics: IGAPatch

The bridge between B-Spline geometry and continuum mechanics.

  • Operators: High-performance assembly of Stiffness matrix (K) and RHS vector (f).
  • Post-Processing: Integrated calculation of Strains, Stresses, and Von Mises invariants.
  • Digital Twin & Immersed Models: Supports IGAPatchDensity to model heterogeneous materials (e.g., from CT-scan imagery) by interpolating volume fractions directly into the B-Spline basis.

🌐 Global Solver: ProblemIGA

Orchestrates the multipatch environment and global resolution.

  • Connectivity: Seamlessly "welds" patches together using MultiPatchBSplineConnectivity.
  • Solvers: Choice between Direct (Cholesky) and Iterative (PCG) solvers.
  • Visualization: Native ParaView (.pvd/.vtu) export.

Quick Start

from IGA_for_bsplyne.IGAPatch import IGAPatch
from IGA_for_bsplyne.ProblemIGA import ProblemIGA

# Define your patch
patch = IGAPatch(spline, ctrl_pts, E=70e9, nu=0.33)

# Assemble and solve
prob = ProblemIGA([patch], connectivity, dirichlet)
u = prob.solve()

# Export results
prob.save_paraview(u, path="./", name="results")

Tutorials & Examples

A comprehensive hands-on guide is available in examples/tutorial/:

  1. Affine Mappings (01-03)
  2. Local Integration & Post-Processing (04-06)
  3. Immersed Models & Density (07)
  4. Multipatch Solving (08-09)

Documentation

The full API documentation is available in the docs/ directory or via the Online Portal.

License

This project is licensed under the CeCILL License.

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

iga_for_bsplyne-1.0.0.tar.gz (31.1 kB view details)

Uploaded Source

Built Distribution

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

iga_for_bsplyne-1.0.0-py3-none-any.whl (30.9 kB view details)

Uploaded Python 3

File details

Details for the file iga_for_bsplyne-1.0.0.tar.gz.

File metadata

  • Download URL: iga_for_bsplyne-1.0.0.tar.gz
  • Upload date:
  • Size: 31.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.23

File hashes

Hashes for iga_for_bsplyne-1.0.0.tar.gz
Algorithm Hash digest
SHA256 16ffd098c582a5dea8d6c427f734fd6bb36c1ccbacf528f6b0c339968c23c2c6
MD5 e3d4f96cca85e3c81dd824912f0eecb3
BLAKE2b-256 d0ee5fc3440c3264c58b39b774737ecdf139d92c58a9e77ee07be5bffa9092b3

See more details on using hashes here.

File details

Details for the file iga_for_bsplyne-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for iga_for_bsplyne-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fb56f2fae079ca3e7c7ee1544584419644f320adb30bf3a9a7c1444db9191bb4
MD5 c6442d5654d81ddaaf252b9508d7d660
BLAKE2b-256 35ab041b427033e61a6a761741f199c8c3afc86ec0e282625a0dbf1e5dc48395

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