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
pyiga
is a Python research toolbox for IgA. It's hosted at GitHub:
https://github.com/cfh/pyiga/.
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 editcompilerun 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 blackbox assembling for Isogeometric Analysis
These are implementations of the algorithm described in the paper "A blackbox lowrank 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.

In the
pyiga
Python toolbox for IgA (see above).pyiga
contains both a pure Python implementation as well as a wrapper for fastasm.cc. The latter is used by default. See the routinepyiga.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 blackbox 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 lowrank approximation in Tucker format of tensors and solutions of tensor linear systems".
greedytucker.ipynb
: (view online) (download)
Robust multigrid for IgA based on stable splittings of spline spaces
A somewhat simplified implementation in Python, using the pyiga
toolbox, of
the multigrid algorithm presented in
this paper with S. Takacs (SINUM),
can be found in
this IPython notebook.
Back to Clemens Hofreither's homepage