Finite square lattice

In this example, the lattice is finite, consisting of 40 times 40 unit cells. Otherwise the sample model is the same as in the basic square lattice example.

Real-space model

Scattering intensity

For comparison, scattering intensity with infinite lattice

 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
#!/usr/bin/env python3
"""
Cylinders forming a finite 2D square lattice
"""
import bornagain as ba
from bornagain import ba_plot as bp, deg, nm


def get_sample():
    """
    A sample with cylinders on a substrate, forming a finite 2D square lattice
    """

    # Materials
    material_particle = ba.RefractiveMaterial("Particle", 0.0006, 2e-08)
    material_substrate = ba.RefractiveMaterial("Substrate", 6e-06, 2e-08)
    vacuum = ba.RefractiveMaterial("Vacuum", 0, 0)

    # Particles
    ff = ba.Cylinder(3*nm, 3*nm)
    particle = ba.Particle(material_particle, ff)

    # 2D lattice
    lattice = ba.BasicLattice2D(25*nm, 25*nm, 90*deg, 30*deg)
    iff = ba.InterferenceFinite2DLattice(lattice, 40, 40)
    iff.setPositionVariance(1*nm)

    # Particle layouts
    layout = ba.StructuredLayout(iff)
    layout.addParticle(particle)

    # Layers
    layer_1 = ba.Layer(vacuum)
    layer_1.addStruct(layout)
    layer_2 = ba.Layer(material_substrate)

    # Sample
    sample = ba.Sample()
    sample.addLayer(layer_1)
    sample.addLayer(layer_2)

    return sample


def get_simulation(sample):
    beam = ba.Beam(1e9, 0.1*nm, 0.2*deg)
    n = 200
    detector = ba.SphericalDetector(n, -2*deg, 2*deg, n, 0, 2*deg)
    simulation = ba.ScatteringSimulation(beam, sample, detector)
    return simulation


if __name__ == '__main__':
    sample = get_sample()
    simulation = get_simulation(sample)
    result = simulation.simulate()
    bp.plot_datafield(result)
    bp.plt.show()
auto/Examples/scatter2d/FiniteSquareLattice.py