Learn R Programming

nanop (version 2.0-6)

calcTotalScatt: Functions to calculate the 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

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

Value

calcTotalScatt: list with elementsQnumeric vector of values at which the function was evaluated,gQnumeric vector of function values.IqSAS and IqSASP: numeric vector of function values.

Rdversion

1.1

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\pi})^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 $\mu$ and $\nu$ is calculated as $$\sigma^2_{\mu, \nu} = (\sigma^2_{\mu} + \sigma^2_{\nu} ) [ 1 - \frac{\delta}{r^n}].$$

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.

See Also

simPart, displacePart

Examples

Run this code
## 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")

Run the code above in your browser using DataLab