### Buried particles

Scattering from a sample containing spherical embedded particles.

• From top to bottom, the sample is composed of the air layer, an intermediate material layer, and the substrate.
• The particles are spheres with radius $10.2$ nm.
• They are placed vertically in the middle of the intermediate layer. The depth to place the spheres is measured between the top of the layer and the bottom of the particles.
• There is no interference between the scattered waves. The horizontal distribution of the particles is diluted.
• The wavelength is equal to $1.5$ $\unicode{x212B}$.
• The incident angles are $\alpha_i = 0.15 ^{\circ}$ and $\phi_i = 0^{\circ}$.
  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 57 58 59 60 61 62  """ Spherical particles embedded in the middle of the layer on top of substrate. """ import bornagain as ba from bornagain import deg, angstrom, nm def get_sample(): """ Returns a sample with spherical particles in an layer between air and substrate. """ # defining materials m_ambience = ba.HomogeneousMaterial("Air", 0.0, 0.0) m_interm_layer = ba.HomogeneousMaterial("IntermLayer", 3.45e-6, 5.24e-9) m_substrate = ba.HomogeneousMaterial("Substrate", 7.43e-6, 1.72e-7) m_particle = ba.HomogeneousMaterial("Particle", 0.0, 0.0) # collection of particles ff_sphere = ba.FormFactorFullSphere(10.2*nm) sphere = ba.Particle(m_particle, ff_sphere) sphere.setPosition(0.0, 0.0, -25.2) particle_layout = ba.ParticleLayout() particle_layout.addParticle(sphere, 1.0) # assembling the sample air_layer = ba.Layer(m_ambience) intermediate_layer = ba.Layer(m_interm_layer, 30.*nm) intermediate_layer.addLayout(particle_layout) substrate_layer = ba.Layer(m_substrate, 0) multi_layer = ba.MultiLayer() multi_layer.addLayer(air_layer) multi_layer.addLayer(intermediate_layer) multi_layer.addLayer(substrate_layer) return multi_layer def get_simulation(): """ Returns a GISAXS simulation. """ simulation = ba.GISASSimulation() simulation.setSample(get_sample()) simulation.setDetectorParameters(200, -1*deg, +1*deg, 200, 0*deg, +2*deg) simulation.setBeamParameters(1.5*angstrom, 0.15*deg, 0.0*deg) return simulation def run_simulation(): """ Runs simulation and returns intensity map. """ simulation = get_simulation() simulation.setSample(get_sample()) simulation.runSimulation() return simulation.result() if __name__ == '__main__': result = run_simulation() ba.plot_simulation_result(result, cmap='jet', aspect='auto') 
BuriedParticles.py