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