diff --git a/Activity03/PhysRevB.26.3181.pdf b/Activity03/PhysRevB.26.3181.pdf new file mode 100644 index 0000000..be1d960 Binary files /dev/null and b/Activity03/PhysRevB.26.3181.pdf differ diff --git a/Activity03/adsorbate.py b/Activity03/adsorbate.py new file mode 100644 index 0000000..a55cf53 --- /dev/null +++ b/Activity03/adsorbate.py @@ -0,0 +1,45 @@ +from ase.build import bulk, add_adsorbate, fcc100 +from msspec.calculator import MSSPEC +from msspec.utils import cut_cylinder +import numpy as np + +cluster = fcc100('Ni', size=(2, 2, 2)) +add_adsorbate(cluster, 'Se', 1.55, 'hollow') +#add_adsorbate(cluster, 'Se', 2.34, 'ontop') +cluster = cluster.repeat((10,10,1)) + + +def get_index_close_to_origin(): + iSe = [atom.index for atom in cluster if atom.symbol == 'Se'] + R = np.linalg.norm(cluster.positions[iSe], axis=1) + i = iSe[np.argmin(R)] + return i + +cluster.center(about=(0,0,0)) +i = get_index_close_to_origin() +cluster.positions -= cluster[i].position + +cluster = cut_cylinder(cluster, radius=10) +emitter = get_index_close_to_origin() +cluster.emitter = emitter + +if False: + cluster.edit() + exit() + +calc = MSSPEC(spectroscopy='PED', algorithm='expansion') +calc.set_atoms(cluster) + +calc.source_parameters.theta = -60 +calc.calculation_parameters.scattering_order = 3 +calc.calculation_parameters.path_filtering = 'forward_scattering' +[a.set('forward_angle', 30) for a in cluster] +calc.muffintin_parameters.interstitial_potential = 13.2 + +data = calc.get_energy_scan(level='3d', kinetic_energy=[50,110,20], theta=0, phi=0) +data = calc.get_energy_scan(level='3d', kinetic_energy=[50,110,20], theta=0, phi=45, data=data) + +data.view() + + +#cluster.edit()