Cylinders in Distorted Wave Born Approximation

Scattering from a monodisperse distribution of cylindrical particles using the Distorted Wave Born Approxiamtion (DWBA).

This example is similar to the simulation Cylinders in Born Approximation, but now the particles sit on top of a substrate. Therefore incoming and scattered waves are distorted by reflections from the substrate surface, as described by the DWBA.

• The distribution of cylinders is monodisperse with heights and radii of $5$ nm.
• The wavelength is equal to $1$ $\unicode{x212B}$.
• The incident angles are equal to $\alpha_i = 0.2 ^{\circ}$ and $\varphi_i = 0^{\circ}$.
• No interference effects from inter-particle correlations (dilute-particles approximation).
  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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56  #!/usr/bin/env python3 """ Basic example of a DWBA simulation of a GISAS experiment: Scattering by a dilute random assembly of cylinders on a substrate. """ import bornagain as ba from bornagain import deg, nm def get_sample(): # Define materials material_Particle = ba.HomogeneousMaterial("Particle", 6e-4, 2e-08) material_Substrate = ba.HomogeneousMaterial("Substrate", 6e-6, 2e-08) material_Vacuum = ba.HomogeneousMaterial("Vacuum", 0, 0) # Define particles ff = ba.FormFactorCylinder(5*nm, 5*nm) particle = ba.Particle(material_Particle, ff) # Define particle layouts layout = ba.ParticleLayout() layout.addParticle(particle) layout.setTotalParticleSurfaceDensity(0.01) # Define layers layer_1 = ba.Layer(material_Vacuum) layer_1.addLayout(layout) layer_2 = ba.Layer(material_Substrate) # Define sample sample = ba.MultiLayer() sample.addLayer(layer_1) sample.addLayer(layer_2) return sample def get_simulation(sample): # Define beam wavelength = 0.1*nm alpha_i = 0.2*deg beam = ba.Beam(1, wavelength, ba.Direction(alpha_i, 0*deg)) # Define detector nPix = 200 # pixels per direction detector = ba.SphericalDetector(nPix, -2*deg, 2*deg, nPix, 0*deg, 2*deg) return ba.GISASSimulation(beam, sample, detector) if __name__ == '__main__': import ba_plot sample = get_sample() simulation = get_simulation(sample) ba_plot.run_and_plot(simulation) 
Cylinders.py