smuthi.periodicboundaries.post_processing are available/have been tested. 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. 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
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_sectionand
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
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 increasel_maxandm_maxbeyond 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 fromscattered_periodic_ff_power_per_area.* I have computed the absorption from two functions:smuthi.postprocessing.far_field.extinction_cross_section(simulation)andsmuthi.postprocessing.far_field.total_scattering_cross_section(simulation).If you don't mind, could you give me some advice?Best,Jaeuk
![]() |