Problem with metallic layer

51 views
Skip to first unread message

Refet Ali Yalcin

unread,
May 11, 2022, 12:10:34 PM5/11/22
to smu...@googlegroups.com
Dear all,

I am working on a thin coating composed of silver NPs in a dielectric layer which is coated on a silver reflector. I am using SMUTHI since there is a reflective layer as the substrate. I verify that I can find the same spectral transmittance and absorptance results with SMUTHI and celes when I consider silver NPs in dielectric medium (without a metallic layer). For the second step I introduced a metallic (silver) bottom layer (which is 1 micron thick) to Smuthi, however I started to get weird results. Then, I just used 2 very small (2 nm) spheres (for the code to run without errors) under 300 nm - 500 nm gaussian beam excitation and tried to calculate the reflectance and absorptance and compared these results with the results I got from transfer matrix method (not the T-matrix :) ). 

They were quite different
Result using the transfer matrix method with 1 micron thick silver, both sides are air:
silver_1_micron.png
Result using the T- matrix method (Smuthi) with 1 micron thick silver, both sides are air (2 insignificant silver NPs with r = 2 nm inside the coating).  
silver_background_smuthi.png


Then instead of silver. I used a dielectric layer with n=2 then the results of the T-matrix (smuthi) and transfer matrix agreed well.


n_2_smuthi.pngn_2_1_micron.png

I am aware of the following limitation of the method: 
Smuthi was designed for particles on a substrate or particles near or inside a thin-film system with layer thicknesses of up to a few wavelengths. Simulations involving thick layers might fail or return wrong results due to numerical instability. Maybe a more stable algorithm for the layer system response does exist - help is welcome.

That's why I chose the thickness 1 um and it worked well for dielectric case. 

As a note, for the results I calculated both TE and TM cases and then took the average to find unpolarized reflectance and absorptance. (for both transfer matrix and Smuthi).

Do you have any idea what the problem is?

Have a nice day!

Kind regards,
Refet Yalcin

Krzysztof Czajkowski

unread,
May 11, 2022, 3:36:26 PM5/11/22
to smu...@googlegroups.com

Hi Refet,

I cannot solve your problem, but I can offer my two cents. I tried something that could shed some light on the issue. Scattering matrix method in implemented directly in Smuthi, so I calculated reflectance spectrum from a 1 micron film of a Drude material mimicking silver and compared it to tmm package from pip (you can install it simply via 'pip install tmm'). It appears that the two give the same result, which is qualitatively similar to the one that you've shown with your own TMM code.

Best,

Krzysztof

W dniu 11.05.2022 o 18:10, Refet Ali Yalcin pisze:
--
Smuthi project repository: https://gitlab.com/AmosEgel/smuthi
Online documentation https://smuthi.readthedocs.io/en/latest/
---
You received this message because you are subscribed to the Google Groups "Smuthi" group.
To unsubscribe from this group and stop receiving emails from it, send an email to smuthi+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/smuthi/CA%2Bd8AdLL2%3DW%3D_qPpqOytFmNsWQw-uZNj1_rcsdvgEhY%2BzcEq8g%40mail.gmail.com.
tmm_bench.py

Lorenzo Pattelli

unread,
May 11, 2022, 7:21:31 PM5/11/22
to Smuthi
Hi Refet,

not much help from my side either -- I just tried to repeat your calculation but did not even manage to replicate the results in your second plot using Smuthi (a singular matrix error is thrown).
However, if I lower the silver layer thickness to, say, 200 or 300 nm, I do get the typical silver reflectance curve. Do you also get the same behavior?
On the other hand, as you also noticed, the system become more stable when the imaginary part of the layer index is small or zero.

Cheers,
Lorenzo
smuthi_Aglayer.py

Amos Egel

unread,
May 12, 2022, 3:46:02 AM5/12/22
to Lorenzo Pattelli, Smuthi
Hello,

if the silver layer is 1µm thick, you can probably as well model it as infinite by using silver as the bottom layer (substrate). Numerical instabilities may then be avoided.

Another option is to experiment with the numerical precision of the layer response, see the set_precision function. This can enhance the numerical accuracy but at the same time slow down the calculation.

In general it is easier to offer support if a script is attached to your question. This would allow us to reproduce your issue in the first place.

Greetings, Amos


Refet Ali Yalcin

unread,
May 12, 2022, 4:04:27 AM5/12/22
to Amos Egel, Lorenzo Pattelli, Smuthi
Hello,

Thank you for your replies, I appreciate them. 

Here is the script. Since the script needs to read the optical properties from a file and the location and size of the spheres from another file I thought it could complicate things and did not share it in the first place.

I had applied the semi infinite silver case (as the last layer) that Amos suggested before, but the result did not change.  

I doubted if I implemented optical properties wrongly but since the silver NPs in medium without reflector agreed well with the celes, I eliminated this.
the optical properties from: P. B. Johnson and R. W. Christy. Optical constants of the noble metals  https://doi.org/10.1103/PhysRevB.6.4370 

I will check Krzysztof's work to see what I did wrong.

Kind regards,
Refet





--
Refet Ali YALCIN
smuthi.zip

Lorenzo Pattelli

unread,
May 12, 2022, 6:01:50 AM5/12/22
to Refet Ali Yalcin, Smuthi
Ah, yes.
This was due to an incomplete refactoring in the code which was fixed with this commit https://gitlab.com/AmosEgel/smuthi/-/commit/c149b2c82f797c64d912153fabe2654f7adffde2
It should run fine if you install smuthi from the latest source

Il giorno gio 12 mag 2022 alle ore 11:49 Refet Ali Yalcin <refe...@gmail.com> ha scritto:
Hi Lorenzo,

When I run your script I get the following error:

  File "C:\Users\ryalcin\ownCloud\Academic\kodlar\smuthi\others_codes\smuthi_Aglayer_org.py", line 57, in <module>
    initial_power = gbeam.initial_intensity(layer_system=Agfilm).integral()[0] + gbeam.initial_intensity(layer_system=Agfilm).integral()[1]
  File "C:\Users\ryalcin\AppData\Local\Programs\Python\Python39\lib\site-packages\smuthi\initial_field.py", line 263, in initial_intensity
    ff = trf.pwe_to_ff_conversion(vacuum_wavelength=self.vacuum_wavelength,
AttributeError: module 'smuthi.fields.transformations' has no attribute 'pwe_to_ff_conversion'

I use the version 1.2.4

Kind regards,
Refet

Refet Ali Yalcin

unread,
May 13, 2022, 7:17:56 AM5/13/22
to Lorenzo Pattelli, Smuthi
Hi Lorenzo,

When I run your script I get the following error:

  File "C:\Users\ryalcin\ownCloud\Academic\kodlar\smuthi\others_codes\smuthi_Aglayer_org.py", line 57, in <module>
    initial_power = gbeam.initial_intensity(layer_system=Agfilm).integral()[0] + gbeam.initial_intensity(layer_system=Agfilm).integral()[1]
  File "C:\Users\ryalcin\AppData\Local\Programs\Python\Python39\lib\site-packages\smuthi\initial_field.py", line 263, in initial_intensity
    ff = trf.pwe_to_ff_conversion(vacuum_wavelength=self.vacuum_wavelength,
AttributeError: module 'smuthi.fields.transformations' has no attribute 'pwe_to_ff_conversion'

I use the version 1.2.4

Kind regards,
Refet

On Thu, May 12, 2022 at 1:21 AM Lorenzo Pattelli <patt...@lens.unifi.it> wrote:


--
Refet Ali YALCIN
Reply all
Reply to author
Forward
0 new messages