diff --git a/auto/Examples/specular/Basic.py b/auto/Examples/specular/Basic.py new file mode 100755 index 0000000000000000000000000000000000000000..fee43d8ced1035c6cdd0816f6da01adfef9f88dd --- /dev/null +++ b/auto/Examples/specular/Basic.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python3 +""" +""" +import numpy as np +import bornagain as ba +from bornagain import ba_plot as bp, nm + +def get_sample(): + # Materials + material_A = ba.MaterialBySLD("A", 5e-06, 0) + material_substrate = ba.MaterialBySLD("Substrate", 2e-06, 0) + + # Layers + ambient_layer = ba.Layer(ba.Vacuum()) + film = ba.Layer(material_A, 30*nm) + substrate_layer = ba.Layer(material_substrate) + + # Sample + sample = ba.MultiLayer() + sample.addLayer(ambient_layer) + sample.addLayer(film) + sample.addLayer(substrate_layer) + + return sample + +def get_simulation(sample): + "Specular simulation with a qz-defined beam" + n = 500 + qzs = np.linspace(0.01, 1, n) # qz-values + scan = ba.QzScan(qzs) + return ba.SpecularSimulation(scan, sample) + + +if __name__ == '__main__': + sample = get_sample() + simulation = get_simulation(sample) + result = simulation.simulate() + bp.plot_simulation_result(result) diff --git a/auto/Examples/varia/OpaqueProfile1.py b/auto/Examples/varia/OpaqueProfile1.py new file mode 100755 index 0000000000000000000000000000000000000000..208ece32fa87af3bc3871f01237f58994d1249ca --- /dev/null +++ b/auto/Examples/varia/OpaqueProfile1.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python3 +""" +Depth profile of an opaque sample. +""" +import bornagain as ba +from bornagain import angstrom, ba_plot as bp, deg, nm + +# beam data +ai_min = 0 # minimum incident angle +ai_max = 1*deg # maximum incident angle +wl = 0.03*nm # wavelength in angstroms + +# depth position span +z_min = -400*nm +z_max = 100*nm + + +def get_sample(): + # Define materials + material_vac = ba.RefractiveMaterial("Vac", 0, 0) + material_A = ba.RefractiveMaterial("A", 1e-5, 3e-6) + + # Define layers + layer_top = ba.Layer(material_vac) + layer_1 = ba.Layer(material_A, 300*nm) + layer_bot = ba.Layer(material_vac) + + # Define sample + sample = ba.MultiLayer() + sample.addLayer(layer_top) + sample.addLayer(layer_1) + sample.addLayer(layer_bot) + + return sample + + +def get_simulation(sample): + """ + Returns a depth-probe simulation. + """ + nz = bp.simargs['n'] + na = 10*nz + + scan = ba.AlphaScan(na, ai_min, ai_max) + scan.setWavelength(wl) + footprint = ba.FootprintSquare(0.01) + scan.setFootprint(footprint) + + z_axis = ba.FixedBinAxis("z", nz, z_min, z_max) + simulation = ba.DepthprobeSimulation(scan, sample, z_axis) + + return simulation + + +if __name__ == '__main__': + bp.parse_args(sim_n=500, aspect='auto', intensity_max=1, intensity_min=1e-200) + sample = get_sample() + simulation = get_simulation(sample) + result = simulation.simulate() + bp.plot_simulation_result(result) diff --git a/auto/MiniExamples/specular/Basic.py b/auto/MiniExamples/specular/Basic.py new file mode 100755 index 0000000000000000000000000000000000000000..ef19e891e4224b0cbd5cba58384498a5ed37e94d --- /dev/null +++ b/auto/MiniExamples/specular/Basic.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python3 +""" +""" +import numpy as np +import bornagain as ba +from bornagain import ba_plot as bp, nm + +def get_sample(): + # Materials + material_A = ba.MaterialBySLD("A", 5e-06, 0) + material_substrate = ba.MaterialBySLD("Substrate", 2e-06, 0) + + # Layers + ambient_layer = ba.Layer(ba.Vacuum()) + film = ba.Layer(material_A, 30*nm) + substrate_layer = ba.Layer(material_substrate) + + # Sample + sample = ba.MultiLayer() + sample.addLayer(ambient_layer) + sample.addLayer(film) + sample.addLayer(substrate_layer) + + return sample + +def get_simulation(sample): + "Specular simulation with a qz-defined beam" + n = 50 + qzs = np.linspace(0.01, 1, n) # qz-values + scan = ba.QzScan(qzs) + return ba.SpecularSimulation(scan, sample) + + +if __name__ == '__main__': + sample = get_sample() + simulation = get_simulation(sample) + result = simulation.simulate() + bp.plot_simulation_result(result) diff --git a/auto/MiniExamples/varia/OpaqueProfile1.py b/auto/MiniExamples/varia/OpaqueProfile1.py new file mode 100755 index 0000000000000000000000000000000000000000..208ece32fa87af3bc3871f01237f58994d1249ca --- /dev/null +++ b/auto/MiniExamples/varia/OpaqueProfile1.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python3 +""" +Depth profile of an opaque sample. +""" +import bornagain as ba +from bornagain import angstrom, ba_plot as bp, deg, nm + +# beam data +ai_min = 0 # minimum incident angle +ai_max = 1*deg # maximum incident angle +wl = 0.03*nm # wavelength in angstroms + +# depth position span +z_min = -400*nm +z_max = 100*nm + + +def get_sample(): + # Define materials + material_vac = ba.RefractiveMaterial("Vac", 0, 0) + material_A = ba.RefractiveMaterial("A", 1e-5, 3e-6) + + # Define layers + layer_top = ba.Layer(material_vac) + layer_1 = ba.Layer(material_A, 300*nm) + layer_bot = ba.Layer(material_vac) + + # Define sample + sample = ba.MultiLayer() + sample.addLayer(layer_top) + sample.addLayer(layer_1) + sample.addLayer(layer_bot) + + return sample + + +def get_simulation(sample): + """ + Returns a depth-probe simulation. + """ + nz = bp.simargs['n'] + na = 10*nz + + scan = ba.AlphaScan(na, ai_min, ai_max) + scan.setWavelength(wl) + footprint = ba.FootprintSquare(0.01) + scan.setFootprint(footprint) + + z_axis = ba.FixedBinAxis("z", nz, z_min, z_max) + simulation = ba.DepthprobeSimulation(scan, sample, z_axis) + + return simulation + + +if __name__ == '__main__': + bp.parse_args(sim_n=500, aspect='auto', intensity_max=1, intensity_min=1e-200) + sample = get_sample() + simulation = get_simulation(sample) + result = simulation.simulate() + bp.plot_simulation_result(result)