Running a script

To get started with BornAgain scripting, run a first example.

We assume that BornAgain and Python are installed and that you verified that the Python interpreter can find the module bornagain.

We shall now run a first example script. This and all other example scripts can also be found in the BornAgain distribution, in directory Examples.

Download the following example script, using the link just below the code frame. Save the script under the name AlternatingLayers1.py.

 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
#!/usr/bin/env python3
"""
Basic example of specular reflectometry simulation.
"""

import bornagain as ba
from bornagain import ba_plot as bp, deg, angstrom


def get_sample():
    """
    Sample consisting of 20 alternating Ti and Ni layers.
    """

    # Define materials
    m_ambient = ba.MaterialBySLD("Vacuum", 0, 0)
    m_ti = ba.MaterialBySLD("Ti", -1.9493e-06, 0)
    m_ni = ba.MaterialBySLD("Ni", 9.4245e-06, 0)
    m_substrate = ba.MaterialBySLD("SiSubstrate", 2.0704e-06, 0)

    # Define layers
    ambient_layer = ba.Layer(m_ambient)
    ti_layer = ba.Layer(m_ti, 30*angstrom)
    ni_layer = ba.Layer(m_ni, 70*angstrom)
    substrate_layer = ba.Layer(m_substrate)

    # Define sample
    sample = ba.MultiLayer()
    sample.addLayer(ambient_layer)
    for _ in range(10):
        sample.addLayer(ti_layer)
        sample.addLayer(ni_layer)
    sample.addLayer(substrate_layer)

    return sample


def get_simulation(sample):
    n = bp.simargs['n']
    scan = ba.AlphaScan(n, 2*deg/n, 2*deg)
    scan.setWavelength(1.54*angstrom)
    return ba.SpecularSimulation(scan, sample)


if __name__ == '__main__':
    bp.parse_args(sim_n=500)
    sample = get_sample()
    simulation = get_simulation(sample)
    result = simulation.simulate()
    bp.plot_simulation_result(result)
Examples/specular/AlternatingLayers1.py

For a discussion of the content of this script, see simulation/reflectometry.

From the command line

At the command prompt in a terminal, launch the script with the command

python AlternatingLayers1.py

(on systems that still have Python2, the command may rather be python3).

As result, a MatPlotLib window should pop up, and display this reflectometry curve:

Short call (Linux, Mac)

Under a Unix shell, the script can also be launched without typing python at the command prompt:

AlternatingLayers1.py

This is made possible by the line “#!/usr/bin/env python3” on top of the script. It may be necessary to make the script executable by

chmod a+x AlternatingLayers1.py