hyperbolic_optics
Science Score: 67.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 5 DOI reference(s) in README -
✓Academic publication links
Links to: arxiv.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (14.0%) to scientific vocabulary
Repository
Basic Info
- Host: GitHub
- Owner: MarkCunningham0410
- License: mit
- Language: Python
- Default Branch: main
- Size: 123 KB
Statistics
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 10
- Releases: 1
Metadata Files
README.md
Hyperbolic Optics Simulation Package
This package provides a suite of tools to study the reflective properties of hyperbolic materials and anisotropic structures using the 4×4 transfer matrix method. It enables easy configuration of multilayer systems, calculation of reflection coefficients, and analysis using Mueller matrices.
Table of Contents
- Features
- Installation
- Usage
- Contributing
- Citation
- Known Issues / Limitations
- Papers & Further Reading
- License
- Getting Help
Features
- Simulation of Reflective Properties: Analyze how hyperbolic materials and anisotropic structures reflect light.
- Multilayer Configuration: Configure multilayer systems with customizable materials and layer properties.
- 4×4 Transfer Matrix Method: Compute reflection coefficients accurately.
- Mueller Matrix Analysis: Convert reflection coefficients into Mueller matrices and simulate optical component interactions.
- Visualization: Basic plotting functionality for results analysis.
- Extensible Architecture: Modular design that allows for future extensions (e.g., additional optical components, improved incident polarization handling).
Installation
Currently, this package is open-sourced on GitHub. While it’s not available on PyPI yet, you can install it directly from the repository.
Cloning the Repository
bash
git clone https://github.com/MarkCunningham0410/hyperbolic_optics.git
cd hyperbolic_optics
Local Installation
Create a virtual environment and install the package in editable mode:
bash
python -m venv venv
source venv/bin/activate # On Windows use `venv\Scripts\activate`
pip install --upgrade pip
pip install -e .
TODO: In the future, instructions for installing via pip (e.g., from PyPI) will be provided.
Usage
Below is a brief example to get you started with the simulation package.
1. Create a Payload
Create a JSON payload that describes your multilayer structure:
```python import json
def mockincidentpayload(): payload = json.dumps({ "ScenarioData": { "type": "Incident", }, "Layers": [ { "type": "Ambient Incident Layer", "permittivity": 5.5 }, { "type": "Isotropic Middle-Stack Layer", "thickness": 1.5 }, { "type": "Semi Infinite Anisotropic Layer", "material": "Quartz", "rotationX": 0, "rotationY": 70, "rotationZ": 45, } ], }) return payload ```
2. Execute a Simulation
In your main script, import the modules and run a simulation:
```python import json from hyperbolicoptics.structure import Structure from hyperbolicoptics.mueller import Mueller from payloads import mockincidentpayload from hyperbolicoptics.plots import contourplotmuellerincidence
def main(): payload = json.loads(mockincidentpayload())
# Create the simulation structure
structure = Structure()
structure.execute(payload)
# Process optical components using Mueller matrices
mueller = Mueller(structure)
mueller.set_incident_polarization('linear', angle=0)
mueller.add_optical_component(
'anisotropic_sample',
structure.r_pp,
structure.r_ps,
structure.r_sp,
structure.r_ss
)
parameters = mueller.get_all_parameters()
reflectivity = mueller.get_stokes_parameters()['S0']
# Plot the results (optional)
contour_plot_mueller_incidence(mueller)
if name == "main": main() ```
For more detailed examples and documentation, please refer to the docs folder (coming soon!).
Contributing
We welcome contributions to make this package even better. If you’d like to contribute, please follow these guidelines:
Fork the Repository:
Create your own fork and clone it locally.Create a Feature Branch:
bash git checkout -b feature/my-new-featureCommit Your Changes:
Follow best practices and include clear commit messages.Submit a Pull Request:
Open a pull request on GitHub describing your changes and the motivation behind them.
For more details, see our CONTRIBUTING.md file (to be added).
Citation
If you use this package in your research, please consider citing it as follows:
bibtex
@misc{cunningham2025hyperbolic,
title={Hyperbolic Optics Simulation Package},
author={Mark Cunningham},
year={2025},
howpublished={\url{https://github.com/MarkCunningham0410/hyperbolic_optics}},
}
Known Issues / Limitations
- Transmission Coefficients: Currently, transmission coefficients are not fully supported.
- Multiple Optical Components: While you can place multiple Mueller matrix components in series, matching incident angles between them isn’t yet implemented.
- Testing: Unit tests and further best practices are still in development.
Please feel free to open an issue if you encounter any bugs or have suggestions for improvements.
Papers & Further Reading
This repository was used to create the results shown in my first pre-print: https://arxiv.org/abs/2501.18354
For background and further details on the underlying physics and methods, consider these resources:
- N. C. Passler and A. Paarmann, ‘Generalized 4 × 4 matrix formalism for light propagation in anisotropic stratified media: study of surface phonon polaritons in polar dielectric heterostructures’, J. Opt. Soc. Am. B, JOSAB, vol. 34, no. 10, pp. 2128–2139, Oct. 2017, doi: 10.1364/JOSAB.34.002128.
- P. Yeh, ‘Electromagnetic propagation in birefringent layered media’, J. Opt. Soc. Am., JOSA, vol. 69, no. 5, pp. 742–756, May 1979, doi: 10.1364/JOSA.69.000742.
- N. C. Passler, X. Ni, G. Carini, D. N. Chigrin, A. Alù, and A. Paarmann, ‘Layer-resolved resonance intensity of evanescent polariton modes in anisotropic multilayers’, Phys. Rev. B, vol. 107, no. 23, p. 235426, Jun. 2023, doi: 10.1103/PhysRevB.107.235426.
- N. C. Passler, M. Jeannin, and A. Paarmann, ‘Layer-resolved absorption of light in arbitrarily anisotropic heterostructures’, Phys. Rev. B, vol. 101, no. 16, p. 165425, Apr. 2020, doi: 10.1103/PhysRevB.101.165425.
- N. Hale, I. Simonsen, C. Brüne, and M. Kildemo, ‘Use of 4x4 transfer matrix method in the study of surface magnon polaritons via simulated attenuated total reflection measurements on the antiferromagnetic semiconductor MnF2’, Phys. Rev. B, vol. 105, no. 10, p. 104421, Mar. 2022, doi: 10.1103/PhysRevB.105.104421.
License
This project is licensed under the MIT License – see the LICENSE file for details.
Getting Help
If you have any questions or need help, please open an issue in the GitHub Issues section or contact the maintainers.
Thank you for your interest in the Hyperbolic Optics Simulation Package. Contributions, suggestions, and feedback are always welcome!
Happy simulating!
Owner
- Name: Mark Cunningham
- Login: MarkCunningham0410
- Kind: user
- Location: Belfast, Northern Ireland
- Twitter: MarkCPhysics
- Repositories: 3
- Profile: https://github.com/MarkCunningham0410
Photonics PhD Student.
Citation (CITATION.cff)
abstract: A 4x4 Transfer Matrix Method repository for calculating reflection coefficients of an anisotropic structure. authors: - family-names: "Cunningham" given-names: "Mark" orcid: "https://orcid.org/0000-0003-0163-3320" cff-version: 1.2.0 date-released: '2025-02-28' doi: 10.5281/zenodo.14946556 license: - mit repository-code: https://github.com/MarkCunningham0410/hyperbolic_optics/tree/v0.0.1-alpha title: 'MarkCunningham0410/hyperbolic_optics: v.0.0.1-alpha' type: software version: v0.0.1-alpha
GitHub Events
Total
- Create event: 3
- Release event: 3
- Issues event: 6
- Watch event: 2
- Delete event: 1
- Issue comment event: 6
- Member event: 2
- Push event: 6
- Pull request event: 6
- Fork event: 1
Last Year
- Create event: 3
- Release event: 3
- Issues event: 6
- Watch event: 2
- Delete event: 1
- Issue comment event: 6
- Member event: 2
- Push event: 6
- Pull request event: 6
- Fork event: 1
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 2
- Total pull requests: 2
- Average time to close issues: N/A
- Average time to close pull requests: 9 minutes
- Total issue authors: 1
- Total pull request authors: 2
- Average comments per issue: 0.0
- Average comments per pull request: 1.5
- Merged pull requests: 1
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 2
- Pull requests: 2
- Average time to close issues: N/A
- Average time to close pull requests: 9 minutes
- Issue authors: 1
- Pull request authors: 2
- Average comments per issue: 0.0
- Average comments per pull request: 1.5
- Merged pull requests: 1
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- MarkCunningham0410 (2)
Pull Request Authors
- MarkCunningham0410 (1)
- Vaishnavraj2509 (1)