Skip to content

tfp-photonics/diffaaable

 
 

Repository files navigation

diffaaable 1.3.1

DOI

diffaaable is a JAX differentiable version of the AAA algorithm. The derivatives are implemented as custom Jacobian Vector products in accordance to 1. A detailed derivation of the used matrix expressions is provided in the appendix of 2. Under the hood diffaaable uses the AAA implementation of baryrat. Additionaly the following application specific extensions to the AAA algorithm are included:

  • Adaptive: Adaptive refinement strategy (called Iterative Sample Refinement (ISR) in the corresponding paper) to minimize the number of function evaluation needed to precisely locate poles within some domain
  • Vectorial: AAA algorithm acting on vector valued functions $\mathbf{f}(z)$ as presented in 3.
  • Tensor: Convenience alternative to the vector valued AAA algorithm (vectorial) accepting a tensor valued function F_k (so arbitrary dimensionality) instead of the single dimension that vectorial requires.
  • Lorentz: Variant that enforces symmetric poles around the imaginary axis.
  • Selective Refinement: Use a divide and conquer theme to capture many pole simultaneously and accurately, by limiting the number of poles per AAA solve. Suggested in 4.

Installation

to install diffaaable run pip install diffaaable

Usage

Please refer to the quickstart tutorial

Contributing

Feel free to open issues and/or PRs.

Citation

When using this software package for scientific work please cite the associated publication 2.

+++

Footnotes

  1. https://arxiv.org/pdf/2403.19404

  2. "A framework to compute resonances arising from multiple scattering", https://doi.org/10.1002/adts.202400989 2

  3. https://doi.org/10.1093/imanum/draa098

  4. https://doi.org/10.48550/arXiv.2405.19582

About

A JAX differentiable version of the AAA algorithm.

Resources

License

Stars

Watchers

Forks

Contributors

Languages

  • Python 81.5%
  • MATLAB 17.7%
  • Other 0.8%