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
Last synced: 6 months ago · JSON representation ·

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
Created over 3 years ago · Last pushed 9 months ago
Metadata Files
Readme License Citation

README.md


Hyperbolic Optics Simulation Package

License: MIT Issues

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

  • 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:

  1. Fork the Repository:
    Create your own fork and clone it locally.

  2. Create a Feature Branch:
    bash git checkout -b feature/my-new-feature

  3. Commit Your Changes:
    Follow best practices and include clear commit messages.

  4. 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

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)
Top Labels
Issue Labels
good first issue (2)
Pull Request Labels