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.

Download the following example script, and save it under the name AlternatingLayers.py.

Alternatively, all example scripts can also be found in the BornAgain distribution:

C:\BornAgain-1.19.0\Examples\python

/Applications/BornAgain.app/Contents/share/BornAgain-1.19/Examples/python

install_dir/share/BornAgain-1.19/Examples/python

 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
#!/usr/bin/env python3
"""
Basic example of specular reflectometry simulation with BornAgain.
The sample consists of 20 alternating Ti and Ni layers.
"""
import bornagain as ba
from bornagain import deg, angstrom


def get_sample():
    # 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 i in range(10):
        sample.addLayer(ti_layer)
        sample.addLayer(ni_layer)
    sample.addLayer(substrate_layer)

    return sample


def get_simulation(sample, scan_size=500):
    simulation = ba.SpecularSimulation()
    scan = ba.AngularSpecScan(1.54*angstrom, scan_size, 0, 2*deg)
    simulation.setScan(scan)
    simulation.setSample(sample)
    return simulation


if __name__ == '__main__':
    import ba_plot
    sample = get_sample()
    simulation = get_simulation(sample)
    ba_plot.run_and_plot(simulation)
AlternatingLayers.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 AlternatingLayers.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 (*nix)

Under *nix (Linux, MacOS), the script can also be launched without typing python at the command prompt:

AlternatingLayers.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 AlternatingLayers.py