47 views
Skip to first unread message

Thea

unread,
Jun 26, 2025, 5:21:34 PMJun 26
to adda-d...@googlegroups.com
Dear the ADDA Research Team:
Hello, I am a student who has recently started learning to use ADDA and currently in the process of importing custom particle shapes. I saw in the readme file of misc/pip that “<grid> - maximum shape size (number of dipoles) along the largest dimension that is determined automatically. If omitted, the default value of 80 is used (and further arguments cannot be used).” I am a bit confused about this. Does it mean that the grid should be set to the maximum dimension length of the particle (in μm)? For example, if I need to import a hexagonal prism with a maximum dimension (prism length) of 2μm, does this mean that <grid> in the format conversion command should be set to 2? However, wouldn't this grid dimension be too small? When using ADDA's predefined hexagonal prism shape, the box dimensions are approximately 60x70x104, and the resulting Mueller matrix also shows differences (see the attachment). If I don't set grid to 2, how should I correctly choose the value for grids? looking forward to your reply!
Best regards,
Thea
Email: thea.c...@gmail.com


diff_method.jpg


Maxim Yurkin

unread,
Jun 27, 2025, 6:45:21 PMJun 27
to adda-d...@googlegroups.com, Thea
Dear Thea,

Sorry for this confusion. The maximum shape size here is the number of dipoles along the axes (not its length in um or
other units), for which the particle dimension is the largest. So the default value of 80 will give a shape slightly
smaller than the built-in hexagonal prism in ADDA, that you mentioned. Grid=2  is definitely inadequate, which explains
the difference in your results. So for using pip, you first need to estimate the grid value based on geometric size of
your shape and some guideline for dpl (e.g., the rule of thumb of dpl=10*|m|), but it is always a good idea to test
different values of dpl as explained in the manual.

Please let me know, if that answers your question, or if you need further clarification.

Maxim.

P.S. This answer has been forwarded to your e-mail address for your convenience. However, if you want to continue the
discussion please reply to the group's e-mail. You are also advised to check the corresponding discussion thread at
http://groups.google.com/group/adda-discuss and/or subscribe to it to receive automatic notifications, since other
answers/comments will not be necessarily forwarded to your e-mail.



Message has been deleted

Thea

unread,
Jun 30, 2025, 12:00:10 AMJun 30
to ADDA questions and answers
Dear Prof. Maxim, 

Thanks for your quick response! 
I think I have understood the method of using pip. For example, if I need to customize a hexagonal prism with a column length of 2 μm and a bottom diameter of 1.4 μm, at a wavelength of 0.532 μm and a dpl of 13, then I should use the maximum size value Dmax (i.e., the column length of 2 μm) to calculate the grid value. The grid value is obtained by Dmax/d (≈48.9), where d=λ/dpl (≈0.0409). This means that pip49 should be used for the conversion. Is this usage correct?

Hope to get your answers, looking forward to your reply!

Best regards,
Thea


Maxim Yurkin

unread,
Jun 30, 2025, 10:26:13 AMJun 30
to adda-d...@googlegroups.com
Yes, that's correct. `pip 49` should do the trick. It is a good start, but if you start doing systematic simulations for
such columns, I recommend to verify the accuracy of the specific computed quantities of interest on a few test cases.
For that, perform simulations for different grid sizes and compare. See Section 4.1 "General applicability" of the manual.

Maxim.

王宁

unread,
Jun 30, 2025, 10:38:28 AMJun 30
to adda-d...@googlegroups.com
Dear ADDA Research Team,
I am a student beginning to use ADDA for my research on the scattering and polarization properties of Laguerre-Gaussian (LG) beams interacting with haze particles.My research topic is the study of the scattering and polarization properties of Laguerre-Gaussian (LG) beams interacting with haze particles. Recently, I've been using DDA (Discrete Dipole Approximation) simulations to calculate the differences in scattering properties between LG beams and groups of non-spherical haze particles (ellipsoidal, cylindrical, bispherical) with different shapes. The particle group radius range is 0-2 micrometers.

My approach is to first use DDA to simulate the scattering properties of single particles across the 0-2 μm radius range. I use a radius step size of 0.05 μm, starting from 0.1 μm (i.e., 0.1 μm, 0.15 μm, 0.2 μm, ..., up to 2.0 μm). Finally, I integrate the results for all single particles across the 0-2 μm range (at each step size) to obtain the scattering properties of the 0-2 μm ellipsoidal particle group.

During this process, a minor issue arises: when performing DDA simulations, the LG beam needs to be imported externally. The LG beam file is generated by calculating the electric field components (Ex, Ey, Ez) and intensity of an LG beam with a specific topological charge at given spatial points. The input spatial points for generating this LG beam are determined within the DDA simulation based on the physical characteristics of the single particle (such as its radius, complex refractive index, etc.).

Therefore, when simulating the scattering properties of LG beams interacting with groups of 0-2 μm haze particles of different shapes, I need to keep the light field file constant as a control variable. However, since my light field file is generated based on the physical characteristics of a specific particle, a problem occurs. For example, if the light field file was generated for a particle radius of 0.5 μm, I can only simulate scattering and polarization properties for particle radii from 0.5 μm to 2.0 μm. I cannot simulate radii smaller than 0.5 μm because the code throws an error indicating a mismatch: the number of points in the light field file exceeds the number of dipoles generated for the smaller particle.

To study the scattering properties of the 0-2 μm particle group, I selected the LG light field file generated for a particle radius of 0.1 μm. I am using this single light field file to simulate the scattering properties of all single particles within the 0-2 μm radius range. My question is: Could this introduce accuracy issues? For instance, would using this specific LG light field file (generated for a 0.1 μm particle) to simulate scattering for a 1.5 μm particle be inaccurate?

Furthermore, how should I resolve this mismatch problem between the light field file and the number of dipoles if I want to accurately simulate the scattering properties of 0-2 μm haze particle groups?" looking forward to your reply!

Best regards,

Thea

Maxim Yurkin

unread,
Jun 30, 2025, 6:33:17 PMJun 30
to adda-d...@googlegroups.com
Dear Thea,

ADDA needs internal fields at the center of each dipole (voxel) - these sets of coordinates will be different for
particles of different sizes. Hence, I do not know of any way to reuse the beam files. The code will detect if the grid
values are different, but the simulation will be wrong even if the grid size is the same.

Still, the production of the beams can be automated to some extent:
1) run the ADDA simulation with extra options `-store_beam -prognosis`
it will produce the beam description for the default plane wave (one or two files depending on the symmetry of the
problem) without running the simulation itself
2) process the files by replacing the field values in each row by that of your beam (for coordinates given by the first
three numbers)
3) run the main ADDA simulation with `-beam read ...`

Maxim.

王宁

unread,
Jul 10, 2025, 6:48:26 AMJul 10
to adda-d...@googlegroups.com
Dear ADDA Research Team,
I am a student beginning to use ADDA for my research on the scattering and polarization properties of Laguerre-Gaussian (LG) beams interacting with haze particles.My research topic is a study on the scattering and polarization characteristics of Laguerre-Gaussian (LG) beams interacting with haze particles. Recently, I have been using the Discrete Dipole Approximation (DDA) to simulate and calculate the differences in scattering characteristics between LG light and non-spherical haze particle groups of different shapes (such as ellipsoidal, cylindrical, and double-sphere shapes). The radius range for these particles is 0–2 micrometers.

My approach involves dividing the radius range (0–2 µm) into steps of 0.1 µm. For each radius value, I generate corresponding optical field files based on the physical parameters of the particles. Finally, these optical field files are read into ADDA using the -beam read command to perform the simulation.

Recently, I have been simulating LG beams of different orders interacting with ellipsoidal haze particle groups. The shape parameters of the ellipsoids are set as a/c = b/c = 0.5. The topological charge numbers (L) of the LG beams are selected as L = 0, 1, 2, 3, 4, 5, and 7. When L = 0, the LG beam degenerates into a Gaussian beam.

First, I used the built-in barton5 beam option in ADDA to simulate the scattering characteristics from 0–2 µm and compared the results with those obtained by importing the LG beam with L = 0. This comparison was intended to verify whether my method of importing the LG beam was correct. The verification result showed that the overall trends of the scattering characteristics with respect to size parameters were largely consistent between the two methods.

However, when simulating higher-order LG beams (L = 1 and 2), I observed that the extinction efficiency factor, absorption efficiency factor, and scattering efficiency factor decreased as the topological charge number L increased. Additionally, the peaks of the curves shifted toward larger size parameters (i.e., larger particle sizes).

When the topological charge number continued to increase (L = 3, 4, 5), the peak values of the three efficiency factors began to rise significantly—sometimes even exceeding the values obtained for L = 0. Specifically, the maximum extinction efficiency for L = 0 was approximately 2.3, while for L = 4 and L = 5, the maxima reached 8.4 and 37.1, respectively. More strikingly, when L = 7, the maximum extinction efficiency soared to 1210. This extremely large value for L = 7 seems potentially unreasonable.

The process of importing the optical field files remains consistent across all simulations. The detailed plots showing how the efficiency factors vary with the size parameter are included in the attachments.

Therefore, I would like to ask: when the topological charge number L is set to 5 or 7, what might be causing the unreasonable values in the calculated scattering efficiency factors using ADDA?

Best regards,

NW

NW.docx

Maxim Yurkin

unread,
Jul 10, 2025, 12:58:50 PMJul 10
to adda-d...@googlegroups.com
Dear Thea,

I believe the main problem here is inherent ambiguity in defining cross sections, scattering intensity and derived quantities. The scattering problem is linear, i.e. increasing amplitude of the incident field by a factor X, the same increase is obtained in the scattered field. Scattered intensity is then scaled by X^2. That's why, textbook definitions of many computed quantities contain ||E_0||, or ||E_0||^2 in the denominator. The question is what is ||E_0||. For the plane wave, the answer is obvious and it has a clear physical meaning, e.g., in the definition of cross sections. For the latter, one compares the scattering intensity with the power flow of the incident beam over some area. The latter implicitly assumes that the power flow (e.g., the one measured by the detector) is proportional to the area, but that is only true for plane waves. This is discussed on p.19 (middle of left column) of 
Glukhova S.A. and Yurkin M.A. Vector Bessel beams: General classification and scattering simulations, Phys. Rev. A 106, 033508 (2022). (PDF)
(it also mentions several relevant references).

It is kind of natural to use ||E_0|| as the value at focus for standard Gaussian beams (or other ones with clearly defined peak), especially for sufficiently wide ones - and this is the definition used by ADDA. When we switch for more complicated beams, e.g., the ones that may have zero intensity in the focus, the situation is much less clear. Any formula defining the beam, e.g. Eqs.(28), (31) and the last line of p.3 of the above paper, will contain some factor E_0, which can be assumed to be equal to 1 in some units. The only justification for that is that there usually exist some continuous transformation of parameters that will bring this beam to the plane wave (keeping E_0 intact). Mind, however, that continuous transformation of the order of the Bessel beam from some integer to zero is not necessarily a meaningful endeavour. Still, this definition of E_0 is used by ADDA for Bessel beams.
 
Alternative approach is to require maximum amplitude of the beam to be unity. However, this has little physical meaning, since this maximum amplitude is not necessarily sensed by the particle. Moreover, ADDA is perfectly applicable for singular incident fields (i.e. the field of a point nearby emitter), when such maximum would be infinite.

Second issue is that ADDA does not determines E_0 for the incident beam (since that would be hard unless something like maximum over the particle volume is required) and, hence, does not divides by it. Thus, for any built-in beams some definition of E_0 is used and it is set to 1. However, for the input-from-file incident field, ADDA can only assume that it is adequate. For instance, if you scale all the values of the incident-field file by X, many computed values will scale by X or X^2.

To conclude, whenever you put any incident field in ADDA, you must (1) assume some meaningful definition for E_0, (2) ensure that this E_0 is equal to 1 in your file. Still, this would not make cross sections (or efficiencies, or any other relative quantities) physically meaningful.

The only unambiguously defined quantity for scattering of complicated beam by a particle is some detector reading, which is either scattered intensity or (for near-forward detection) some interference (vector sum) of scattered and incident beam. Thus an alternative approach is intentionally set E_0 to an actual value (instead of (2) above), so that the beam values will correspond to real experiment. Then, the computed Mueller matrix can be scaled by distance to detector (see formulae in the manual) to obtain actual scattered intensity. Amplitude scattering matrix can, similarly, be used to obtain actual scattered electric field at any sufficiently distant point. Csca will then give the integrated scattered intensity, while Cabs - total integrated power. Cext will be the sum of two, which may be interpreted as the total power lost by the beam, but I am not sure that the latter can be easily measured (for such complicated beams).

Finally, what are the practical consequences? The effect that you observe in your plots is due to the specific definition of E_0. In other words, you compare beams A and B, assuming that they are somehow similar in magnitude (have the same intensity or something like that) - then comparing scattered intensity or power will make sense. Most probably, the condition in the brackets is not satisfied. As discussed above, the definition of the intensity (per surface area) is problematic but, I guess, the total power is well-defined for LG beams, so you may postulate this power to be the same for all your beams - may be it will make your result more "reasonable". In this case, the scattered intensity will be larger for the beams, which has larger fraction of their energy on the particle. However, this is a combination of two effects: (1) a trivial geometrical effect, which even for the simple Gaussian beam will vary with its width, (2) some intricate interplay between, e.g., shape of the beam (including L) and that of the particle. You are probably mostly interested in the second part, but I am not sure, how to isolate it.

That is an interesting topic indeed, so feel free to ask more detailed question or provide more data (e.g., with different normalization).

Maxim.

Reply all
Reply to author
Forward
0 new messages