QMat Package

PyPI - Package PyPI - Download Last Commit CI pipeline Codecov

qmat is a python package to generate matrix coefficients related to Collocation methods, Spectral Deferred Corrections (SDC), and more generally for Runge-Kutta methods.

It allows to generate \(Q\)-coefficients for multi-stages methods (equivalent to Butcher tables) :

\[\begin{split}Q\text{-coefficients : } \begin{array} {c|c} \tau & Q \\ \hline & w^\top \end{array} \quad \Leftrightarrow \quad \begin{array} {c|c} c & A \\ \hline & b^\top \end{array} \quad\text{(Butcher table)}\end{split}\]

and many different lower-triangular approximations of the \(Q\) matrix, named \(Q_\Delta\), which are key elements for Spectral Deferred Correction (SDC), or more general Iterated Runge-Kutta Methods. It also contains generic time-integration solvers based on \(Q\) and \(Q_\Delta\) coefficients, that can be used for quick testing and experiments.

DOI

This package can be installed using pip :

pip install qmat

… but you can also use conda or installation from sources, see the Installation Instructions 💾

📜 If you are already familiar with those concepts, you can use this package like this :

from qmat import genQCoeffs, genQDeltaCoeffs

# Coefficients or specific collocation method
nodes, weights, Q = genQCoeffs("Collocation", nNodes=4, nodeType="LEGENDRE", quadType="RADAU-RIGHT")

# QDelta matrix from Implicit-Euler based SDC
QDelta = genQDeltaCoeffs("IE", nodes=nodes)

# Butcher table of the classical explicit RK4 method
c, b, A = genQCoeffs("ERK4")

But if you are new to this, then welcome ! … and please have a look at the step by step tutorials below 😉

For any contribution, please checkout out (very cool) Contribution Guidelines 🔑 and the current Development Roadmap 🎯

Projects relying on qmat

  • pySDC : Python implementation of the spectral deferred correction (SDC) approach and its flavors, esp. the multilevel extension MLSDC and PFASST.

  • SWEET : Shallow Water Equation Environment for Tests, Awesome! (C++).

Doc Contents

Developers