http://adsabs.harvard.edu/abs/2016ApJ...831..109D

The correction will depend on dielectric function and size/lambda, so you may find that resonances will shift in wavelength when this is done.

The extrapolation procedure described in Eq. 15-17 of above reference will give you a fractional correction phi_N, where N is the largest N that you could afford to do. I would guess that the extrapolation itself is uncertain by

some fraction (perhaps 0.1) of phi_N (again, see Fig. 6 of above reference).

Remember also that the DDA realization with finite N is only approximating the geometry of the ideal cylinder with end caps. Again, repeating with larger N will in effect be doing a slightly different geometry. The correction phi_N will include these "geometric" effects.

]]>Thank you for your reply. I am happy to know that the basic calculation setup was ok and I am understanding the parameterization of the program correctly. Thank you for your assistance with the calculation optimization settings. You saved me a lot of effort in trying to figure out what the appropriate rotational setups are.

Now I am trying to reconcile the difference between my experimental and simulated spectra. The simulated LSPR peak is shifted to the red by ~50 nm. If the medium dielectric constant was increased (as it could likely be due to the surfactant), I would expect the LSPR peak to shift further to the red. Not sure about what else might be likely causing the discrepancy. Is polydispersity the probable culprit?

Thanks and best regards,

Joe ]]>

to the cylinder only (not including endcaps) so the value 3.55 does

correspond to your desired 25/7 to within the allowed discretization.

(I will correct this typo in the qtable output for CYLNDRCAP in the

next release.)

2. For this axially-symmetric target you do not need to rotate the

target around the axis a1, so you can reduce the compute time

by a factor 20 by changing

0. 360.0 20 = BETAMI, BETAMX, NBETA (beta=rotation around a1)

to

0. 0. 1 = BETAMI, BETAMX, NBETA (beta=rotation around a1)

3. With the reflection symmetry of this target, there is no

reason to sample THETA outside the range 0 to 90.

You can reduce your computing time by changing

0. 180.0 10 = THETMI, THETMX, NTHETA (theta=angle between a1 and k)

to

0. 90. 6 = THETMI, THETMX, NTHETA (theta=angle between a1 and k)

see section 19.3 for sampling in THETA: with an even value of

NTHETA, this will sample THETA uniformly in cos(THETA) at

cos(THETA)=11/12, 9/12, 7/12, 5/12, 3/12, 1/12

4. There is also really no need to do more than one angle PHI.

The PHI rotations are not very costly in cputime, but in this

case don't seem to be necessary at all if you are using unpolarized

light and are going to average over both polarization states.

Thank you for your assistance. Indeed, the MXITER adjustment worked to get the code to run. I am now able to generate extinction spectra.

Follow up question; As I understand it from the manual, the shape parameters should be set, such that they reflect the aspect ratio of the nanorods I am trying to measure (pg 44 of the ddscat manual "SHPAR1 = cylinder length/d (not including end-caps!) and SHPAR2 = cylinder diameter/d "). For example, I am now trying to model a rod L=32 nm X d=7 nm (where L=total length), aspect ratio=4.57. I set up the .par file to reflect this geometry by setting the shape parameters to be a ratio of 25/7. I double the shape parameters to get a higher number of dipoles (Please correct me if I am not understanding this operation correctly). The aeff=6.48nm is calculated from the total L and d. However, the resulting qtable output has written in the header asp.ratio= 3.5477. Can you please confirm that this is the correct way to try and model this sample with ddscat? My other specific questions are if the incident polarizations and target rotations parameters are setup correctly? My goal is to simulate the extinction spectra of these nanorods in solution, then compare the results with spectrophotometer measurements.

The complete .par file is included below. Note, that this took about a week running MPI on a 12core machine. So I would probably make some changes to try and speed things up.

Thanks in advance for your assistance,

Joe

' ========== Parameter file for v7.3 ==================='

' Preliminaries '

'NOTORQ' = CMDTRQ*6 (DOTORQ, NOTORQ) — either do or skip torque calculations

'PBCGS2' = CMDSOL*6 (PBCGS2, PBCGST, GPBICG, QMRCCG, PETRKP) — CCG method

'GPFAFT' = CMETHD*6 (GPFAFT, FFTMKL) — FFT method

'GKDLDR' = CALPHA*6 (GKDLDR, LATTDR, FLTRCD) — DDA method

'NOTBIN' = CBINFLAG (NOTBIN, ORIBIN, ALLBIN) — binary output?

' Initial Memory Allocation '

100 100 100 = dimensioning allowance for target generation

' Target Geometry and Composition '

'CYLNDRCAP' = CSHAPE*9 shape directive

50.0 14.0 = shape parameters 1 - 2

1 = NCOMP = number of dielectric materials

'../diel/Au_evap' = file with refractive index 1

' Additional Nearfield calculation? '

0 = NRFLD (=0 to skip nearfield calc., =1 to calculate nearfield E)

0.0 0.0 0.0 0.0 0.0 0.0 (fract. extens. of calc. vol. in -x,+x,-y,+y,-z,+z)

' Error Tolerance '

1.00e-5 = TOL = MAX ALLOWED (NORM OF |G>=AC|E>-ACA|X>)/(NORM OF AC|E>)

' Maximum number of iterations '

1000 = MXITER

' Integration limiter for PBC calculations '

1.00e-2 = GAMMA (1e-2 is normal, 3e-3 for greater accuracy)

' Angular resolution for calculation of <cos>, etc. '

0.5 = ETASCA (number of angles is proportional to [(3+x)/ETASCA]^2 )

' Wavelengths (micron) '

0.48 1.0 130 'LIN' = wavelengths (1st,last,howmany,how=LIN,INV,LOG,TAB)

' Refractive index of ambient medium '

1.333 = NAMBIENT

' Effective Radii (micron) '

0.00648 0.00648 1 'LIN' = eff. radii (1st,last,howmany,how=LIN,INV,LOG,TAB)

' Define Incident Polarizations '

(0,0) (1.,0.) (0.,0.) = Polarization state e01 (k along x axis)

2 = IORTH (=1 to do only pol. state e01; =2 to also do orth. pol. state)

' Specify which output files to write '

0 = IWRKSC (=0 to suppress, =1 to write ".sca" file for each target orient.

' Specify Target Rotations '

0. 360.0 20 = BETAMI, BETAMX, NBETA (beta=rotation around a1)

0. 180.0 10 = THETMI, THETMX, NTHETA (theta=angle between a1 and k)

0. 360.0 20 = PHIMIN, PHIMAX, NPHI (phi=rotation angle of a1 around k)

' Specify first IWAV, IRAD, IORI (normally 0 0 0) '

0 0 0 = first IWAV, first IRAD, first IORI (0 0 0 to begin fresh)

' Select Elements of S_ij Matrix to Print '

9 = NSMELTS = number of elements of S_ij to print (not more than 9)

11 12 21 22 31 33 44 34 43 = indices ij of elements to print

' Specify Scattered Directions '

'LFRAME' = CMDFRM (LFRAME, TFRAME for Lab Frame or Target Frame)

1 = NPLANES = number of scattering planes

0. 0. 180. 1 = phi, theta_min, theta_max (deg) for plane A ]]>

> FATAL ERROR IN PROCEDURE: ZBCG2WP

> ITERN>ITERMX

> EXECUTION ABORTED

Your ddscat.par file includes the line

100 = MXITER

ddscat reached IT=100 iterations but hadn't quite reached the specified error tolernace of 1.e-5, so it terminated the calculation. If you increase the value of MXITER (to, e.g., 1000) I think that you will find that ddscat will run successfully (on my laptop, IT=133 iterations were required for convergence to ferr < 1.e-5).

]]>To do this I put the ddscat program, and ddscat.par file in a new directory. When I run the program it generates the mtable, qtable, qtable2 and target.out files, but not any .avg, .fml or .sca files. The qtable extinction data is empty. When executing, the program appears to make it through the 100 iterations, but then closes out after. The problem seems to be related to the aeff and/or the shape parameters. When I make the aeff too small or the shape parameters too large, then I get the problem as I described. I have been trying to keep the shape parameters large enough to have ~10000 dipoles. But if I set the aeff to match my experimental samples, then the program doesn't generate extinction data (it does seem to work for much larger aeff sizes).

Below is an example of a .par file that I have been using for a gold rod with dimensions L=37 nm (including end caps) and d=7 nm. Therefore the aeff for this geometry is 0.0068 microns. I tried to make the shape parameters a multiple of 2 (60 x 14), to get over 10000 dipoles.

I have tried this on the Windows precompiled version, as well as on a Linux system with the latest version. I would be tremendously grateful if you could give me any insight on what I might be doing wrong.

' ========== Parameter file for v7.3 ==================='

' Preliminaries '

'NOTORQ' = CMDTRQ*6 (DOTORQ, NOTORQ) — either do or skip torque calculations

'PBCGS2' = CMDSOL*6 (PBCGS2, PBCGST, GPBICG, QMRCCG, PETRKP) — CCG method

'GPFAFT' = CMETHD*6 (GPFAFT, FFTMKL) — FFT method

'GKDLDR' = CALPHA*6 (GKDLDR, LATTDR, FLTRCD) — DDA method

'NOTBIN' = CBINFLAG (NOTBIN, ORIBIN, ALLBIN) — binary output?

' Initial Memory Allocation '

100 100 100 = dimensioning allowance for target generation

' Target Geometry and Composition '

'CYLNDRCAP' = CSHAPE*9 shape directive

60 14 = shape parameters 1 - 2

1 = NCOMP = number of dielectric materials

'../diel/Au_evap' = file with refractive index 1

' Additional Nearfield calculation? '

0 = NRFLD (=0 to skip nearfield calc., =1 to calculate nearfield E)

0.0 0.0 0.0 0.0 0.0 0.0 (fract. extens. of calc. vol. in -x,+x,-y,+y,-z,+z)

' Error Tolerance '

1.00e-5 = TOL = MAX ALLOWED (NORM OF |G>=AC|E>-ACA|X>)/(NORM OF AC|E>)

' Maximum number of iterations '

100 = MXITER

' Integration limiter for PBC calculations '

1.00e-2 = GAMMA (1e-2 is normal, 3e-3 for greater accuracy)

' Angular resolution for calculation of <cos>, etc. '

0.5 = ETASCA (number of angles is proportional to [(3+x)/ETASCA]^2 )

' Wavelengths (micron) '

0.650 0.650 1 'LIN' = wavelengths (1st,last,howmany,how=LIN,INV,LOG,TAB)

' Refractive index of ambient medium '

1.333 = NAMBIENT

' Effective Radii (micron) '

0.0068 0.0068 1 'LIN' = eff. radii (1st,last,howmany,how=LIN,INV,LOG,TAB)

' Define Incident Polarizations '

(0,0) (1.,0.) (0.,0.) = Polarization state e01 (k along x axis)

1 = IORTH (=1 to do only pol. state e01; =2 to also do orth. pol. state)

' Specify which output files to write '

0 = IWRKSC (=0 to suppress, =1 to write ".sca" file for each target orient.

' Specify Target Rotations '

0. 0. 1 = BETAMI, BETAMX, NBETA (beta=rotation around a1)

0. 0. 1 = THETMI, THETMX, NTHETA (theta=angle between a1 and k)

0. 0. 1 = PHIMIN, PHIMAX, NPHI (phi=rotation angle of a1 around k)

' Specify first IWAV, IRAD, IORI (normally 0 0 0) '

0 0 0 = first IWAV, first IRAD, first IORI (0 0 0 to begin fresh)

' Select Elements of S_ij Matrix to Print '

9 = NSMELTS = number of elements of S_ij to print (not more than 9)

11 12 21 22 31 33 44 34 43 = indices ij of elements to print

' Specify Scattered Directions '

'LFRAME' = CMDFRM (LFRAME, TFRAME for Lab Frame or Target Frame)

1 = NPLANES = number of scattering planes

0. 0. 180. 1 = phi, theta_min, theta_max (deg) for plane A