{ "info": { "author": "Tyler Hughes, Momchil Minkov, Ian Williamson", "author_email": "tylerwhughes91@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "\n\"Angler\"\n\n# angler\n\n`angler` (named for '**a**djoint **n**onlinear **g**radients') is a package for simulating and optimizing optical structures.\n\nIt provides a finite-difference frequency-domain (FDFD) solver for simulating for linear and nonlinear devices in the frequency domain.\n\nIt also provides an easy to use package for adjoint-based inverse design and optimization of linear and nonlinear devices. For example, you can inverse design optical switches to transport power to different ports for different input powers:\n\n\"Fields\"\n\n`angler` is released as part of a paper `Adjoint method and inverse design for nonlinear optical devices`, which can be viewed [here](https://arxiv.org/abs/1811.01255).\n\n## Installation\n\nOne can install the most stable version of `angler` and all of its dependencies (apart from MKL) using\n\n\tpip install angler\n\t\nAlternatively, to use the most current version\n\n\tgit clone https://github.com/fancompute/angler.git\n\tpip install -e angler\n\nAnd then this directory can be added to path to import angler, i.e.\n\n\timport sys\n\tsys.path.append('path/to/angler')\n\n\n## Make angler faster\n\nThe most computationally expensive operation in `angler` is the sparse linear system solve. This is done with [`scipy.sparse.linalg.spsolve()`](https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.sparse.linalg.spsolve.html) by default. If MKL is installed, `angler` instead uses this with a python wrapper [`pyMKL`](https://github.com/dwfmarchant/pyMKL), which makes things significantly faster, depending on the problem. The best way to install MKL, if using anaconda, is\n\n\tconda install MKL\n\t\n(pyMKL does not work when MKL is pip installed.)\n\n## Examples / Quickstart\n\nThere are several jupyter notebook examples in the `Notebooks/` directory.\n\nFor a good introduction, try:\n\n\tNotebooks/Splitter.ipynb\n\nFor more specific applications:\n\n#### Electromagnetic simulations\n\nFor modeling linear devices with our FDFD solver (no optimization), see\n\n\tNotebooks/Linear_system.ipynb\n\nFor modeling nonlinear devices with FDFD (no optimization), see \n\n\tNotebooks/Nonlinear_system.ipynb\n\n#### Inverse design & optimization\n\nFor examples of optimizing linear devices, see \n\n\tNotebooks/Splitter.ipynb\n\tNotebooks/Accelerator.ipynb\n\nFor examples of optimizing nonlinear devices, see\n\n\tNotebooks/2_port.ipynb\n\tNotebooks/3_port.ipynb\n\tNotebooks/T_port.ipynb\n\n## Package Structure\n\n`angler` provides two main classes, `Simulation` and `Optimization`, which perform most of the functionality.\n\nGenerally, `Simulation` objects are used to perform FDFD simulations, and `Optimization` classes run inverse design and optimization algorithms over `Simulation`s. To learn more about how `angler` works and how to use it, please take a look at [angler/README.md](angler/README.md) for a more detailed explanation.\n\n## Tests\n\nTo run all tests:\n\n\tpython -m unittest discover tests\n\nOr to run individually:\n\t\n\tpython tests/individual_test.py\n\n## Contributing\n\n`angler` is under development and we welcome suggestions, pull-requests, feature-requests, etc.\n\nIf you contribute a new feature, please also write a few tests and document your changes in [angler/README.md](angler/README.md) or the wiki.\n\n## Authors\n\n`angler` was written by Tyler Hughes, Momchil Minkov, and Ian Williamson.\n\n## Citing\n\nIf you use `angler`, please cite us using\n\n\t@misc{hughes2018adjoint,\n\tAuthor = {Tyler W. Hughes and Momchil Minkov and Ian A. D. Williamson and Shanhui Fan},\n\tTitle = {Adjoint method and inverse design for nonlinear nanophotonic devices},\n\tYear = {2018},\n\tEprint = {arXiv:1811.01255},\n\t}\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details. Copyright 2018 Tyler Hughes.\n\n## Acknowledgments\n\n* our logo was made by [Nadine Gilmer](http://nadinegilmer.com/)\n* RIP Ian's contributions before the code merge\n* We made use of a lot of code snippets (and advice) from [Jerry Shi](https://yujerryshi.github.io/index.html)", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/fancompute/angler", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "angler", "package_url": "https://pypi.org/project/angler/", "platform": "", "project_url": "https://pypi.org/project/angler/", "project_urls": { "Homepage": "https://github.com/fancompute/angler" }, "release_url": "https://pypi.org/project/angler/0.0.15/", "requires_dist": null, "requires_python": "", "summary": "Adjoint Nonlinear Gradients", "version": "0.0.15" }, "last_serial": 4541059, "releases": { "0.0.11": [ { "comment_text": "", "digests": { "md5": "9f6b074fc567db2f3efbcd1c8f56a5bb", "sha256": "ec901f59da5bf761fdb6ebe335ac8c2ea09c2ffe55a81f26f3f24b008e67ed53" }, "downloads": -1, "filename": "angler-0.0.11.tar.gz", "has_sig": false, "md5_digest": "9f6b074fc567db2f3efbcd1c8f56a5bb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27097, "upload_time": "2018-11-28T23:11:50", "url": "https://files.pythonhosted.org/packages/0d/5d/5d1b2aac1e98ee907536ff6a9424a3bcf5ac3321da96cf6bec6059ba59f9/angler-0.0.11.tar.gz" } ], "0.0.12": [ { "comment_text": "", "digests": { "md5": "dbac404f1b920000f3a6db9da7eb8433", "sha256": "44b854dddb0642fb51d86d35cddf84ef91fa970b3806cc2a18db87091ecc0c6e" }, "downloads": -1, "filename": "angler-0.0.12.tar.gz", "has_sig": false, "md5_digest": "dbac404f1b920000f3a6db9da7eb8433", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27201, "upload_time": "2018-11-29T01:10:36", "url": "https://files.pythonhosted.org/packages/98/9f/995d81935a223a6b2c0467345c230f28d61f7f3545dff5a48a09337cc5fb/angler-0.0.12.tar.gz" } ], "0.0.13": [ { "comment_text": "", "digests": { "md5": "348449b141865a2db97c4ab2d74554ef", "sha256": "0f5f9ffeebaa83e98e4c1068a14d99a73879f5adf162ce1b960527ef19431224" }, "downloads": -1, "filename": "angler-0.0.13.tar.gz", "has_sig": false, "md5_digest": "348449b141865a2db97c4ab2d74554ef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27194, "upload_time": "2018-11-29T01:24:31", "url": "https://files.pythonhosted.org/packages/bc/fd/8a9497b73bda82523b3513c609cc1b3d22f7b25a9af2bcb50bfd2d629467/angler-0.0.13.tar.gz" } ], "0.0.14": [ { "comment_text": "", "digests": { "md5": "eb155b32cb7b3b2816e0e12c7a92e691", "sha256": "ae62c52cb6b826a2dd25f6182621b2776926a292c1557c307982fcafdcc1ccd2" }, "downloads": -1, "filename": "angler-0.0.14.tar.gz", "has_sig": false, "md5_digest": "eb155b32cb7b3b2816e0e12c7a92e691", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27323, "upload_time": "2018-11-29T01:25:19", "url": "https://files.pythonhosted.org/packages/09/2f/b44a3e3533a617bd6366e3ee1a70771e9ca6bec139d1b1e135da3291be68/angler-0.0.14.tar.gz" } ], "0.0.15": [ { "comment_text": "", "digests": { "md5": "0342294c01333a04e32c815aca51de6c", "sha256": "bc75485350b037eae03e5632fdd11b6ed14b44e11cfee93504438331cf363c67" }, "downloads": -1, "filename": "angler-0.0.15.tar.gz", "has_sig": false, "md5_digest": "0342294c01333a04e32c815aca51de6c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25660790, "upload_time": "2018-11-29T01:34:04", "url": "https://files.pythonhosted.org/packages/a0/44/e6a955a09ca9054200bb65a67383e57f2d2f5537ab975a6cbd4af4da2072/angler-0.0.15.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0342294c01333a04e32c815aca51de6c", "sha256": "bc75485350b037eae03e5632fdd11b6ed14b44e11cfee93504438331cf363c67" }, "downloads": -1, "filename": "angler-0.0.15.tar.gz", "has_sig": false, "md5_digest": "0342294c01333a04e32c815aca51de6c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25660790, "upload_time": "2018-11-29T01:34:04", "url": "https://files.pythonhosted.org/packages/a0/44/e6a955a09ca9054200bb65a67383e57f2d2f5537ab975a6cbd4af4da2072/angler-0.0.15.tar.gz" } ] }