Skip to main content

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: sparseqr is 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 pip phase:

    • macOS: brew install suitesparse && pip install scikit-sparse sparseqr
    • Ubuntu/Debian: sudo apt-get install libsuitesparse-dev && 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.

Metadata

Release files for IGA-for-bsplyne 1.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for IGA-for-bsplyne 1.0.4
File Size Uploaded
iga_for_bsplyne-1.0.4.tar.gz 31.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for IGA-for-bsplyne 1.0.4
File Interpreter ABI Platform
iga_for_bsplyne-1.0.4-py3-none-any.whl Python 3 none any Details

Total release size: 62.9 kB

Release files / iga_for_bsplyne-1.0.4.tar.gz

Download URL iga_for_bsplyne-1.0.4.tar.gz
Size 31.4 kB
Tags Source
SHA-256 checksum
How to use checksums
b76a26988f1f5735557de3d6569ea5fb656444558bb409a15f573ab4fb8c95f2
BLAKE2b-256 checksum
How to use checksums
bbb5f1f2a43565722190dcb631e3bb29a43064152f5d661ab825f32c4c75731a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.23

Release files / iga_for_bsplyne-1.0.4-py3-none-any.whl

Download URL iga_for_bsplyne-1.0.4-py3-none-any.whl
Size 31.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e99478de3c38196db0b55ecf4b419a9f293332ef2b91680b5a3742b88fdc6eaa
BLAKE2b-256 checksum
How to use checksums
b057ab81b8781213996f0c725f7d7e33deb442ba91a8fe4b079b98ff323631e4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.23

Release history Release notifications | RSS feed

This release

1.0.4 This release

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page