48 lines
1.3 KiB
Python
48 lines
1.3 KiB
Python
from ase.build import bulk
|
|
from msspec.calculator import MSSPEC
|
|
from msspec.utils import hemispherical_cluster, get_atom_index, cut_plane
|
|
import numpy as np
|
|
from matplotlib import pyplot as plt
|
|
|
|
|
|
Ag = bulk('Ag', cubic=True)
|
|
Ag.rotate((1,1,1), (0,0,1), rotate_cell=True)
|
|
Ag.rotate(15, 'z', rotate_cell=True)
|
|
|
|
cluster = hemispherical_cluster(Ag, diameter=20, emitter_plane=0)
|
|
|
|
cluster = cut_plane(cluster, z=-4.8)
|
|
cluster.emitter = get_atom_index(cluster, 0,0,0)
|
|
cluster[cluster.emitter].symbol = 'Sb'
|
|
|
|
cluster.edit()
|
|
|
|
calc = MSSPEC(spectroscopy='PED', algorithm='inversion')
|
|
calc.set_atoms(cluster)
|
|
|
|
calc.source_parameters.theta = 0
|
|
calc.source_parameters.phi = 0
|
|
|
|
calc.detector_parameters.angular_acceptance = 1
|
|
calc.detector_parameters.average_sampling = 'low'
|
|
|
|
calc.muffintin_parameters.interstitial_potential = 0
|
|
data = calc.get_phi_scan(level='4d', theta=40, phi=np.linspace(0,240,121), kinetic_energy=45)
|
|
|
|
# normalize data between [0,1]
|
|
dset = data[0]
|
|
dset.cross_section -= dset.cross_section.min()
|
|
dset.cross_section /= dset.cross_section.max()
|
|
|
|
# Add experimental data points in the dataset
|
|
x, y = np.loadtxt('data.txt').T
|
|
dset.add_columns(experiment=y)
|
|
|
|
# Add points to view
|
|
view = dset.views[0]
|
|
view.select('phi', 'experiment', legend='Exp. data')
|
|
|
|
data.view()
|
|
|
|
calc.shutdown()
|