Add Si vs scattering order
This commit is contained in:
		
							parent
							
								
									7f33daf856
								
							
						
					
					
						commit
						d00c537f30
					
				|  | @ -0,0 +1,70 @@ | ||||||
|  | # coding: utf8 | ||||||
|  | 
 | ||||||
|  | import numpy as np | ||||||
|  | from ase.build import bulk | ||||||
|  | 
 | ||||||
|  | from msspec.calculator import MSSPEC, XRaySource | ||||||
|  | from msspec.iodata import Data | ||||||
|  | from msspec.utils import hemispherical_cluster, get_atom_index | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # Create the cluster | ||||||
|  | a = 5.43 | ||||||
|  | Si = bulk('Si', a=a, cubic=True) | ||||||
|  | cluster = hemispherical_cluster(Si, | ||||||
|  |                                 diameter=30, planes=4, | ||||||
|  |                                 emitter_plane=3, | ||||||
|  |                                 shape = 'cylindrical', | ||||||
|  |                                 ) | ||||||
|  | for atom in cluster: | ||||||
|  |     atom.set('mean_square_vibration', 0.006) | ||||||
|  |     atom.set('mt_radius', 1.1) | ||||||
|  | cluster.emitter = get_atom_index(cluster, 0, 0, 0) | ||||||
|  | 
 | ||||||
|  | # Create a calculator and set parameters | ||||||
|  | calc = MSSPEC(spectroscopy='PED', algorithm='expansion') | ||||||
|  | 
 | ||||||
|  | calc.source_parameters.energy = XRaySource.AL_KALPHA | ||||||
|  | calc.source_parameters.theta  = -54.7 | ||||||
|  | calc.source_parameters.phi    = 90 | ||||||
|  | calc.spectroscopy_parameters.final_state = 1 | ||||||
|  | 
 | ||||||
|  | calc.tmatrix_parameters.tl_threshold = 1e-4 | ||||||
|  | calc.calculation_parameters.vibrational_damping = 'averaged_tl' | ||||||
|  | calc.calculation_parameters.RA_cutoff = 2 | ||||||
|  | 
 | ||||||
|  | my_filters = ('forward_scattering', 'distance_cutoff') | ||||||
|  | calc.calculation_parameters.path_filtering = my_filters | ||||||
|  | calc.calculation_parameters.distance = 30 | ||||||
|  | calc.calculation_parameters.off_cone_events = 0 | ||||||
|  | [a.set('forward_angle', 40) for a in cluster] | ||||||
|  | 
 | ||||||
|  | calc.set_atoms(cluster) | ||||||
|  | 
 | ||||||
|  | # Compute and add previous data for comparison | ||||||
|  | data = None | ||||||
|  | for i in range(1,4): | ||||||
|  |     calc.calculation_parameters.scattering_order = i | ||||||
|  |     data = calc.get_theta_scan(level='2p', | ||||||
|  |                                 theta=np.arange(-30., 80., 0.5), | ||||||
|  |                                 phi=0, | ||||||
|  |                                 kinetic_energy=1382.28, data=data) | ||||||
|  | 
 | ||||||
|  | # Put all orders on the same view | ||||||
|  | dset = data[0] | ||||||
|  | dset.add_columns(cs2=data[1].cross_section) | ||||||
|  | dset.add_columns(cs3=data[2].cross_section) | ||||||
|  | view1 = dset.views[0] | ||||||
|  | view1.select('theta', 'cross_section', index=0, legend="Scattering order 1") | ||||||
|  | view1.select('theta', 'cs2', legend="Scattering order 2") | ||||||
|  | view1.select('theta', 'cs3', legend="Scattering order 3") | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | no_filters = Data.load('path_filtering.hdf5') | ||||||
|  | dset.add_columns(no_filters=no_filters[0].cross_section) | ||||||
|  | view2 = dset.add_view('comparison', **view1._plotopts) | ||||||
|  | view2._plotopts['legend'] = [] | ||||||
|  | view2.select('theta', 'cs3', legend="With path filtering") | ||||||
|  | view2.select('theta', 'no_filters', legend="Without path filtering") | ||||||
|  | 
 | ||||||
|  | data.view() | ||||||
		Loading…
	
		Reference in New Issue