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.
-
Recommended Installation (Conda): Conda is highly recommended as it automatically manages the complex non-Python dependencies (SuiteSparse). Run these commands in order:
conda install -c conda-forge scikit-sparse pip install sparseqr
Note:
sparseqris not on Conda, but it will successfully link to the SuiteSparse libraries installed by scikit-sparse. -
Alternative (System Package Manager): If you are not using Conda, you must install SuiteSparse manually. Note: This method is not recommended for most users as it often leads to complex compilation issues during the
pipphase:- macOS:
brew install suitesparse && pip install scikit-sparse sparseqr - Ubuntu/Debian:
sudo apt-get install libsuitesparse-dev && pip install scikit-sparse sparseqr
- macOS:
-
Fallback: If these packages are not detected, the library automatically falls back to standard
scipy.sparsesolvers 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:
DirichletConstraintHandlerfor 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
IGAPatchDensityto 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/:
- Affine Mappings (01-03)
- Local Integration & Post-Processing (04-06)
- Immersed Models & Density (07)
- 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file iga_for_bsplyne-1.0.4.tar.gz.
File metadata
- Download URL: iga_for_bsplyne-1.0.4.tar.gz
- Upload date:
- Size: 31.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.23
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b76a26988f1f5735557de3d6569ea5fb656444558bb409a15f573ab4fb8c95f2
|
|
| MD5 |
6d3dd2d2879aafae1198df70c15278a8
|
|
| BLAKE2b-256 |
bbb5f1f2a43565722190dcb631e3bb29a43064152f5d661ab825f32c4c75731a
|
File details
Details for the file iga_for_bsplyne-1.0.4-py3-none-any.whl.
File metadata
- Download URL: iga_for_bsplyne-1.0.4-py3-none-any.whl
- Upload date:
- Size: 31.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.23
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e99478de3c38196db0b55ecf4b419a9f293332ef2b91680b5a3742b88fdc6eaa
|
|
| MD5 |
3921934ebd0ab6e41adda79c03979795
|
|
| BLAKE2b-256 |
b057ab81b8781213996f0c725f7d7e33deb442ba91a8fe4b079b98ff323631e4
|