Aw: RE: Re: Request for Advice: Energy Non-Conservation in SMUTHI Periodic Metallic Sphere Array Simulation

2 views
Skip to first unread message

Dominik Theobald

unread,
Mar 1, 2026, 10:08:50 AMMar 1
to pcb...@kaist.ac.kr, amos...@gmail.com, smu...@googlegroups.com
Hey Jaeuk, 
 
unfortunately for periodic particle arrangements only the post processing routines in smuthi.periodicboundaries.post_processing are available/have been tested. 
In general, that does not mean that the normal post processing routines will raise an error, but may not be suitable. 
 
Nevertheless it should be possible to adapt most of these routines to work also for periodic field expansions. 
 
In two routines you recalled (smuthi.postprocessing.far_field.extinction_cross_section, smuthi.postprocessing.far_field.total_scattering_cross_section) a plane wave expansion of the scattered field is constructed (see e.g.: https://gitlab.com/AmosEgel/smuthi/-/blob/master/smuthi/postprocessing/far_field.py?ref_type=heads#L588) with the argument k_parallel='default' . I suspect this to be the problem. 
In contrast to individual particle scattering, periodic arrangements only scatter (at least in the farfield) into discrete angles (https://gitlab.com/AmosEgel/smuthi/-/blob/master/smuthi/periodicboundaries/post_processing.py?ref_type=heads#L477)
 
 
In addition, I have encountered an issue regarding the transmittance calculation. I observed that the transmittance changes drastically and fails to converge as the maximum order reaches or exceeds 8. Is such behavior expected in periodic simulations, or are there specific parameters I should adjust to ensure stability at higher orders?
 
Such behavior is definitely not to be expected. I think it is unlikely that such behavior stems from a general error in Smuthi or periodic boundary module. But rather from the particles' T-matrices that you are using. For large/complex particles that require a large multipole order, the default settings for the T-matrix computation might not fit. It should be worth to check whether the T-matrix elements of different l_max / m_max converge or not. 
 
 
 
I hope this helps. 
Best, 
Dominik
 
 
 
 
 
Gesendet: Freitag, 27. Februar 2026 um 12:58
Von: "김재욱" <pcb...@kaist.ac.kr>
An: "Amos Egel" <amos...@gmail.com>, "Dominik Theobald" <dominik....@web.de>
Betreff: RE: Re: Request for Advice: Energy Non-Conservation in SMUTHI Periodic Metallic Sphere Array Simulation

Dear Dr. Egel and Dr. Theobald,

 

Dr. Egel, I would like to express my sincere gratitude for your prompt and helpful response.

 

Following up on our technical discussion, I have a question for Dr. Theobald regarding the SMUTHI package.

Could you clarify if there are periodic-simulation counterparts available for the following functions?

  • smuthi.postprocessing.far_field.extinction_cross_section

  • smuthi.postprocessing.far_field.total_scattering_cross_section

I am particularly interested in whether these functionalities can be applied to periodic structures within the current framework.

 

In addition, I have encountered an issue regarding the transmittance calculation. I observed that the transmittance changes drastically and fails to converge as the maximum order reaches or exceeds 8. Is such behavior expected in periodic simulations, or are there specific parameters I should adjust to ensure stability at higher orders?

 

Thank you for your time and assistance.

 

Best regards,

Jaeuk



-----Original Message-----
From: "Amos Egel" <amos...@gmail.com>
To: "김재욱" <pcb...@kaist.ac.kr>;
Cc: <phy00...@gmail.com>; "Dominik Theobald" <dominik....@web.de>;
Sent: 2026-02-27 (Fr) 18:32:36 (UTC+09:00)
Subject: Re: Request for Advice: Energy Non-Conservation in SMUTHI Periodic Metallic Sphere Array Simulation

Dear Jaeukm

Thanks for unsing the Smuthi code in your research and thank you for the interesting question.

In your script, I found the following lines of code in which you compute T, R and A.


    # convert plane wave expansion -> periodic far field
    ff_total_T = pbpost.periodic_pwe_to_ff_conversion(pwe_total_T, initial_field, layer_system)
    ff_total_R = pbpost.periodic_pwe_to_ff_conversion(pwe_total_R, initial_field, layer_system)
    P_trans = pbpost.scattered_periodic_ff_power_per_area(ff_total_T)
    P_refl = pbpost.scattered_periodic_ff_power_per_area(ff_total_R)

    T, R = abs(P_trans / P_init), abs(P_refl / P_init)


    # total extinction and scattering cross sections
    tot_sigma_exc = smuthi.postprocessing.far_field.extinction_cross_section(simulation)
    tot_sigma_sca = smuthi.postprocessing.far_field.total_scattering_cross_section(simulation)
    sigma_abs = tot_sigma_exc - tot_sigma_sca
    A = sigma_abs / np.linalg.norm(np.cross(a1, a2))

To be honest, I am no expert in the usage of the periodic boundary conditions in Smuthi. The method was developed and implemented by Dominik Theobald (in CC). Therefore, I can only guess what is going wrong. Maybe the commands

smuthi.postprocessing.far_field.extinction_cross_section
and
smuthi.postprocessing.far_field.total_scattering_cross_section

cannot be used in the context of periodic simulations. @Dominik, what do you think?

Kind regards, Amos


 

 

Am 27.02.2026 um 08:33 schrieb 김재욱:
Dear Dr. Egel,
 
Hi, I'm Jaeuk Kim, a postdoc in the Department of Biochemical Engineering in Korea Advanced Institute of Science and Technology (KAIST). 
I'm interested in studying plasmonic responses of multiple metallic nanoparticles. 
While I have used the FDTD method for a long time, I intended to use the T-matrix method this time, and found your SMUTHI package a fascinating candidate.
 
To get used to this package, I ran some example simulations of a simple cubic lattice of silver nanoparticles (it consists of 20 particles along the z-axis with periodic boundary conditions applied on the x-y plane) with the packing fraction 0.40 in the dielectric matrix phase (with the ambient refractive index 2.645..., i.e., 7 in dielectric constant).
While my script worked correctly with pure dielectric materials, it kept significantly violating the energy conservation, i.e., $1-(T+R+A) \gg 0$, where T, R, and A stand for the transmittance, reflectance, and absorption, respectively.
 
I tried a number of different simulation parameters and setups, and read tutorials available on the web for several days, but I kept failing to get a physically reasonable result. 
For example, I tried to increase l_max and m_max beyond 8, but this gives negative values of absorption. 
For your reference, I share my scripts; see the Google link (https://drive.google.com/drive/folders/1cg6nYv9YYGnQ6zM98PqvbGGBDTNPI8kt?usp=drive_link). 
* In the code, I have computed the powers of transmitted and reflected waves from scattered_periodic_ff_power_per_area
* I have computed the absorption from two functions: smuthi.postprocessing.far_field.extinction_cross_section(simulation) and smuthi.postprocessing.far_field.total_scattering_cross_section(simulation).
 
If you don't mind, could you give me some advice?
 
Best,
Jaeuk
 
Reply all
Reply to author
Forward
0 new messages