Plasmonic Materials in MEEP > 1.2

Here is how I was implementing plasmonic materials in meep1.1 scheme code. Unlike Meep 1. 1, Meep >= 1. 2 changed the way materials are defined. Here I will describe how to change the material definition code from meep1.1 to meep 1.2 . Please note that one can still use the material definition written from Meep <1.2 for Meep >=1.2 but not vice versa.

Installation of Meep 1.2 on ubuntu

You can follow instructions given in my previous post to compile Meep 1.2 from the source code, but the procedure is outdated and one can use the recently pre-compiled meep packages (which is much easier)

1) Updated computer to at least “The Utopic Unicorn” (Ubuntu 14.10). Meep 1.2 is compiled for this versions and above. U can see instructions here how to update ubuntu distribution.

2) Install meep 1.2 (for serial version) by “sudo apt-get install meep h5utils”
3) check it by “meep –version” and quit the program by “(exit)”

Modifying the material definition type

For meep 1.1, I used the following code to define silver material with lorentian model from Rakic et al with 100 nm length unit:

(define myAg (make dielectric (epsilon 1)
(make polarizability
(omega 1e-20) (gamma 0.0038715) (sigma 4.4625e+39))
(make polarizability
(omega 0.065815) (gamma 0.31343) (sigma 7.9247))
(make polarizability
(omega 0.36142) (gamma 0.036456) (sigma 0.50133))
(make polarizability
(omega 0.66017) (gamma 0.0052426) (sigma 0.013329))
(make polarizability
(omega 0.73259) (gamma 0.07388) (sigma 0.82655))
(make polarizability
(omega 1.6365) (gamma 0.19511) (sigma 1.1133))

This was generated by my octave/matlab code (see the material_polarization_generator.m) in the project file.  One can use the this file to generate code for other plasmonic materials.

For Meep 1.2, I did the following changes to the above code

changed the word “polarizations” to “E-susceptibilities”

changed the work “polarizability” to “lorentzian-susceptibility”

changed the word “omega” to “frequency”

So the meep1.2 code looks like this:

(define myAg (make dielectric (epsilon 1)
(make lorentzian-susceptibility
(frequency 1e-20) (gamma 0.0038715) (sigma 4.4625e+39))
(make lorentzian-susceptibility
(frequency 0.065815) (gamma 0.31343) (sigma 7.9247))
(make lorentzian-susceptibility
(frequency 0.36142) (gamma 0.036456) (sigma 0.50133))
(make lorentzian-susceptibility
(frequency 0.66017) (gamma 0.0052426) (sigma 0.013329))
(make lorentzian-susceptibility
(frequency 0.73259) (gamma 0.07388) (sigma 0.82655))
(make lorentzian-susceptibility
(frequency 1.6365) (gamma 0.19511) (sigma 1.1133))

This seems to work fine for me. I used this new code to calculate the reflection from a thin silver film (like the way i did in my previous post) and it matches with the analytical calculation.

One thought on “Plasmonic Materials in MEEP > 1.2

  1. The blog is really great. But I have another related question. Could you please be so kind to help me?
    I have a model which has both metal material and dielectric material. And I need to do simulation at a fixed frequency. For metal material, I have its properties like gamma, sigma and oscillation frequency which the lorentz model needs. And for dielectric material, I have the properties of permittivity, permeability and electric conductivity.
    Do you have any idea of how to model these two kinds of materials in one simulation? For example, if I use lorentz-model to simulate metal material, then how about the dielectric materials? or If I set the electric conductivity value for dielectric materials, how should I deal with the metal part?
    Thank you in advance.
    Best regards,
    He, Wanji

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>