# calcTotalScatt: Functions to calculate the total scattering structure... In nanop: Tools for Nanoparticle Simulation and Calculation of PDF and Total Scattering Structure Function

## Description

Functions to calculate the total scattering structure function given a matrix in which each row represents the position of an atom or to simulate it in the SAS region using particle lattice and size parameters.

## Usage

 1 2 3 4 5 6 7 calcTotalScatt(nanop, dQ=.01, minQ=0.771, maxQ=35, type="neutron", scatterFactor=NA, scatterLength=NA, sigma=NA, n=0, delta=0, kind="fastHist", dr = 0.001, del = 0.01, eps=1e-3) IqSAS(Q, Rcore=NA, Rpart, latticep, latticepShell=NA, scatterLength, N1, N2=NA, pDimer=0, sym, symShell=NA) IqSASP(Q, shell=NA, Rpart, latticep, latticepShell=NA, scatterLength, N1, N2=NA, pDimer=0, sym, symShell=NA, rsigma) 

## Arguments

 nanop numeric matrix in which each row gives the coordinates of an atomic position in the nanoparticle. If nanop is not an object returned by simPart or displacePart then attributes dimer, nAtomTypes, atomType, layer_start, layer_end, layerS_start, layerS_end, r and rcore should be set manually; see simPart. dQ numeric indicating the desired step size in Q. minQ numeric indicating the minimum value of Q for which the function should be evaluated. maxQ numeric indicating the maximum value of Q for which the function should be evaluated. type character indicating type of scattering. Either "X-ray" or "neutron". scatterFactor list containing X-ray scattering factor parameters; see details. If NA the value is sought in nanop attributes. scatterLength in calcTotalScatt function call, numeric vector describing neutron scattering lengths for all atom types in the particles. If NA the value is sought in nanop attributes. In IqSAS and IqSASP calls, numeric vector describing average neutron scattering length for the particle core and shell; see examples. sigma numeric vector which, if not NA, determines the variances of the Gaussian displacements from the mean atomic positions throughout the nanoparticle. If NA the value is sought in nanop attributes. See simPart for details. n, delta numerics describing the correlation parameters n and δ for thermal atomic displacements; see details. kind character, can be set to "exact", "fast", "fast_av" or "fastHist". If "exact" the Debye sum is calculated as is, that can be relatively time-consuming. If "fast", "fast_av" or "fastHist" then the pseudogrid approach (Cervellino et al., 2006) is used. If "fastHist" the histogram bin approach is used to calculate interatomic distances and their multiplicities. Option "fast_av" should be used if nanop attribute "r" length greater than 1, i.e. for polydisperse particles . Nonzero dr value in that case switches computational scheme to histogram bin approach. In most case "fastHist" is recommended for better performance. dr numeric. If kind="fastHist" or "fast_av" describes histogram bin width. del numeric. If kind="fast" or "fast_av" describes the pseudolattice parameter Δ. eps numeric. If kind="fast" or "fast_av" describes the step size ε for interatomic distances. Q numeric vector, contains grid points on which the total scattering structure function should be evaluated. N1, N2 numerics indicating number of atoms within the unit cell in the particle core and shell. Rcore numeric which, if not NA, determines the radius of the core. Rpart numeric indicating the radius of the nanoparticle latticep, latticepShell numeric vectors indicating the lattice parameter(s) for the core (shell); see simPart. pDimer numeric indicating probability of atom to form a cluster with its neighbour. sym, symShell characters describing the structure to be used; see simPart. shell numeric indicating shell thickness for the core/shell particle. For polydisperse particles shell is supposed to be of constant thickness. rsigma numeric indicating standard deviation in the log normal distribution of the particle (core) radius.

## Details

The X-ray scattering factor is approximated by the function

f(s)=a_1 * exp(-b_1 s) + a_2 * exp(-b_2 s) + a_3 * exp(-b_3 s) + a_4 * exp(-b_4 s) + c

where s = (\frac{Q}{4π})^2. The constants in the function are possible to specify as arguments. In that case scatterFactor parameter should contain vectors a1, b1, a2, b2, a3, b3, a4, b4, a5, b5 and c. Their default values correspond to the values for Au and Pd atoms.

The correlated atomic displacement parameter for the atoms μ and ν is calculated as

σ^2_{μ, ν} = (σ^2_{μ} + σ^2_{ν} ) [ 1 - \frac{δ}{r^n}].

## Value

calcTotalScatt: list with elements

 Q numeric vector of values at which the function was evaluated, gQ numeric vector of function values.

IqSAS and IqSASP: numeric vector of function values.

## Note

IqSASP function calculates total scattering function for the polydisperse uniform particles and polydisperse core/shell particles with constant shell thickness.

## References

Cervellino A, Giannini C, Guagliardi A. (2006): On the efficient evaluation of Fourier patterns for nanoparticles and clusters. J. Comput. Chem. 27, 995–1008.

simPart, displacePart
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ## simulate particle Au <- createAtom("Cu") Au$name <- "Au" Pd <- createAtom("Cu") Pd$name <- "Pd" part <- simPart(list(Au), atomsShell=list(Pd), r=10, rcore=8) gQ <- calcTotalScatt(part, type="neutron", sigma=c(.08, .012), kind="fast", del=5e-4) plot(gQ$Q, gQ$gQ, type="l") ## "fast_av" option to calculate scattering function ## for the array of polydisperse particles: Zn <- createAtom("Zn") S <- createAtom("S") part <- simPart(atoms=list(Zn, S), r=c(8, 10, 11.2, 13.4, 14), sym="hcp", latticep=c(4.3, 7.02)) gQ <- calcTotalScatt(part, type="neutron", sigma=c(.08, .012), kind="fast_av") plot(gQ$Q, gQ$gQ, type="l") ## total scattering function in small-angle region using ## parametric model: Q=seq(0.001, 0.771, 0.005) gQSAS <- IqSAS(Q=Q, Rpart=26, latticep=c(3.21, 5.21), scatterLength=7.1, N1=2, sym="hcp") plot(Q, log(abs(gQSAS)), type="l") ## total scattering function for polydisperse sample with ## lognormal distribution gQSAS2 <- IqSASP(Q=Q, shell=2.8, Rpart=11.2, latticep=c(4.08), latticepShell=3.89, N1=4, N2=4, scatterLength=c(7.1, 8.3), sym="fcc", symShell="fcc", rsigma=1.1) plot(Q, log(abs(gQSAS2)), type="l")