{"id":32157959,"url":"https://github.com/sp94/peacock.jl","last_synced_at":"2026-02-21T15:03:00.774Z","repository":{"id":47099146,"uuid":"234563375","full_name":"sp94/Peacock.jl","owner":"sp94","description":"Photonic crystals in Julia 🦚","archived":false,"fork":false,"pushed_at":"2025-05-19T22:22:31.000Z","size":3657,"stargazers_count":41,"open_issues_count":13,"forks_count":10,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-02-14T13:51:32.062Z","etag":null,"topics":["electromagnetic-simulation","electromagnetics","electromagnetism","maxwell-equations","maxwell-equations-solver","photonic-crystals","photonics","physics","plane-wave-expansion"],"latest_commit_sha":null,"homepage":"","language":"Julia","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sp94.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.bib","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-01-17T14:20:13.000Z","updated_at":"2026-01-15T05:11:19.000Z","dependencies_parsed_at":"2025-06-16T00:50:27.261Z","dependency_job_id":"e42a5011-1082-4c93-91c4-f013898698e2","html_url":"https://github.com/sp94/Peacock.jl","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/sp94/Peacock.jl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sp94%2FPeacock.jl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sp94%2FPeacock.jl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sp94%2FPeacock.jl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sp94%2FPeacock.jl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sp94","download_url":"https://codeload.github.com/sp94/Peacock.jl/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sp94%2FPeacock.jl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29684075,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-21T14:31:22.911Z","status":"ssl_error","status_checked_at":"2026-02-21T14:31:22.570Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["electromagnetic-simulation","electromagnetics","electromagnetism","maxwell-equations","maxwell-equations-solver","photonic-crystals","photonics","physics","plane-wave-expansion"],"created_at":"2025-10-21T12:56:30.804Z","updated_at":"2026-02-21T15:03:00.768Z","avatar_url":"https://github.com/sp94.png","language":"Julia","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\u003cimg src=\"docs/src/assets/banner.png\" alt=\"Peacock logo\"\u003e\u003c/img\u003e\n\u003c/div\u003e\n\n---\n\n[![](https://img.shields.io/badge/docs-stable-blue.svg)](https://sp94.github.io/Peacock.jl/stable)\n[![](https://img.shields.io/badge/docs-dev-blue.svg)](https://sp94.github.io/Peacock.jl/dev)\n[![codecov](https://codecov.io/gh/sp94/Peacock.jl/branch/master/graph/badge.svg?token=HQ9MQCEPZT)](https://codecov.io/gh/sp94/Peacock.jl)\n[![DOI](https://joss.theoj.org/papers/10.21105/joss.02678/status.svg)](https://doi.org/10.21105/joss.02678)\n\n## Introduction\n\n`Peacock.jl` - or the **P**lane-wave **E**xpansion **A**pproach to **C**haracterising **O**ptical **C**rystals in **k**-space - is a Julia package for studying photonic crystals using the Plane Wave Expansion Method.\n\nPhotonic crystals are materials whose optical properties arise from the structuring of the material when the size of the structures are comparable to the wavelengths of light. `Peacock.jl` is named for the irridescent colours of peacock feathers which arise not from pigmentation but from their photonic crystal structure, as shown below.\n\n\u003e ![Different zooms of a Peacock](docs/src/assets/peacock_feathers_zoom.png)\n\u003e Peacock by allanlau2000 from pixabay. Feather by suju from pixabay. Electron microscope image of photonic crystal structure from Zi, Jian, et al. \"Coloration strategies in peacock feathers.\",  *Proceedings of the National Academy of Sciences* 100.22 (2003): 12576-12578. Copyright (2003) National Academy of Sciences.\n\nAs well as occuring naturally as in animals such as peacocks, advances in nanofabrication mean that 'designer' photonic crystals can now be manufactured for unprecedented control over the flow of light, with applications ranging from optical fibers to photonic circuitry. Photonic crystals are also a promising platform for more exotic materials like topological insulators.\n\n## Installation\n\n```julia\njulia\u003e ]\npkg\u003e add Peacock\n```\n\nFor more info on the package and usage instructions, see the [documentation](https://sp94.github.io/Peacock.jl/stable).\n\n\n## Features\n\nSolve for...\n* Transverse electric (TE) and transverse magnetic (TM) modes of 2D photonic crystals:\n  * Non-orthogonal unit cells\n  * Inhomogeneous permittivity and/or permeability\n* Chern numbers of topological photonic crystals using [built-in Wilson loop methods](https://sp94.github.io/Peacock.jl/dev/how-tos/wilson_loops).\n\nFocused on ease of use\n* [Install](https://sp94.github.io/Peacock.jl/dev/tutorials/getting_started/#getting_started_installation-1) with one line in Julia's package manager.\n* Simple visualisation of [geometry](https://sp94.github.io/Peacock.jl/dev/tutorials/getting_started/#getting_started_geometry-1), [fields](https://sp94.github.io/Peacock.jl/dev/tutorials/getting_started/#getting_started_modes-1), and [fully labelled band diagrams](https://sp94.github.io/Peacock.jl/dev/tutorials/getting_started/#getting_started_bands-1).\n* Reproduce and extend existing photonic crystals in the [`Peacock.Zoo`](https://sp94.github.io/Peacock.jl/dev/how-tos/zoo/#how_to_zoo-1) submodule.\n* Easily [accelerate calculations on CUDA-compatible GPUs](https://sp94.github.io/Peacock.jl/dev/how-tos/gpu/).\n\n\n## Limitations\n\n* Currently only implemented for 2D photonic crystals.\n* Like all methods that solve Maxwell's equations in Fourier space, the Plane Wave Expansion Method converges slowly for high contrast materials such as metals (ϵ \u003c 0).\n\n\n## Contributors\n\n* @sp94 (core)\n* @kabume (GPU support)\n\n\n## Referencing\n\nIf you use `Peacock.jl` in your work, please consider citing us as\n\n```bib\n@article{palmer2020peacock,\n  title={Peacock.jl: Photonic crystals in {Julia}},\n  author={Palmer, Samuel J and Giannini, Vincenzo},\n  journal={Journal of Open Source Software},\n  volume={5},\n  number={54},\n  pages={2678},\n  year={2020}\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsp94%2Fpeacock.jl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsp94%2Fpeacock.jl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsp94%2Fpeacock.jl/lists"}