camfr3
======

camfr3 is a Python 3 port of CAMFR (CAvity Modelling FRamework). It is
distributed under the name "camfr3" because the PyPI name "camfr" belongs to
the original author. The Python module is still imported as "camfr".

CAMFR was written by Peter Bienstman at the Photonics Research Group,
Department of Information Technology (INTEC), Ghent University, Belgium,
with contributions from the people listed in AUTHORS.

    Copyright (C) 1998-2007 Peter Bienstman - Ghent University

Original project:  http://camfr.sourceforge.net/
Upstream fork:     https://github.com/demisjohn/CAMFR

The Python 3 port (branch python3-port) is maintained by
Abdelfettah Hadij-ElHouati. Every change made for the port is documented in
PORTING_JOURNAL.md.

If you use this software in published work, please cite:

    P. Bienstman and R. Baets, "Optical modelling of photonic crystals and
    VCSELs using eigenmode expansion and perfectly matched layers",
    Optical and Quantum Electronics 33, 327-341 (2001).
    doi:10.1023/A:1010882531238

Licensing
---------

CAMFR is released under the GNU General Public License, version 2 (LICENSE).
The older permissive notice in COPYRIGHT is kept as distributed.

camfr/math/ contains third-party numerical code: the SLATEC Bessel routines
(US government work, public domain) and Brent root and minimum finders.
SLATEC's machine constants (d1mach) come from Fortran intrinsics; the MACHAR
routine (W. J. Cody, ACM TOMS 14, 1988) that computed them was removed
(PORTING_JOURNAL.md, entry 58).

The Jenkins-Traub polynomial root finder (ACM Algorithm 419, under ACM's
software licence, which permits free non-commercial use) was removed in
camfr3 and replaced by an eigenvalue method (PORTING_JOURNAL.md, entry 56).

The Patterson quadrature in camfr/math/calculus/quadrature/ and
camfr/math/calculus/croot/patterson_z_n.cpp is a C++ translation of
algorithms published by the ACM (T. N. L. Patterson, Algorithm 468, CACM,
1973; F. T. Krogh and W. V. Snyder, ACM TOMS 17, 1991). Whether ACM's
software licence applies to this translation has not been checked; do so
before any commercial distribution.
