This page contains some pointers to code which was used to produce numerical examples in some of my papers. The aim is to make my research more reproducible, as well as to provide code which may be of interest to the wider community.
pyiga is a Python research toolbox for IgA. It's hosted at GitHub:
The main motivations to create it were:
- Making my research reproducible. Most other code on this page depends on
pyiga. I now try to put code online for each IgA paper I work on to make the results reproducible.
- Experimentation and rapid prototyping. Existing C++ libraries for IgA have a clumsy edit-compile-run cycle and verbose syntax which makes experimenting with new ideas and algorithms painful. Python, in particular in combination with the Jupyter notebook interface, allows for much more immediate experimentation.
For installation instructions, basic usage and more advanced examples, see the GitHub page. An API reference is available online.
Fast black-box assembling for Isogeometric Analysis
These are implementations of the algorithm described in the paper "A black-box low-rank approximation algorithm for fast matrix assembly in Isogeometric Analysis". Please cite this paper if you use the following code in your research. Two implementations are available:
A standalone C++ implementation without external dependencies: fastasm.cc.
This does not include routines for the generation of the actual IgA stiffness matrix entries and is intended to be dropped into existing codebases. See the comments for basic usage instructions.
pyigaPython toolbox for IgA (see above).
pyigacontains both a pure Python implementation as well as a wrapper for fastasm.cc. The latter is used by default. See the routine
pyiga.assemble.stiffness_fast()to get started.
The stiffness matrix entries are generated using relatively performant Cython code. All routines are parallelized using multithreading. When combined with the fast black-box assembler, these are some of the fastest IgA assembling routines publicly available.
Greedy Tucker approximation
Below is a link to a notebook containing implementations of the Greedy Tucker approximation algorithm for tensors and tensor linear systems described in the paper "Greedy low-rank approximation in Tucker format of tensors and solutions of tensor linear systems".
Robust multigrid for IgA based on stable splittings of spline spaces
Back to Clemens Hofreither's homepage