The physical value of a_eff is specified in ddscat.par.

The shape of the ellipsoid, and the number of dipoles that will be used, is determined when you set parameters SHPAR_1, SHPAR_2, SHPAR_3 (=A,B,C)

]]>MPI.f = $(MPI_f)

MPI.o - $(MPI_o)

i.e., there should be no space between the $ and (

2. When you compile and link, which of the following do you see used?

mpi_subs.f90 etc. on compilation and mpi_subs.o on linking,

or mpi_fake.f90 and mpi_fake.o ?

other codes using MPI have been successfully implemented in our system, therefore ours should be able to work too. Also, the job submission procedures are correctly implemented in our system. We have followed all the instructions in the USer Guide: we changed the PBCGS2 parameter to PBCGST in the file ddscat.par; also, in the "Makefile" we commented the initial parameters and commented the necessary ones:

DMPI = -Dmpi

MPI.f = $ (MPI_f)

MPI.o = $ (MPI_o)

Nevertheless, it still does not seem to work. Should we be changing any other parameters? If not, is there any parameter we stated incorrectly?

Thank you very much again.

]]>Have you succeeded running any other code using MPI on your system?

]]>I am executing ddscat as a part of a University Thesis and I am having trouble using MPI for parallel calculations. I have followed all the instructions in the User Guide, having changed all the parameters necessary in both files "ddscat.par" and "Makefile". Once compiled, I am having trouble making the code understand it has to separate itself in different cores: it keeps on calculating everything in a single node. How do I manage to tell the code to run separately? Is there a parameter I should change that I don't know about?

Thank you!

]]>Section 29 of the UserGuide describes what to do.

When you run with NRFLD=1, ddscat will create binary files wxxxryyykzzz.poln

The program ddpostprocess can read these files and write out selected data, such

as the polarizations, in files that can be used by other software, such as VTK.

Please see section 30.1 of the UserGuide.

You may wish to modify DDPOSTPROCESS.f90 to better meet your needs — see section 30.2 of the UserGuide. ]]>

but I cant compile wxxxryyykzzz.poln .Could you help me ]]>

FATAL ERROR IN PROCEDURE: ZBCG2WP

ITERN>ITERMX

EXECUTION ABORTED

How to solve this problem? Thanks a lot!

]]>The changes recommended by Dr. Ruzankin have now been implemented in a new release, DDSCAT 7.3.2, released today (2016 August 25) and available for download from ddscat.org — go to the "Downloads" tab. At this point in time we consider DDSCAT 7.3.2 to be fully compatible with MPI. If users encounter bugs with use under MPI, they should report them here.

]]>However, I just tried your solution and I got the exact same values for the Qext values in the qtable! What is happening?? Do you think I am just trying to make too small of a shape? I used the vtrconvert and paraview to look at my target, and it looks like an ellipsoid as I expect it should.

Any other ideas?

]]>The best example I can give to help troubleshoot my issue is this ellipsoid (ddscat.par file copied at the bottom). I intended to create an ellipsoid with dimensions 7x7x11 nm and approximately 10,000 dipoles. I want the Qext values over a wavelength range of 200-1000 nm. I have tried this file for theta=0, theta=90, theta=0-90 (with 10 angles), as well as 0-90 for beta and theta, all while holding all the other angles constant at 0.. and every time I get the exact same Qext values. Shouldn't I get different extinction values when I am looking at the ellipsoid head on versus when it is rotated 90 degrees so I am looking at the long edge? Do you notice anything I am missing or doing wrong or do you have any suggestions of what I might try to change??

I've tried making this larger (70x70x110) and I've tried with as many as 100,000 dipoles as well, never with any success at recognizing the longer edge. I am using version 7.3.1, but not the most recent version of it.

Thank you!!

' ========== 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 '

'ELLIPSOID' = CSHAPE*9 shape directive

25 25 39.286 = shape parameters 1 - 3

1 = NCOMP = number of dielectric materials

'../diel/polystyeq' = 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) '

200 1000 801 'LIN' = wavelengths (1st,last,howmany,how=LIN,INV,LOG,TAB)

' Refractive index of ambient medium '

1.0000 = NAMBIENT

' Effective Radii (micron) '

4.0691 4.0691 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. 0. 1 = BETAMI, BETAMX, NBETA (beta=rotation around a1)

0. 90. 10 = 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

The latest release 7.3.1_160608 has fixed this. The user may now specify up to 1 million orientations. ]]>

In version 7.3.1's code (version 160601), in reapar.f90:

1470 ! check that user has not requested more than 1000 orientations and

1471 ! IWRKSC=1

1472

1473 IF(IWRKSC>0.AND.(NBETA*NTHETA*NPHI)>1000)THEN

1474 CALL ERRMSG('FATAL','REAPAR', &

1475 'error: if IWRKSC=1, NBETA*NTHETA*NPHI must be .le. 1000')

1476 ENDIF

Given the changes to the code in 7.3, this can be removed.

]]>