igaops
Matrix-free weighted quadrature operators for Isogeometric Analysis
igaops provides reusable numerical building blocks for Isogeometric Analysis (IGA) based on weighted quadrature (WQ) and matrix-free (MF) techniques. The algorithms are largely based on developments carried out during the author's PhD thesis and on methods described in the published literature (see Bibliography).
The library is written in pure Python and relies only on numpy, scipy, and geomdl. It is designed to be solver- and application-agnostic: it exposes numerical operators rather than a complete simulation pipeline. Boundary conditions, material models, and problem-specific solvers are intentionally out of scope.
What this package provides
-
Weighted quadrature rules — computation of weights and points from univariate knot vectors.
-
L-mode products — efficient tensor-product contractions between multi-dimensional arrays (sum-factorisation / L-mode matrix–vector products).
-
Matrix-free operators — stiffness and mass matrix–vector products performed without explicitly assembling the global matrix, exploiting the tensor-product structure of IGA basis functions.
-
Matrix assembly — classical sparse assembly for cases where an explicit matrix is needed, for example for direct solvers or debugging.
-
Preconditioners — construction and application of the fast diagonalisation preconditioner for IGA, based on the Sylvester equation approach of Sangalli & Tani.
-
Geometry wrapper — a thin class around
geomdlobjects that exposes matrix-free evaluation of the Jacobian, Hessian, and related geometric quantities needed by the operators above.
Scope
igaops currently focuses on tensor-product B-spline and NURBS discretizations and provides low-level numerical tools that can be used to build IGA solvers and applications.
It does not aim to provide a complete finite element or simulation framework.
What this package does not provide
Boundary condition handling, material libraries, load vectors, and time integration schemes are deliberately excluded. These components are application-specific and are best developed at a higher level, for example within YETI, the laboratory's Fortran/Python simulation framework.
Requirements
- Python ≥ 3.10
numpyscipygeomdl
The required dependencies are installed automatically.
Optional dependencies for post-processing and visualisation:
matplotlibpandasseaborn
It is also recommended to install ParaView for .vtk output visualisation.
Installation
Install the latest released version from PyPI:
pip install igaops
To include the optional visualisation dependencies:
pip install "igaops[viz]"
For a development install from a local clone:
git clone https://github.com/JoaquinCORNEJO/igaops.git
cd igaops
pip install -e ".[viz]"
Development
This project uses Black for code formatting, mypy for static type checking, and pytest for testing.
For a local development environment:
pip install -e ".[dev]"
Format the source code with:
black src/
Run static type checking with:
mypy src/
Run the test suite with:
pytest
Citation
If you use igaops in academic work, please cite the relevant publications and/or thesis describing the methods implemented in the library.
License
igaops is distributed under the GNU Lesser General Public License v2.1 or later (LGPL-2.1-or-later).
See the LICENSE file for the complete license text.
Contact
Questions and feedback are welcome:
Bibliography
The algorithms implemented in igaops are based on the following references.
B-Splines and NURBS
-
L. Piegl — The NURBS Book
-
J. Cottrell, T. J. R. Hughes, Y. Bazilevs — Isogeometric Analysis: Toward Integration of CAD and FEA
Weighted quadrature and matrix-free methods
-
F. Calabrò, G. Sangalli, M. Tani — Fast formation of isogeometric Galerkin matrices by weighted quadrature
-
G. Sangalli, M. Tani — Matrix-free weighted quadrature for a computationally efficient isogeometric k-method
-
R. Hiemstra et al. — Fast formation and assembly of finite element matrices with application to isogeometric linear elasticity
Preconditioners and fast diagonalisation
-
G. Sangalli, M. Tani — Isogeometric preconditioners based on fast solvers for the Sylvester equation
-
M. Montardini — Preconditioners for isogeometric analysis (PhD thesis)
Tensor products and sum-factorisation
-
T. Kolda, B. Bader — Tensor decompositions and applications
-
P. Antolin et al. — Efficient matrix computation for tensor-product isogeometric analysis
Release files for igaops 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| igaops-0.1.0.tar.gz | 88.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| igaops-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 191.4 kB
Release files / igaops-0.1.0.tar.gz
| Download URL | igaops-0.1.0.tar.gz |
|---|---|
| Size | 88.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9dd41e398ed35bf486e4f1a69ad3b98ae44b58a35347bbd8b571ad7d41d73df9
|
|
BLAKE2b-256 checksum How to use checksums |
929bdf1d45cbf021d859781b71b9637eb5c9cb93c418511adeb11eddc8e975b4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / igaops-0.1.0-py3-none-any.whl
| Download URL | igaops-0.1.0-py3-none-any.whl |
|---|---|
| Size | 103.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
476eedbeffdc69eed7c1652bb1c34bc571251af123d9b0868d00a621f0c67376
|
|
BLAKE2b-256 checksum How to use checksums |
7c97e4c790d4a73baf07d8a7f3d09cf3b04f1b36ec4dacfac0c6ab6a320683c2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|