Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Swap gamma for Drude and Lorentzian terms in epsilon fitting parameters for Au from Johnson and Christy and update Titanium #2752

Merged
merged 3 commits into from
Dec 29, 2023

Conversation

oskooi
Copy link
Collaborator

@oskooi oskooi commented Dec 29, 2023

The material fitting parameters for Au at visible wavelengths from Johnson and Christy provided in D. Barciesi and T. Grosges, J. Nanophotonics, Vol. 8, 083097 (2014) contain an error described in the errata in which $\gamma_D$ and $\gamma_L$ (the loss rate for the Drude and Lorentzian terms, respectively) are swapped. Unfortunately, the current values for these fitting parameters in the materials library do not contain the correction described in the errata. This PR updates these fitting parameters with the correct values.

As validation, a plot of the real and imaginary parts of $\epsilon$ using the updated parameters matches the plot in Figure 1(a) of the original paper. (The abstract in the errata states "Fortunately the curves in Ref. 1 [original paper] are correct.") The script used to generate this plot is provided below as a reference.

Also, because of a likely error for the fitting parameters of Ti in the errata, this PR uses the fitting parameters from the original paper with the corrected $\gamma$ terms.

cc @kombatEldridge

epsilon_Au_JC_visible

Screenshot from 2023-12-28 21-32-23

"""Plot the complex epsilon for Au in the materials library."""

import matplotlib
matplotlib.use('agg')
import matplotlib.pyplot as plt
from meep.materials import Au_JC_visible
import numpy as np


wavelength_um = np.linspace(0.4, 0.8, 50)
frequency = 1 / wavelength_um

epsilon_r = [Au_JC_visible.epsilon(f)[0][0].real for f in frequency]
epsilon_i = [Au_JC_visible.epsilon(f)[0][0].imag for f in frequency]

um_to_nm_scale = 1000

fig, ax = plt.subplots()
ax.plot(
    wavelength_um * um_to_nm_scale, epsilon_r, 'bo-', label='$\Re{(\epsilon)}$'
)
ax.plot(
    wavelength_um * um_to_nm_scale, epsilon_i, 'ro-', label='$\Im{(\epsilon)}$'
)
ax.set_xlabel('wavelength (nm)')
ax.set_ylabel('$\epsilon$')
ax.set_title('Au_JC_visible from materials.py')
ax.legend()
fig.savefig('epsilon_Au_JC_visible.png', dpi=150, bbox_inches='tight')

epsilon_Ti_visible

@oskooi oskooi added the bug label Dec 29, 2023
@oskooi oskooi changed the title Swap gamma for Drude and Lorentzian terms in epsilon fitting parameters for metals at visible wavelengths Swap gamma for Drude and Lorentzian terms in epsilon fitting parameters for Au from Johnson and Christy Dec 29, 2023
@oskooi oskooi changed the title Swap gamma for Drude and Lorentzian terms in epsilon fitting parameters for Au from Johnson and Christy Swap gamma for Drude and Lorentzian terms in epsilon fitting parameters for Au from Johnson and Christy and update Titanium Dec 29, 2023
@oskooi oskooi merged commit 054581a into NanoComp:master Dec 29, 2023
5 checks passed
@oskooi oskooi deleted the barchiesi_errata branch December 29, 2023 17:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant