riccaticpp
|
A package implementing the adaptive Riccati defect correction (ARDC) method
This package is a C++ port of the riccati python package.
riccati
is a C++
package for solving ODEs of the form
$$ u''(t) + 2\gamma(t)u'(t) + \omega^2(t)u(t) = 0,$$
on some solution interval $t \in [t_0, t_1]$, and with initial conditions $u(t_0) = u_0$, $u'(t_0) = u'_0$.
riccati
uses the adaptive Riccati defect correction method – it switches between using nonoscillatory (spectral Chebyshev) and a specialised oscillatory solver (Riccati defect correction) to propagate the numerical solution based on its behaviour. For more details on the algorithm, please see Attribution.
Benchmarks are available in python/benchmarks
and can be run with
Read the documentation at the docs site.
If you find this code useful in your research, please cite Agocs & Barnett (2022). Its BibTeX entry is
@ARTICLE{ardc, author = {{Agocs}, Fruzsina J. and {Barnett}, Alex H.}, title = "{An adaptive spectral method for oscillatory second-order linear ODEs with frequency-independent cost}", journal = {arXiv e-prints}, keywords = {Mathematics - Numerical Analysis}, year = 2022, month = dec, eid = {arXiv:2212.06924}, pages = {arXiv:2212.06924}, doi = {10.48550/arXiv.2212.06924}, archivePrefix = {arXiv}, eprint = {2212.06924}, primaryClass = {math.NA}, adsurl = {https://ui.adsabs.harvard.edu/abs/2022arXiv221206924A}, adsnote = {Provided by the SAO/NASA Astrophysics Data System} }
Copyright 2024 The Simons Foundation, Inc.
riccati is free software available under the BSD 3.0, for details see the LICENSE.
From the top level directory you can build and call the tests with the following.
riccaticpp
is a header only library and so any project can include it just by copy/pasting in the include folder. For cmake based projects