initial commit
This commit is contained in:
		
						commit
						921b4d7252
					
				|  | @ -0,0 +1,51 @@ | |||
| data_image0 | ||||
| _chemical_formula_structural       Cu26 | ||||
| _chemical_formula_sum              "Cu26" | ||||
| _cell_length_a       14.4 | ||||
| _cell_length_b       14.4 | ||||
| _cell_length_c       7.2 | ||||
| _cell_angle_alpha    90.0 | ||||
| _cell_angle_beta     90.0 | ||||
| _cell_angle_gamma    90.0 | ||||
| 
 | ||||
| _space_group_name_H-M_alt    "P 1" | ||||
| _space_group_IT_number       1 | ||||
| 
 | ||||
| loop_ | ||||
|   _space_group_symop_operation_xyz | ||||
|   'x, y, z' | ||||
| 
 | ||||
| loop_ | ||||
|   _atom_site_type_symbol | ||||
|   _atom_site_label | ||||
|   _atom_site_symmetry_multiplicity | ||||
|   _atom_site_fract_x | ||||
|   _atom_site_fract_y | ||||
|   _atom_site_fract_z | ||||
|   _atom_site_occupancy | ||||
|   Cu  Cu1       1.0  0.25  0.5  0.37500000000000017  1.0000 | ||||
|   Cu  Cu2       1.0  0.25  0.5  0.8750000000000001  1.0000 | ||||
|   Cu  Cu3       1.0  0.3750000000000001  0.37500000000000017  0.37500000000000017  1.0000 | ||||
|   Cu  Cu4       1.0  0.5  0.24999999999999992  0.37500000000000017  1.0000 | ||||
|   Cu  Cu5       1.0  0.5  0.37500000000000017  0.12499999999999996  1.0000 | ||||
|   Cu  Cu6       1.0  0.3750000000000001  0.37500000000000017  0.8750000000000001  1.0000 | ||||
|   Cu  Cu7       1.0  0.5  0.24999999999999992  0.8750000000000001  1.0000 | ||||
|   Cu  Cu8       1.0  0.5  0.37500000000000017  0.625  1.0000 | ||||
|   Cu  Cu9       1.0  0.3750000000000001  0.5  0.12499999999999996  1.0000 | ||||
|   Cu  Cu10      1.0  0.3750000000000001  0.6249999999999999  0.37500000000000017  1.0000 | ||||
|   Cu  Cu11      1.0  0.5  0.5  0.37500000000000017  1.0000 | ||||
|   Cu  Cu12      1.0  0.5  0.6249999999999999  0.12499999999999996  1.0000 | ||||
|   Cu  Cu13      1.0  0.3750000000000001  0.5  0.625  1.0000 | ||||
|   Cu  Cu14      1.0  0.3750000000000001  0.6249999999999999  0.8750000000000001  1.0000 | ||||
|   Cu  Cu15      1.0  0.5  0.5  0.8750000000000001  1.0000 | ||||
|   Cu  Cu16      1.0  0.5  0.6249999999999999  0.625  1.0000 | ||||
|   Cu  Cu17      1.0  0.5  0.7500000000000003  0.37500000000000017  1.0000 | ||||
|   Cu  Cu18      1.0  0.5  0.7500000000000003  0.8750000000000001  1.0000 | ||||
|   Cu  Cu19      1.0  0.6249999999999999  0.37500000000000017  0.37500000000000017  1.0000 | ||||
|   Cu  Cu20      1.0  0.6249999999999999  0.37500000000000017  0.8750000000000001  1.0000 | ||||
|   Cu  Cu21      1.0  0.6249999999999999  0.5  0.12499999999999996  1.0000 | ||||
|   Cu  Cu22      1.0  0.6249999999999999  0.6249999999999999  0.37500000000000017  1.0000 | ||||
|   Cu  Cu23      1.0  0.7500000000000003  0.5  0.37500000000000017  1.0000 | ||||
|   Cu  Cu24      1.0  0.6249999999999999  0.5  0.625  1.0000 | ||||
|   Cu  Cu25      1.0  0.6249999999999999  0.6249999999999999  0.8750000000000001  1.0000 | ||||
|   Cu  Cu26      1.0  0.7500000000000003  0.5  0.8750000000000001  1.0000 | ||||
|  | @ -0,0 +1,24 @@ | |||
| from ase.io import read | ||||
| from msspec.calculator import MSSPEC | ||||
| 
 | ||||
| 
 | ||||
| cluster = read('copper.cif') | ||||
| # view the cluster | ||||
| cluster.edit() | ||||
| 
 | ||||
| # The "emitter" atom is located in the middle of the 3rd plane | ||||
| cluster.emitter = 10 | ||||
| 
 | ||||
| # Create a "calculator" | ||||
| calc = MSSPEC(spectroscopy='PED', algorithm='inversion') | ||||
| calc.set_atoms(cluster) | ||||
| 
 | ||||
| data = calc.get_theta_scan(level='2p3/2') | ||||
| 
 | ||||
| # Plot the result with the interactive GUI | ||||
| data.view() | ||||
| 
 | ||||
| # Or plot using matplotlib directly | ||||
| from matplotlib import pyplot as plt | ||||
| data[0].views[0].plot() | ||||
| plt.show() | ||||
										
											Binary file not shown.
										
									
								
							|  | @ -0,0 +1,55 @@ | |||
| from ase.build import bulk | ||||
| from ase.visualize import view | ||||
| 
 | ||||
| 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 | ||||
| 
 | ||||
| # Create the silver cell | ||||
| Ag = bulk('Ag', cubic=True) | ||||
| # Orientate the cell in the [111] direction | ||||
| Ag.rotate((1,1,1), (0,0,1), rotate_cell=True) | ||||
| # Align the azimuth to match experimental reference | ||||
| Ag.rotate(15, 'z', rotate_cell=True) | ||||
| 
 | ||||
| # Create a cluster | ||||
| 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' | ||||
| 
 | ||||
| # Create a calculator | ||||
| calc = MSSPEC(spectroscopy='PED', algorithm='inversion') | ||||
| calc.set_atoms(cluster) | ||||
| 
 | ||||
| # Define parameters | ||||
| 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 | ||||
| 
 | ||||
| # Compute an azimuthal scan | ||||
| data = calc.get_phi_scan(level='4d', theta=40, phi=np.linspace(0,240,121), kinetic_energy=45) | ||||
| 
 | ||||
| # Normalize data between [0,1] (to ease comparison with experimental data) | ||||
| 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') | ||||
| 
 | ||||
| # Popup GUI | ||||
| data.view() | ||||
| 
 | ||||
| # Remove temp. files | ||||
| calc.shutdown() | ||||
|  | @ -0,0 +1,121 @@ | |||
| 0.000000000000000000e+00 2.273853352828327234e-01 | ||||
| 2.000000000000000000e+00 2.135876322898652424e-01 | ||||
| 4.000000000000000000e+00 1.925265592281927285e-01 | ||||
| 6.000000000000000000e+00 1.852631891594877511e-01 | ||||
| 8.000000000000000000e+00 1.852631891594877511e-01 | ||||
| 1.000000000000000000e+01 1.831705825411805155e-01 | ||||
| 1.200000000000000000e+01 1.636929472985219347e-01 | ||||
| 1.400000000000000000e+01 1.279608696063064543e-01 | ||||
| 1.600000000000000000e+01 1.040430509934481690e-01 | ||||
| 1.800000000000000000e+01 3.015378633541379930e-02 | ||||
| 2.000000000000000000e+01 4.106459224097607462e-03 | ||||
| 2.200000000000000000e+01 1.971550450495464929e-02 | ||||
| 2.400000000000000000e+01 7.007532033757153667e-02 | ||||
| 2.600000000000000000e+01 1.904879553613253451e-01 | ||||
| 2.800000000000000000e+01 3.101513022088481231e-01 | ||||
| 3.000000000000000000e+01 4.052906495585950619e-01 | ||||
| 3.200000000000000000e+01 3.678644926959027672e-01 | ||||
| 3.400000000000000000e+01 3.036757937102613214e-01 | ||||
| 3.600000000000000000e+01 2.214720340001324062e-01 | ||||
| 3.800000000000000000e+01 2.247878029385593501e-01 | ||||
| 4.000000000000000000e+01 2.837024903561691791e-01 | ||||
| 4.200000000000000000e+01 3.445713059080361962e-01 | ||||
| 4.400000000000000000e+01 4.114147115795538934e-01 | ||||
| 4.600000000000000000e+01 5.600722856829548624e-01 | ||||
| 4.800000000000000000e+01 6.969212581381016847e-01 | ||||
| 5.000000000000000000e+01 8.189179738707677014e-01 | ||||
| 5.200000000000000000e+01 9.080765164985155069e-01 | ||||
| 5.400000000000000000e+01 9.562807225028111535e-01 | ||||
| 5.600000000000000000e+01 9.888241305894533983e-01 | ||||
| 5.800000000000000000e+01 9.881336668388966959e-01 | ||||
| 6.000000000000000000e+01 9.873660563005683954e-01 | ||||
| 6.200000000000000000e+01 9.916558998680982118e-01 | ||||
| 6.400000000000000000e+01 9.856319679487668406e-01 | ||||
| 6.600000000000000000e+01 9.620117644994009565e-01 | ||||
| 6.800000000000000000e+01 8.930029985027734263e-01 | ||||
| 7.000000000000000000e+01 8.002870246239043306e-01 | ||||
| 7.200000000000000000e+01 6.744921153732785779e-01 | ||||
| 7.400000000000000000e+01 5.336319385472689802e-01 | ||||
| 7.600000000000000000e+01 3.958859203876436417e-01 | ||||
| 7.800000000000000000e+01 3.306385960364682242e-01 | ||||
| 8.000000000000000000e+01 2.830681723233798852e-01 | ||||
| 8.200000000000000000e+01 2.157622815497834690e-01 | ||||
| 8.400000000000000000e+01 2.239956241155102445e-01 | ||||
| 8.600000000000000000e+01 3.126826811826061703e-01 | ||||
| 8.800000000000000000e+01 3.836092948935748703e-01 | ||||
| 9.000000000000000000e+01 3.974940023194180050e-01 | ||||
| 9.200000000000000000e+01 2.890294760518045125e-01 | ||||
| 9.400000000000000000e+01 1.681544424688440620e-01 | ||||
| 9.600000000000000000e+01 5.857273428081174321e-02 | ||||
| 9.800000000000000000e+01 1.843518927289370876e-02 | ||||
| 1.000000000000000000e+02 3.948951199063644064e-03 | ||||
| 1.020000000000000000e+02 5.411750728699640106e-02 | ||||
| 1.040000000000000000e+02 1.168717046133502524e-01 | ||||
| 1.060000000000000000e+02 1.428170265275016670e-01 | ||||
| 1.080000000000000000e+02 1.770817723162995683e-01 | ||||
| 1.100000000000000000e+02 1.852631891594877511e-01 | ||||
| 1.120000000000000000e+02 1.827670619818080600e-01 | ||||
| 1.140000000000000000e+02 1.840805289029476266e-01 | ||||
| 1.160000000000000000e+02 2.023203439358092770e-01 | ||||
| 1.180000000000000000e+02 2.289994175203227400e-01 | ||||
| 1.200000000000000000e+02 2.320430725945487604e-01 | ||||
| 1.220000000000000000e+02 2.174983315399919570e-01 | ||||
| 1.240000000000000000e+02 1.903085890797567015e-01 | ||||
| 1.260000000000000000e+02 1.848716692115463522e-01 | ||||
| 1.280000000000000000e+02 1.870838533508997481e-01 | ||||
| 1.300000000000000000e+02 1.808923414647976846e-01 | ||||
| 1.320000000000000000e+02 1.656061876352601381e-01 | ||||
| 1.340000000000000000e+02 1.324214968752658039e-01 | ||||
| 1.360000000000000000e+02 8.695118016262873284e-02 | ||||
| 1.380000000000000000e+02 1.854769500506061805e-02 | ||||
| 1.400000000000000000e+02 0.000000000000000000e+00 | ||||
| 1.420000000000000000e+02 2.910410785429527400e-02 | ||||
| 1.440000000000000000e+02 1.010188969127969877e-01 | ||||
| 1.460000000000000000e+02 2.301799776698615074e-01 | ||||
| 1.480000000000000000e+02 3.527565800906127258e-01 | ||||
| 1.500000000000000000e+02 3.915987019538648140e-01 | ||||
| 1.520000000000000000e+02 3.464073994570029402e-01 | ||||
| 1.540000000000000000e+02 2.694669793425982229e-01 | ||||
| 1.560000000000000000e+02 2.158017450989128672e-01 | ||||
| 1.580000000000000000e+02 2.275203421614326316e-01 | ||||
| 1.600000000000000000e+02 3.068773854027863068e-01 | ||||
| 1.620000000000000000e+02 3.571336959618095497e-01 | ||||
| 1.640000000000000000e+02 4.706879815526597843e-01 | ||||
| 1.660000000000000000e+02 6.409924085632153767e-01 | ||||
| 1.680000000000000000e+02 7.767958277474236173e-01 | ||||
| 1.700000000000000000e+02 8.699880758924664059e-01 | ||||
| 1.720000000000000000e+02 9.465309757532142099e-01 | ||||
| 1.740000000000000000e+02 9.812603702158622099e-01 | ||||
| 1.760000000000000000e+02 9.992196602416892892e-01 | ||||
| 1.780000000000000000e+02 9.917162779443612353e-01 | ||||
| 1.800000000000000000e+02 9.978245891628175768e-01 | ||||
| 1.820000000000000000e+02 1.000000000000000000e+00 | ||||
| 1.840000000000000000e+02 9.875604662057533289e-01 | ||||
| 1.860000000000000000e+02 9.483868703110428511e-01 | ||||
| 1.880000000000000000e+02 8.713195437307523772e-01 | ||||
| 1.900000000000000000e+02 7.743174871902573919e-01 | ||||
| 1.920000000000000000e+02 6.499028625508473933e-01 | ||||
| 1.940000000000000000e+02 5.133872820820232219e-01 | ||||
| 1.960000000000000000e+02 3.854633893596886574e-01 | ||||
| 1.980000000000000000e+02 3.197097892137605313e-01 | ||||
| 2.000000000000000000e+02 2.625546271582531732e-01 | ||||
| 2.020000000000000000e+02 2.180674059888806082e-01 | ||||
| 2.040000000000000000e+02 2.313545375136863425e-01 | ||||
| 2.060000000000000000e+02 3.256001393270981925e-01 | ||||
| 2.080000000000000000e+02 3.901136262892592188e-01 | ||||
| 2.100000000000000000e+02 4.105052902445402441e-01 | ||||
| 2.120000000000000000e+02 3.039702372835895727e-01 | ||||
| 2.140000000000000000e+02 1.592176621398869174e-01 | ||||
| 2.160000000000000000e+02 6.314946746536785616e-02 | ||||
| 2.180000000000000000e+02 1.766902523683577114e-02 | ||||
| 2.200000000000000000e+02 1.012551589503468512e-02 | ||||
| 2.220000000000000000e+02 5.641599939516841328e-02 | ||||
| 2.240000000000000000e+02 1.259411667024434578e-01 | ||||
| 2.260000000000000000e+02 1.520177453041229865e-01 | ||||
| 2.280000000000000000e+02 1.775272950156810414e-01 | ||||
| 2.300000000000000000e+02 1.829980737518577261e-01 | ||||
| 2.320000000000000000e+02 1.838471170106117103e-01 | ||||
| 2.340000000000000000e+02 1.827520612175190795e-01 | ||||
| 2.360000000000000000e+02 2.068282879012685871e-01 | ||||
| 2.380000000000000000e+02 2.265482926355094906e-01 | ||||
| 2.400000000000000000e+02 2.403459956284773325e-01 | ||||
|  | @ -0,0 +1,17 @@ | |||
| from ase import Atoms | ||||
| from ase.visualize import view | ||||
| from msspec.calculator import MSSPEC | ||||
| 
 | ||||
| # Create an atomic chain O-Rh | ||||
| cluster = Atoms(['O', 'Rh'], positions = [(1,0,0), (0,0,4.)]) | ||||
| 
 | ||||
| # Create a calculator | ||||
| calc = MSSPEC(spectroscopy='PED') | ||||
| calc.set_atoms(cluster) | ||||
| cluster.emitter = 0 | ||||
| 
 | ||||
| # Compute the scattering factor | ||||
| data = calc.get_scattering_factors(kinetic_energy=723) | ||||
| 
 | ||||
| # Popup the results | ||||
| data.view() | ||||
|  | @ -0,0 +1,23 @@ | |||
| from msspec.calculator import MSSPEC | ||||
| from ase.build import fcc111, add_adsorbate | ||||
| import numpy as np | ||||
| 
 | ||||
| data = None | ||||
| all_z = ... # -> Define a list of z values for the adsorbate | ||||
| 
 | ||||
| for ... # -> Complete this for-loop over z values | ||||
|     # construct the cluster | ||||
|     cluster = fcc111('Rh', size = (2,2,1)) | ||||
|     cluster.pop(3) | ||||
|     add_adsorbate(... # -> Put the oxygen atom on the fcc site | ||||
|     cluster.emitter = ... # -> Oxygen is the last atom we added, so the indice is... | ||||
| 
 | ||||
|     # Define a calculator for single scattering calculations | ||||
|     calc = MSSPEC(spectroscopy='PED', algorithm='expansion') | ||||
|     calc.calculation_parameters.scattering_order = 1 | ||||
|     calc.set_atoms(cluster) | ||||
| 
 | ||||
|     # Compute | ||||
|     data = calc.get_theta_phi_scan(level='1s', kinetic_energy=723, data=data) | ||||
| 
 | ||||
| data.view() | ||||
										
											Binary file not shown.
										
									
								
							|  | @ -0,0 +1,40 @@ | |||
| from ase.build import mx2 | ||||
| from ase.visualize import view | ||||
| from msspec.calculator import MSSPEC | ||||
| from msspec.utils import hemispherical_cluster, get_atom_index | ||||
| 
 | ||||
| # Some usefull constants (a, c, d, D) for defining the structure | ||||
| a=... | ||||
| 
 | ||||
| # Create the TiSe2 trilayer | ||||
| # use ase help for this function | ||||
| TiSe2 = mx2(formula=...) | ||||
| 
 | ||||
| # The preious cell is 2D, let's define the c-axis to take into account  | ||||
| # the Van der Waals gap between trilayers | ||||
| TiSe2.cell[2] = [0, 0, ...] | ||||
| 
 | ||||
| # To be aligned like in the paper | ||||
| TiSe2.rotate(60, 'z', rotate_cell=True) | ||||
| 
 | ||||
| # Since the material is multi-elements, "tag" each inequivalent atom  | ||||
| # of the unit cell with a number. The "Ti" atom is tagged 0 and "Se"  | ||||
| # atoms are 1 and 2. | ||||
| for i in range(3):  | ||||
|     TiSe2[i].tag = i | ||||
| 
 | ||||
| cluster = hemispherical_cluster(TiSe2, emitter_tag=..., emitter_plane=..., planes=5) | ||||
| cluster.emitter = get_atom_index(cluster, 0, 0, 0) | ||||
| 
 | ||||
| view(cluster) | ||||
| 
 | ||||
| # Create a calculator with Rehr-Albers series expansion algorithm | ||||
| calc = MSSPEC(spectroscopy='PED', algorithm='expansion') | ||||
| calc.set_atoms(cluster) | ||||
| 
 | ||||
| data = None | ||||
| for ndif in range(1,4):     | ||||
|     calc.calculation_parameters.scattering_order = ndif | ||||
|     data = calc.get_theta_phi_scan(level='2p', kinetic_energy=1030, data=data) | ||||
| 
 | ||||
| data.view() | ||||
|  | @ -0,0 +1,126 @@ | |||
| from ase.build import bulk | ||||
| import numpy as np | ||||
| 
 | ||||
| from msspec.calculator import MSSPEC, XRaySource | ||||
| from msspec.utils import hemispherical_cluster, get_atom_index | ||||
| 
 | ||||
| def create_clusters(nplanes=3): | ||||
|     copper  = bulk('Cu', a=3.6, cubic=True) | ||||
|     clusters = [] | ||||
|     for emitter_plane in range(nplanes): | ||||
|         cluster = hemispherical_cluster(copper, | ||||
|                                         emitter_plane=emitter_plane, | ||||
|                                         planes=emitter_plane+1, | ||||
|                                         diameter=27, | ||||
|                                         shape='cylindrical') | ||||
|         cluster.absorber = get_atom_index(cluster, 0, 0, 0) | ||||
|         # This is how to store extra information with your cluster | ||||
|         cluster.info.update({ | ||||
|             'emitter_plane': emitter_plane, | ||||
|         }) | ||||
|         clusters.append(cluster) | ||||
|     return clusters | ||||
| 
 | ||||
| 
 | ||||
| def compute(clusters, all_theta=[45., 83.], | ||||
|             all_T=np.arange(300., 1000., 400.)): | ||||
|     data = None | ||||
|     for cluster in clusters: | ||||
|         # Retrieve emitter's plane from cluster object | ||||
|         plane   = cluster.info['emitter_plane'] | ||||
| 
 | ||||
|         calc = MSSPEC(spectroscopy='PED', algorithm='expansion') | ||||
|         calc.source_parameters.energy = XRaySource.AL_KALPHA | ||||
|         calc.muffintin_parameters.interstitial_potential = 14.1 | ||||
| 
 | ||||
|         # In simple scattering, it is common practice to use a real potential and | ||||
|         # manually define a mean free path arbitrarily lower than the actual physical | ||||
|         # value in an attempt to reproduce multiple scattering effects. | ||||
|         calc.tmatrix_parameters.exchange_correlation = 'x_alpha_real' | ||||
|         calc.calculation_parameters.mean_free_path = ... # -> half of the mean free | ||||
|                                                          # path (see p6785) | ||||
|         # Parameters for temperature effects | ||||
|         calc.calculation_parameters.vibrational_damping = 'averaged_tl' | ||||
|         calc.calculation_parameters.use_debye_model = ..... # Use the MsSpec help | ||||
|         calc.calculation_parameters.debye_temperature = ... # and p6791 of the paper | ||||
|         calc.calculation_parameters.vibration_scaling = ... # -> How much more do  | ||||
|                                                             # surface atoms vibrate  | ||||
|                                                             # than bulk atoms? | ||||
|         calc.detector_parameters.average_sampling = 'low' | ||||
|         calc.detector_parameters.angular_acceptance = 5.7 | ||||
| 
 | ||||
|         calc.calculation_parameters.scattering_order = 1 | ||||
| 
 | ||||
| 
 | ||||
|         for T in all_T: | ||||
|             # Define the sample temperature | ||||
|             calc.calculation_parameters.temperature = T | ||||
|             # Set the atoms and compute an azimuthal scan | ||||
|             calc.set_atoms(cluster) | ||||
|             data = calc.get_phi_scan(level='2p', theta=all_theta, | ||||
|                                         phi=np.linspace(0, 100, 51), | ||||
|                                         kinetic_energy=560, data=data) | ||||
|             # Small changes to add some details in both the title of the dataset | ||||
|             # and the figure | ||||
|             view = data[-1].views[-1] | ||||
|             t = view._plotopts['title'] + f" (plane #{plane:d}, T={T:.0f} K)" | ||||
|             data[-1].title = t | ||||
|             view.set_plot_options(autoscale=True, title=t) | ||||
|         calc.shutdown() | ||||
|     return data | ||||
| 
 | ||||
| 
 | ||||
| def analysis(data, all_theta, all_T, nplanes): | ||||
|     # Sum cross_section for all emitter's plane at a given T | ||||
|     # Compute the anisotropy | ||||
|     results = dict.fromkeys(all_T, [])  | ||||
|     anisotropy = [] | ||||
|     for dset in data: | ||||
|         # Retrieve temperature | ||||
|         T = float(dset.get_parameter('CalculationParameters', 'temperature')['value']) | ||||
|         # Update the sum in results | ||||
|         if len(results[T]) == 0: | ||||
|             results[T] = dset.cross_section | ||||
|         else: | ||||
|             results[T] += dset.cross_section | ||||
| 
 | ||||
|     anisotropy_dset = data.add_dset("Anisotropies") | ||||
|     anisotropy_dset.add_columns(temperature=all_T) | ||||
|     for theta in all_theta: | ||||
|         col_name = f"theta{theta:.0f}" | ||||
|         col_values = [] | ||||
|         i = np.where(dset.theta == theta)[0] | ||||
|         for T in all_T: | ||||
|             cs = results[T][i] | ||||
|             Imax = np.max(cs) | ||||
|             Imin = np.min(cs) | ||||
|             A = (Imax - Imin)/Imax | ||||
|             col_values.append(A) | ||||
|         anisotropy_dset.add_columns(**{col_name:col_values/np.max(col_values)}) | ||||
| 
 | ||||
|      | ||||
|     anisotropy_view = anisotropy_dset.add_view('Anisotropies', | ||||
|                          title='Relative anisotropies for Cu(2p)', | ||||
|                          marker='o', | ||||
|                          xlabel='T (K)', | ||||
|                          ylabel=r'$\frac{\Delta I / I_{max}(T)}{\Delta I_{300}' | ||||
|                                 r'/ I_{max}(300)} (\%)$', | ||||
|                          autoscale=True) | ||||
|     for theta in all_theta: | ||||
|         col_name = f"theta{theta:.0f}" | ||||
|         anisotropy_view.select('temperature', col_name, | ||||
|                                 legend=r'$\theta = {:.0f} \degree$'.format(theta)) | ||||
| 
 | ||||
|     return data | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| if __name__ == "__main__": | ||||
|     nplanes = 4 | ||||
|     all_theta = np.array([45, 83]) | ||||
|     all_theta = np.array([300., 1000.]) | ||||
| 
 | ||||
|     clusters = create_clusters(nplanes=nplanes) | ||||
|     data = compute(clusters, all_T=all_T, all_theta=all_theta) | ||||
|     data = analysis(data, all_T=all_T, all_theta=all_theta, nplanes=nplanes) | ||||
|     data.view() | ||||
										
											Binary file not shown.
										
									
								
							|  | @ -0,0 +1,56 @@ | |||
| # 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.calculation_parameters.scattering_order = 3 | ||||
| calc.tmatrix_parameters.tl_threshold = 1e-4 | ||||
| calc.calculation_parameters.vibrational_damping = 'averaged_tl' | ||||
| calc.calculation_parameters.RA_cutoff = 2 | ||||
|   | ||||
| # Define path filtering options such that you only | ||||
| # accept scattering paths with a forward cone <= 40° | ||||
| # and whose length are <= cluster diameter | ||||
| # | ||||
| # | ||||
| 
 | ||||
| calc.set_atoms(cluster) | ||||
| 
 | ||||
| # Compute and add previous data for comparison | ||||
| data = calc.get_theta_scan(level='2p', | ||||
|                             theta=np.arange(-30., 80., 0.5), | ||||
|                             phi=0, | ||||
|                             kinetic_energy=1382.28) | ||||
| no_filters = Data.load('path_filtering.hdf5') | ||||
| data[0].add_columns(**{'no_filters': no_filters[0].cross_section}) | ||||
| view = data[0].views[0] | ||||
| view.select('theta', 'cross_section', index=0, legend="With path filtering") | ||||
| view.select('theta', 'no_filters', legend="Without path filtering") | ||||
| 
 | ||||
| data.view() | ||||
|  | @ -0,0 +1,127 @@ | |||
| from ase.build import bulk | ||||
| import numpy as np | ||||
| from msspec.calculator import MSSPEC, XRaySource | ||||
| from msspec.utils import hemispherical_cluster, get_atom_index | ||||
| 
 | ||||
| def create_clusters(nplanes=6): | ||||
|     def get_AlN_tags_planes(side, emitter): | ||||
|         AlN = # AlN is a Wurtzite crystal with a=3.11 and c=4.975 angstroms       # <= HERE | ||||
|         [atom.set('tag', i) for i, atom in enumerate(AlN)] | ||||
|         if side == 'Al': | ||||
|             AlN.rotate([0,0,1],[0,0,-1]) | ||||
|             Al_planes = range(0, nplanes, 2) | ||||
|             N_planes  = range(1, nplanes, 2) | ||||
|         else: | ||||
|             N_planes  = range(0, nplanes, 2) | ||||
|             Al_planes = range(1, nplanes, 2) | ||||
|         if emitter == 'Al': | ||||
|             tags = [0, 2] | ||||
|             planes = Al_planes | ||||
|         else: | ||||
|            tags = [1, 3] | ||||
|            planes = N_planes | ||||
|         return AlN, tags, planes | ||||
| 
 | ||||
|     clusters = [] | ||||
|     for side in ('Al', 'N'): | ||||
|         for emitter in ('Al', 'N'): | ||||
|             AlN, tags, planes = get_AlN_tags_planes(side, emitter) | ||||
|             for emitter_tag in tags: | ||||
|                 for emitter_plane in planes: | ||||
|                     cluster = # hemis…, construct the cluster here with           # <= HERE | ||||
|                               # 2 planes below the emitter | ||||
|                     cluster.absorber = get_atom_index(cluster, 0, 0, 0) | ||||
|                     cluster.info.update({ | ||||
|                         'emitter_plane': emitter_plane, | ||||
|                         'emitter_tag'  : emitter_tag, | ||||
|                         'emitter'      : emitter, | ||||
|                         'side'         : side, | ||||
|                     }) | ||||
|                     clusters.append(cluster) | ||||
|                     print("Added cluster {}-side, emitter {}(tag {:d}) in " | ||||
|                           "plane #{:d}".format(side, emitter, emitter_tag, | ||||
|                                                emitter_plane)) | ||||
|     return clusters | ||||
| 
 | ||||
| 
 | ||||
| def compute(clusters, theta=np.arange(-20., 80., 1.), phi=0.): | ||||
|     data = None | ||||
|     for ic, cluster in enumerate(clusters): | ||||
|         # Retrieve info from cluster object | ||||
|         side    = cluster.info['side'] | ||||
|         emitter = cluster.info['emitter'] | ||||
|         plane   = cluster.info['emitter_plane'] | ||||
|         tag     = cluster.info['emitter_tag'] | ||||
| 
 | ||||
|         # Set the level and the kinetic energy | ||||
|         if emitter == 'Al': | ||||
|             level = #####                                                         # <= HERE | ||||
|             ke    = #####                                                         # <= HERE | ||||
|         elif emitter == 'N': | ||||
|             level = #####                                                         # <= HERE | ||||
|             ke    = #####                                                         # <= HERE | ||||
| 
 | ||||
|         calc = # Create a calculator using the RA series expansion algorithm      # <= HERE | ||||
| 
 | ||||
|         calc.source_parameters.energy = #####                                     # <= HERE | ||||
|         calc.source_parameters.theta  = #####                                     # <= HERE | ||||
| 
 | ||||
|         calc.detector_parameters.angular_acceptance = #####                       # <= HERE | ||||
|         calc.detector_parameters.average_sampling   = 'medium' | ||||
| 
 | ||||
|         calc.calculation_parameters.scattering_order = max(1, min(4, plane)) | ||||
|         calc.calculation_parameters.path_filtering  = 'forward_scattering' | ||||
|         calc.calculation_parameters.off_cone_events = 1 | ||||
|         [a.set('forward_angle', 30.) for a in cluster] | ||||
| 
 | ||||
|         calc.set_atoms(cluster) | ||||
| 
 | ||||
|         data = calc.get_theta_scan(level=level, theta=theta, phi=phi, | ||||
|                                    kinetic_energy=ke, data=data) | ||||
|         dset = data[-1] | ||||
|         dset.title = "\'{}\' side - {}({}) tag #{:d}, plane #{:d}".format( | ||||
|             side, emitter, level, tag, plane) | ||||
| 
 | ||||
|     return data | ||||
| 
 | ||||
| 
 | ||||
| def analysis(data): | ||||
|     tmp_data = {} | ||||
|     for dset in data: | ||||
|         info = dset.get_cluster().info | ||||
|         side = info['side'] | ||||
|         emitter = info['emitter'] | ||||
|         try: | ||||
|             key = '{}_{}'.format(side, emitter) | ||||
|             tmp_data[key] += dset.cross_section | ||||
|         except KeyError: | ||||
|             tmp_data[key] = dset.cross_section.copy() | ||||
| 
 | ||||
|     tmp_data['theta']   = dset.theta.copy() | ||||
|     tmp_data['Al_side'] = tmp_data['Al_Al'] / tmp_data['Al_N'] | ||||
|     tmp_data['N_side']  = tmp_data['N_Al']  / tmp_data['N_N'] | ||||
| 
 | ||||
|     # now add all columns | ||||
|     substrate_dset = data.add_dset('Total substrate signal') | ||||
|     substrate_dset.add_columns(**tmp_data) | ||||
| 
 | ||||
|     view = substrate_dset.add_view('Ratios', | ||||
|                                    title=r'Al(2p)/N(1s) ratios on both polar ' | ||||
|                                          r'sides of AlN in the (10$\bar{1}$0) ' | ||||
|                                          r'azimuthal plane', | ||||
|                                    xlabel=r'$\Theta (\degree$)', | ||||
|                                    ylabel='Intenisty ratio') | ||||
|     view.select('theta', 'Al_side', legend='Al side', | ||||
|                 where="theta >= 0 and theta <=70") | ||||
|     view.select('theta', 'N_side', legend='N side', | ||||
|                 where="theta >= 0 and theta <=70") | ||||
|     view.set_plot_options(autoscale=True) | ||||
| 
 | ||||
|     return data | ||||
| 
 | ||||
| 
 | ||||
| clusters = create_clusters() | ||||
| data     = compute(clusters) | ||||
| data     = analysis(data) | ||||
| data.view() | ||||
| 
 | ||||
|  | @ -0,0 +1,77 @@ | |||
| from ase import Atoms | ||||
| from ase.build import add_adsorbate, bulk | ||||
| 
 | ||||
| from msspec.calculator import MSSPEC, RFACTOR | ||||
| from msspec.utils import hemispherical_cluster | ||||
| 
 | ||||
| import numpy as np | ||||
| 
 | ||||
| 
 | ||||
| def create_cluster(height=1., theta=45, phi=0, bond_length=1.15): | ||||
|     # Fill the body of this function. The 'cluster' object in built according to | ||||
|     # values provided by the keyword arguments: | ||||
|     # height (in angströms): the 'z' distance between the Fe surface and the C atom | ||||
|     # theta and phi (in degrees): the polar and azimuthal orientation of the CP molecule | ||||
|     #                             (theta=0° aligns the molecule withe the surface normal | ||||
|     #                              phi=0° corresponds to the [100] direction of iron) | ||||
|     # bond_length (in angströms): the C-O distance | ||||
| 
 | ||||
|     # Keep those 2 lines at the end of your function | ||||
|     # Store some information in the cluster object | ||||
|     cluster.info.update(adsorbate={'theta': theta, 'phi': phi, 'height': height, 'bond_length': bond_length}) | ||||
|     return cluster | ||||
| 
 | ||||
| 
 | ||||
| def compute_polar_scan(cluster): | ||||
|     calc = MSSPEC(spectroscopy='PED', algorithm='expansion') | ||||
|     calc.set_atoms(cluster) | ||||
| 
 | ||||
|     # SSC calculations | ||||
|     calc.calculation_parameters.scattering_order = 1 | ||||
| 
 | ||||
|     # Add temperature effects | ||||
|     [atom.set('mean_square_vibration', 0.005) for atom in cluster] | ||||
|     calc.calculation_parameters.vibrational_damping = 'averaged_tl' | ||||
| 
 | ||||
|     polar_angles = np.arange(-5, 85, 0.5) | ||||
|     # set the Carbon as absorber and compute the polar scan | ||||
|     cluster.absorber = cluster.get_chemical_symbols().index('C') | ||||
|     data = calc.get_theta_scan(level='1s', theta=polar_angles, kinetic_energy=1202) | ||||
| 
 | ||||
|     return data | ||||
| 
 | ||||
| 
 | ||||
| ############################################################################### | ||||
| # Main part | ||||
| ############################################################################### | ||||
| results    = [] # polar angles and calculated cross_sections will be appended | ||||
|                 # to this list after each 'compute_polar_scan' call | ||||
| parameters = {'theta': [], 'phi': []} # and corresponding parameters will also | ||||
|                                       # be stored in this dictionary | ||||
| 
 | ||||
| # 1) Run calculations for different geometries | ||||
| for theta in ... | ||||
|     for phi in ... | ||||
|         # Create the cluster | ||||
|         cluster = ... | ||||
| 
 | ||||
|         # Compute | ||||
|         data = ... | ||||
| 
 | ||||
|         # Update lists of results and parameters | ||||
|         results.append(data[-1].theta.copy()) | ||||
|         results.append(data[-1].cross_section.copy()) | ||||
|         parameters['theta'].append(theta) | ||||
|         parameters['phi'].append(phi) | ||||
| 
 | ||||
| # 2) R-Factor analysis | ||||
| # Load the experimental data | ||||
| exp_data = np.loadtxt('experimental_data.txt') | ||||
| 
 | ||||
| # Create an R-Factor calculator | ||||
| rfc = RFACTOR() | ||||
| rfc.set_references(exp_data[:,0], exp_data[:,1]) | ||||
| 
 | ||||
| # Perform the R-Factor analysis | ||||
| data = rfc.run(*results, **parameters) | ||||
| data.view() | ||||
|  | @ -0,0 +1,250 @@ | |||
| # Polar angle (°)         C1s/O1s Signal (a.u.) | ||||
| -5.163000000000000256e+00 3.649999999999999911e-01 | ||||
| -4.858999999999990216e+00 3.639999999999999902e-01 | ||||
| -4.556000000000000050e+00 3.629999999999999893e-01 | ||||
| -4.251999999999999780e+00 3.619999999999999885e-01 | ||||
| -3.947999999999990184e+00 3.609999999999999876e-01 | ||||
| -3.677999999999999936e+00 3.599999999999999867e-01 | ||||
| -3.375000000000000000e+00 3.579999999999999849e-01 | ||||
| -3.104999999999999982e+00 3.569999999999999840e-01 | ||||
| -2.766999999999999904e+00 3.559999999999999831e-01 | ||||
| -2.462999999999989864e+00 3.549999999999999822e-01 | ||||
| -2.193000000000000060e+00 3.539999999999999813e-01 | ||||
| -1.991000000000000103e+00 3.529999999999999805e-01 | ||||
| -1.754999999999999893e+00 3.519999999999999796e-01 | ||||
| -1.519000000000009898e+00 3.509999999999999787e-01 | ||||
| -1.215000000000000080e+00 3.499999999999999778e-01 | ||||
| -1.012000000000000011e+00 3.499999999999999778e-01 | ||||
| -6.749999999999970468e-01 3.499999999999999778e-01 | ||||
| -4.389999999999930069e-01 3.509999999999999787e-01 | ||||
| -1.009999999999989934e-01 3.519999999999999796e-01 | ||||
| 2.019999999999979867e-01 3.529999999999999805e-01 | ||||
| 5.739999999999979563e-01 3.529999999999999805e-01 | ||||
| 9.789999999999989821e-01 3.539999999999999813e-01 | ||||
| 1.417000000000000037e+00 3.539999999999999813e-01 | ||||
| 1.956999999999990081e+00 3.539999999999999813e-01 | ||||
| 2.327999999999999847e+00 3.549999999999999822e-01 | ||||
| 2.564999999999999947e+00 3.559999999999999831e-01 | ||||
| 2.766999999999999904e+00 3.579999999999999849e-01 | ||||
| 2.970000000000000195e+00 3.589999999999999858e-01 | ||||
| 3.071000000000000174e+00 3.609999999999999876e-01 | ||||
| 3.239999999999989999e+00 3.619999999999999885e-01 | ||||
| 3.407999999999999918e+00 3.629999999999999893e-01 | ||||
| 3.576999999999999957e+00 3.649999999999999911e-01 | ||||
| 3.712000000000000188e+00 3.659999999999999920e-01 | ||||
| 3.813000000000000167e+00 3.679999999999999938e-01 | ||||
| 3.880999999999999783e+00 3.679999999999999938e-01 | ||||
| 3.947999999999990184e+00 3.699999999999999956e-01 | ||||
| 4.352999999999989988e+00 3.699999999999999956e-01 | ||||
| 4.758000000000000007e+00 3.709999999999999964e-01 | ||||
| 5.197000000000000064e+00 3.709999999999999964e-01 | ||||
| 5.602000000000000313e+00 3.719999999999999973e-01 | ||||
| 5.972999999999999865e+00 3.719999999999999973e-01 | ||||
| 6.243000000000000327e+00 3.729999999999999982e-01 | ||||
| 6.479000000000000092e+00 3.739999999999999991e-01 | ||||
| 6.682000000000000384e+00 3.750000000000000000e-01 | ||||
| 6.884000000000000341e+00 3.760000000000000009e-01 | ||||
| 6.985000000000000320e+00 3.770000000000000018e-01 | ||||
| 7.187999999999999723e+00 3.780000000000000027e-01 | ||||
| 7.322999999999989740e+00 3.790000000000000036e-01 | ||||
| 7.389999999999999680e+00 3.810000000000000053e-01 | ||||
| 7.491999999999999993e+00 3.820000000000000062e-01 | ||||
| 7.727999999999989988e+00 3.830000000000000071e-01 | ||||
| 8.064999999999999503e+00 3.830000000000000071e-01 | ||||
| 8.403000000000009351e+00 3.840000000000000080e-01 | ||||
| 8.808000000000010488e+00 3.840000000000000080e-01 | ||||
| 9.212999999999990308e+00 3.850000000000000089e-01 | ||||
| 9.618000000000000327e+00 3.840000000000000080e-01 | ||||
| 9.921000000000010033e+00 3.830000000000000071e-01 | ||||
| 1.025900000000000034e+01 3.830000000000000071e-01 | ||||
| 1.063000000000000078e+01 3.820000000000000062e-01 | ||||
| 1.103500000000000014e+01 3.810000000000000053e-01 | ||||
| 1.143999999999999950e+01 3.800000000000000044e-01 | ||||
| 1.174399999999999977e+01 3.800000000000000044e-01 | ||||
| 1.208099999999999952e+01 3.790000000000000036e-01 | ||||
| 1.245199999999999996e+01 3.790000000000000036e-01 | ||||
| 1.289100000000000001e+01 3.790000000000000036e-01 | ||||
| 1.316099999999999959e+01 3.800000000000000044e-01 | ||||
| 1.343099999999999916e+01 3.810000000000000053e-01 | ||||
| 1.366699999999999982e+01 3.820000000000000062e-01 | ||||
| 1.400399999999999956e+01 3.830000000000000071e-01 | ||||
| 1.430799999999999983e+01 3.850000000000000089e-01 | ||||
| 1.454400000000000048e+01 3.860000000000000098e-01 | ||||
| 1.471299999999999919e+01 3.870000000000000107e-01 | ||||
| 1.508399999999999963e+01 3.870000000000000107e-01 | ||||
| 1.562400000000000055e+01 3.870000000000000107e-01 | ||||
| 1.612999999999999901e+01 3.880000000000000115e-01 | ||||
| 1.663700000000000045e+01 3.880000000000000115e-01 | ||||
| 1.704200000000000159e+01 3.880000000000000115e-01 | ||||
| 1.744699999999999918e+01 3.880000000000000115e-01 | ||||
| 1.791900000000000048e+01 3.890000000000000124e-01 | ||||
| 1.825600000000000023e+01 3.900000000000000133e-01 | ||||
| 1.855999999999999872e+01 3.900000000000000133e-01 | ||||
| 1.889799999999999969e+01 3.920000000000000151e-01 | ||||
| 1.910000000000000142e+01 3.930000000000000160e-01 | ||||
| 1.933599999999999852e+01 3.930000000000000160e-01 | ||||
| 1.953900000000000148e+01 3.950000000000000178e-01 | ||||
| 1.987600000000000122e+01 3.960000000000000187e-01 | ||||
| 2.011199999999999832e+01 3.950000000000000178e-01 | ||||
| 2.048400000000000176e+01 3.940000000000000169e-01 | ||||
| 2.078699999999999903e+01 3.930000000000000160e-01 | ||||
| 2.112500000000000000e+01 3.920000000000000151e-01 | ||||
| 2.149599999999999866e+01 3.910000000000000142e-01 | ||||
| 2.190099999999999980e+01 3.900000000000000133e-01 | ||||
| 2.227199999999999847e+01 3.890000000000000124e-01 | ||||
| 2.264300000000000068e+01 3.880000000000000115e-01 | ||||
| 2.314999999999999858e+01 3.870000000000000107e-01 | ||||
| 2.362199999999999989e+01 3.860000000000000098e-01 | ||||
| 2.409400000000000119e+01 3.850000000000000089e-01 | ||||
| 2.460099999999999909e+01 3.850000000000000089e-01 | ||||
| 2.520799999999999841e+01 3.840000000000000080e-01 | ||||
| 2.578200000000000003e+01 3.830000000000000071e-01 | ||||
| 2.632199999999999918e+01 3.820000000000000062e-01 | ||||
| 2.692899999999999849e+01 3.820000000000000062e-01 | ||||
| 2.746900000000000119e+01 3.810000000000000053e-01 | ||||
| 2.810999999999999943e+01 3.800000000000000044e-01 | ||||
| 2.871799999999999997e+01 3.800000000000000044e-01 | ||||
| 2.922400000000000020e+01 3.790000000000000036e-01 | ||||
| 2.973000000000000043e+01 3.790000000000000036e-01 | ||||
| 3.016900000000000048e+01 3.780000000000000027e-01 | ||||
| 3.067500000000000071e+01 3.770000000000000018e-01 | ||||
| 3.128200000000000003e+01 3.770000000000000018e-01 | ||||
| 3.155199999999999960e+01 3.780000000000000027e-01 | ||||
| 3.195700000000000074e+01 3.800000000000000044e-01 | ||||
| 3.219299999999999784e+01 3.820000000000000062e-01 | ||||
| 3.246300000000000097e+01 3.840000000000000080e-01 | ||||
| 3.280100000000000193e+01 3.850000000000000089e-01 | ||||
| 3.324000000000000199e+01 3.870000000000000107e-01 | ||||
| 3.354299999999999926e+01 3.890000000000000124e-01 | ||||
| 3.388100000000000023e+01 3.900000000000000133e-01 | ||||
| 3.431900000000000261e+01 3.920000000000000151e-01 | ||||
| 3.469100000000000250e+01 3.940000000000000169e-01 | ||||
| 3.502799999999999869e+01 3.960000000000000187e-01 | ||||
| 3.546699999999999875e+01 3.970000000000000195e-01 | ||||
| 3.580400000000000205e+01 3.990000000000000213e-01 | ||||
| 3.610799999999999699e+01 4.010000000000000231e-01 | ||||
| 3.637800000000000011e+01 4.030000000000000249e-01 | ||||
| 3.661399999999999721e+01 4.040000000000000258e-01 | ||||
| 3.691799999999999926e+01 4.060000000000000275e-01 | ||||
| 3.722200000000000131e+01 4.079999999999999738e-01 | ||||
| 3.742399999999999949e+01 4.099999999999999756e-01 | ||||
| 3.762700000000000244e+01 4.109999999999999765e-01 | ||||
| 3.779500000000000171e+01 4.119999999999999774e-01 | ||||
| 3.803099999999999881e+01 4.139999999999999791e-01 | ||||
| 3.830100000000000193e+01 4.149999999999999800e-01 | ||||
| 3.850399999999999778e+01 4.159999999999999809e-01 | ||||
| 3.867300000000000182e+01 4.179999999999999827e-01 | ||||
| 3.890899999999999892e+01 4.189999999999999836e-01 | ||||
| 3.921300000000000097e+01 4.199999999999999845e-01 | ||||
| 3.938100000000000023e+01 4.209999999999999853e-01 | ||||
| 3.965100000000000335e+01 4.229999999999999871e-01 | ||||
| 3.988799999999999812e+01 4.239999999999999880e-01 | ||||
| 4.009000000000000341e+01 4.249999999999999889e-01 | ||||
| 4.039399999999999835e+01 4.259999999999999898e-01 | ||||
| 4.073100000000000165e+01 4.269999999999999907e-01 | ||||
| 4.103499999999999659e+01 4.279999999999999916e-01 | ||||
| 4.130499999999999972e+01 4.299999999999999933e-01 | ||||
| 4.160900000000000176e+01 4.309999999999999942e-01 | ||||
| 4.187899999999999778e+01 4.319999999999999951e-01 | ||||
| 4.221600000000000108e+01 4.329999999999999960e-01 | ||||
| 4.248599999999999710e+01 4.329999999999999960e-01 | ||||
| 4.275600000000000023e+01 4.339999999999999969e-01 | ||||
| 4.295799999999999841e+01 4.349999999999999978e-01 | ||||
| 4.322800000000000153e+01 4.359999999999999987e-01 | ||||
| 4.346500000000000341e+01 4.380000000000000004e-01 | ||||
| 4.376800000000000068e+01 4.390000000000000013e-01 | ||||
| 4.403799999999999670e+01 4.400000000000000022e-01 | ||||
| 4.424099999999999966e+01 4.420000000000000040e-01 | ||||
| 4.444299999999999784e+01 4.430000000000000049e-01 | ||||
| 4.461200000000000188e+01 4.440000000000000058e-01 | ||||
| 4.478099999999999881e+01 4.450000000000000067e-01 | ||||
| 4.494899999999999807e+01 4.460000000000000075e-01 | ||||
| 4.521900000000000119e+01 4.470000000000000084e-01 | ||||
| 4.545600000000000307e+01 4.480000000000000093e-01 | ||||
| 4.582699999999999818e+01 4.480000000000000093e-01 | ||||
| 4.619800000000000040e+01 4.480000000000000093e-01 | ||||
| 4.650200000000000244e+01 4.490000000000000102e-01 | ||||
| 4.683899999999999864e+01 4.490000000000000102e-01 | ||||
| 4.724399999999999977e+01 4.500000000000000111e-01 | ||||
| 4.751400000000000290e+01 4.510000000000000120e-01 | ||||
| 4.775000000000000000e+01 4.510000000000000120e-01 | ||||
| 4.808800000000000097e+01 4.520000000000000129e-01 | ||||
| 4.852600000000000335e+01 4.530000000000000138e-01 | ||||
| 4.886399999999999721e+01 4.540000000000000147e-01 | ||||
| 4.923499999999999943e+01 4.540000000000000147e-01 | ||||
| 4.964000000000000057e+01 4.540000000000000147e-01 | ||||
| 5.001100000000000279e+01 4.530000000000000138e-01 | ||||
| 5.034899999999999665e+01 4.530000000000000138e-01 | ||||
| 5.071999999999999886e+01 4.540000000000000147e-01 | ||||
| 5.102400000000000091e+01 4.540000000000000147e-01 | ||||
| 5.136099999999999710e+01 4.550000000000000155e-01 | ||||
| 5.173199999999999932e+01 4.560000000000000164e-01 | ||||
| 5.210300000000000153e+01 4.570000000000000173e-01 | ||||
| 5.254200000000000159e+01 4.580000000000000182e-01 | ||||
| 5.281199999999999761e+01 4.580000000000000182e-01 | ||||
| 5.314999999999999858e+01 4.580000000000000182e-01 | ||||
| 5.352100000000000080e+01 4.570000000000000173e-01 | ||||
| 5.382500000000000284e+01 4.570000000000000173e-01 | ||||
| 5.422899999999999920e+01 4.570000000000000173e-01 | ||||
| 5.466799999999999926e+01 4.570000000000000173e-01 | ||||
| 5.503900000000000148e+01 4.580000000000000182e-01 | ||||
| 5.541100000000000136e+01 4.580000000000000182e-01 | ||||
| 5.581600000000000250e+01 4.600000000000000200e-01 | ||||
| 5.618699999999999761e+01 4.600000000000000200e-01 | ||||
| 5.655799999999999983e+01 4.600000000000000200e-01 | ||||
| 5.696300000000000097e+01 4.600000000000000200e-01 | ||||
| 5.743500000000000227e+01 4.590000000000000191e-01 | ||||
| 5.794200000000000017e+01 4.590000000000000191e-01 | ||||
| 5.848100000000000165e+01 4.600000000000000200e-01 | ||||
| 5.912299999999999756e+01 4.600000000000000200e-01 | ||||
| 5.946000000000000085e+01 4.590000000000000191e-01 | ||||
| 5.986500000000000199e+01 4.590000000000000191e-01 | ||||
| 6.013499999999999801e+01 4.580000000000000182e-01 | ||||
| 6.040500000000000114e+01 4.560000000000000164e-01 | ||||
| 6.074199999999999733e+01 4.550000000000000155e-01 | ||||
| 6.107999999999999829e+01 4.540000000000000147e-01 | ||||
| 6.138400000000000034e+01 4.530000000000000138e-01 | ||||
| 6.185600000000000165e+01 4.520000000000000129e-01 | ||||
| 6.236200000000000188e+01 4.520000000000000129e-01 | ||||
| 6.283500000000000085e+01 4.520000000000000129e-01 | ||||
| 6.330700000000000216e+01 4.510000000000000120e-01 | ||||
| 6.371200000000000330e+01 4.500000000000000111e-01 | ||||
| 6.398199999999999932e+01 4.490000000000000102e-01 | ||||
| 6.428600000000000136e+01 4.480000000000000093e-01 | ||||
| 6.469100000000000250e+01 4.470000000000000084e-01 | ||||
| 6.496099999999999852e+01 4.450000000000000067e-01 | ||||
| 6.533199999999999363e+01 4.440000000000000058e-01 | ||||
| 6.566899999999999693e+01 4.420000000000000040e-01 | ||||
| 6.604000000000000625e+01 4.410000000000000031e-01 | ||||
| 6.634399999999999409e+01 4.400000000000000022e-01 | ||||
| 6.674899999999999523e+01 4.380000000000000004e-01 | ||||
| 6.712000000000000455e+01 4.369999999999999996e-01 | ||||
| 6.755899999999999750e+01 4.359999999999999987e-01 | ||||
| 6.806499999999999773e+01 4.349999999999999978e-01 | ||||
| 6.857099999999999795e+01 4.339999999999999969e-01 | ||||
| 6.897599999999999909e+01 4.329999999999999960e-01 | ||||
| 6.917900000000000205e+01 4.319999999999999951e-01 | ||||
| 6.958400000000000318e+01 4.299999999999999933e-01 | ||||
| 6.995499999999999829e+01 4.289999999999999925e-01 | ||||
| 7.035999999999999943e+01 4.269999999999999907e-01 | ||||
| 7.076500000000000057e+01 4.249999999999999889e-01 | ||||
| 7.117000000000000171e+01 4.229999999999999871e-01 | ||||
| 7.157500000000000284e+01 4.209999999999999853e-01 | ||||
| 7.194599999999999795e+01 4.189999999999999836e-01 | ||||
| 7.238500000000000512e+01 4.179999999999999827e-01 | ||||
| 7.299200000000000443e+01 4.169999999999999818e-01 | ||||
| 7.370099999999999341e+01 4.169999999999999818e-01 | ||||
| 7.430800000000000693e+01 4.159999999999999809e-01 | ||||
| 7.491599999999999682e+01 4.159999999999999809e-01 | ||||
| 7.545600000000000307e+01 4.139999999999999791e-01 | ||||
| 7.612999999999999545e+01 4.129999999999999782e-01 | ||||
| 7.670399999999999352e+01 4.109999999999999765e-01 | ||||
| 7.717700000000000671e+01 4.099999999999999756e-01 | ||||
| 7.771699999999999875e+01 4.099999999999999756e-01 | ||||
| 7.818899999999999295e+01 4.109999999999999765e-01 | ||||
| 7.886400000000000432e+01 4.129999999999999782e-01 | ||||
| 7.970799999999999841e+01 4.139999999999999791e-01 | ||||
| 8.055100000000000193e+01 4.159999999999999809e-01 | ||||
| 8.139499999999999602e+01 4.179999999999999827e-01 | ||||
| 8.220499999999999829e+01 4.209999999999999853e-01 | ||||
| 8.291299999999999670e+01 4.219999999999999862e-01 | ||||
|  | @ -0,0 +1,96 @@ | |||
| from ase import Atoms | ||||
| from ase.build import add_adsorbate, bulk | ||||
| 
 | ||||
| from msspec.calculator import MSSPEC, RFACTOR | ||||
| from msspec.utils import hemispherical_cluster | ||||
| from msspec.looper import Sweep, Looper | ||||
| 
 | ||||
| import numpy as np | ||||
| 
 | ||||
| 
 | ||||
| def create_cluster(height=1., theta=45, phi=0, bond_length=1.15): | ||||
|     # Fill the body of this function. The 'cluster' object in built according to | ||||
|     # values provided by the keyword arguments: | ||||
|     # height (in angströms): the 'z' distance between the Fe surface and the C atom | ||||
|     # theta and phi (in degrees): the polar and azimuthal orientation of the CP molecule | ||||
|     #                             (theta=0° aligns the molecule withe the surface normal | ||||
|     #                              phi=0° corresponds to the [100] direction of iron) | ||||
|     # bond_length (in angströms): the C-O distance | ||||
| 
 | ||||
|     iron = bulk('Fe', cubic=True) | ||||
|     cluster = hemispherical_cluster(iron, diameter=5, planes=2, emitter_plane=1) | ||||
| 
 | ||||
|     t = np.radians(theta) | ||||
|     p = np.radians(phi) | ||||
| 
 | ||||
|     z = bond_length * np.cos(t) | ||||
|     x = bond_length * np.sin(t) * np.cos(p) | ||||
|     y = bond_length * np.sin(t) * np.sin(p) | ||||
|     CO=Atoms('CO',positions=[(0,0,0),(x,y,z)]) | ||||
| 
 | ||||
|     add_adsorbate(cluster,CO, height=height) | ||||
| 
 | ||||
|     # Keep those 2 lines at the end of your function | ||||
|     # Store some information in the cluster object | ||||
|     cluster.info.update(adsorbate={'theta': theta, 'phi': phi, 'height': height,  | ||||
|                                    'bond_length': bond_length}) | ||||
|     return cluster | ||||
| 
 | ||||
| 
 | ||||
| def compute_polar_scan(cluster, folder='calc'): | ||||
|     calc = MSSPEC(spectroscopy='PED', algorithm='expansion', folder=folder) | ||||
|     calc.set_atoms(cluster) | ||||
| 
 | ||||
|     # SSC calculations | ||||
|     calc.calculation_parameters.scattering_order = 1 | ||||
| 
 | ||||
|     # Add temperature effects | ||||
|     [atom.set('mean_square_vibration', 0.005) for atom in cluster] | ||||
|     calc.calculation_parameters.vibrational_damping = 'averaged_tl' | ||||
| 
 | ||||
|     polar_angles = np.arange(-5, 85, 0.5) | ||||
|     # set the Carbon as absorber and compute the polar scan | ||||
|     cluster.absorber = cluster.get_chemical_symbols().index('C') | ||||
|     data = calc.get_theta_scan(level='1s', theta=polar_angles, kinetic_energy=1202) | ||||
|     calc.shutdown() | ||||
| 
 | ||||
|     return data | ||||
| 
 | ||||
| 
 | ||||
| ############################################################################### | ||||
| # Main part | ||||
| ############################################################################### | ||||
| # 1) Multiprocess calculations  | ||||
| theta = Sweep(key='theta', comments="The molecule tilt angle", | ||||
|               start=50, stop=60, step=1, unit='degree') | ||||
| phi = Sweep(key='phi', comments="The molecule azimuthal angle", | ||||
|             values=[0,45], unit='degree') | ||||
| 
 | ||||
| def process(theta, phi, **kwargs): | ||||
|     cluster = create_cluster(theta=theta, phi=phi, height=0.6, bond_length=1.157) | ||||
|     i = kwargs.get('sweep_index') | ||||
|     data = compute_polar_scan(cluster, folder=f'calc_{i:d}') | ||||
|     dset = data[-1] | ||||
|     return dset.theta, dset.cross_section | ||||
| 
 | ||||
| looper = Looper() | ||||
| looper.pipeline = process | ||||
| df = looper.run(theta, phi, ncpu=4) | ||||
| 
 | ||||
| # Black magic to convert the pandas dataframe object 'df' to the  | ||||
| # parameters dict and the resulst list (will be easier in a future | ||||
| # version ;-) ). | ||||
| parameters = df.to_dict('list') | ||||
| results = np.reshape(parameters.pop('output'), (df.shape[0]*2,-1)) | ||||
| 
 | ||||
| # 2) R-Factor analysis | ||||
| # Load the experimental data | ||||
| exp_data = np.loadtxt('experimental_data.txt') | ||||
| 
 | ||||
| # Create an R-Factor calculator | ||||
| rfc = RFACTOR() | ||||
| rfc.set_references(exp_data[:,0], exp_data[:,1]) | ||||
| 
 | ||||
| # Perform the R-Factor analysis | ||||
| data = rfc.run(*results, **parameters) | ||||
| data.view() | ||||
|  | @ -0,0 +1,250 @@ | |||
| # Polar angle (°)         C1s/O1s Signal (a.u.) | ||||
| -5.163000000000000256e+00 3.649999999999999911e-01 | ||||
| -4.858999999999990216e+00 3.639999999999999902e-01 | ||||
| -4.556000000000000050e+00 3.629999999999999893e-01 | ||||
| -4.251999999999999780e+00 3.619999999999999885e-01 | ||||
| -3.947999999999990184e+00 3.609999999999999876e-01 | ||||
| -3.677999999999999936e+00 3.599999999999999867e-01 | ||||
| -3.375000000000000000e+00 3.579999999999999849e-01 | ||||
| -3.104999999999999982e+00 3.569999999999999840e-01 | ||||
| -2.766999999999999904e+00 3.559999999999999831e-01 | ||||
| -2.462999999999989864e+00 3.549999999999999822e-01 | ||||
| -2.193000000000000060e+00 3.539999999999999813e-01 | ||||
| -1.991000000000000103e+00 3.529999999999999805e-01 | ||||
| -1.754999999999999893e+00 3.519999999999999796e-01 | ||||
| -1.519000000000009898e+00 3.509999999999999787e-01 | ||||
| -1.215000000000000080e+00 3.499999999999999778e-01 | ||||
| -1.012000000000000011e+00 3.499999999999999778e-01 | ||||
| -6.749999999999970468e-01 3.499999999999999778e-01 | ||||
| -4.389999999999930069e-01 3.509999999999999787e-01 | ||||
| -1.009999999999989934e-01 3.519999999999999796e-01 | ||||
| 2.019999999999979867e-01 3.529999999999999805e-01 | ||||
| 5.739999999999979563e-01 3.529999999999999805e-01 | ||||
| 9.789999999999989821e-01 3.539999999999999813e-01 | ||||
| 1.417000000000000037e+00 3.539999999999999813e-01 | ||||
| 1.956999999999990081e+00 3.539999999999999813e-01 | ||||
| 2.327999999999999847e+00 3.549999999999999822e-01 | ||||
| 2.564999999999999947e+00 3.559999999999999831e-01 | ||||
| 2.766999999999999904e+00 3.579999999999999849e-01 | ||||
| 2.970000000000000195e+00 3.589999999999999858e-01 | ||||
| 3.071000000000000174e+00 3.609999999999999876e-01 | ||||
| 3.239999999999989999e+00 3.619999999999999885e-01 | ||||
| 3.407999999999999918e+00 3.629999999999999893e-01 | ||||
| 3.576999999999999957e+00 3.649999999999999911e-01 | ||||
| 3.712000000000000188e+00 3.659999999999999920e-01 | ||||
| 3.813000000000000167e+00 3.679999999999999938e-01 | ||||
| 3.880999999999999783e+00 3.679999999999999938e-01 | ||||
| 3.947999999999990184e+00 3.699999999999999956e-01 | ||||
| 4.352999999999989988e+00 3.699999999999999956e-01 | ||||
| 4.758000000000000007e+00 3.709999999999999964e-01 | ||||
| 5.197000000000000064e+00 3.709999999999999964e-01 | ||||
| 5.602000000000000313e+00 3.719999999999999973e-01 | ||||
| 5.972999999999999865e+00 3.719999999999999973e-01 | ||||
| 6.243000000000000327e+00 3.729999999999999982e-01 | ||||
| 6.479000000000000092e+00 3.739999999999999991e-01 | ||||
| 6.682000000000000384e+00 3.750000000000000000e-01 | ||||
| 6.884000000000000341e+00 3.760000000000000009e-01 | ||||
| 6.985000000000000320e+00 3.770000000000000018e-01 | ||||
| 7.187999999999999723e+00 3.780000000000000027e-01 | ||||
| 7.322999999999989740e+00 3.790000000000000036e-01 | ||||
| 7.389999999999999680e+00 3.810000000000000053e-01 | ||||
| 7.491999999999999993e+00 3.820000000000000062e-01 | ||||
| 7.727999999999989988e+00 3.830000000000000071e-01 | ||||
| 8.064999999999999503e+00 3.830000000000000071e-01 | ||||
| 8.403000000000009351e+00 3.840000000000000080e-01 | ||||
| 8.808000000000010488e+00 3.840000000000000080e-01 | ||||
| 9.212999999999990308e+00 3.850000000000000089e-01 | ||||
| 9.618000000000000327e+00 3.840000000000000080e-01 | ||||
| 9.921000000000010033e+00 3.830000000000000071e-01 | ||||
| 1.025900000000000034e+01 3.830000000000000071e-01 | ||||
| 1.063000000000000078e+01 3.820000000000000062e-01 | ||||
| 1.103500000000000014e+01 3.810000000000000053e-01 | ||||
| 1.143999999999999950e+01 3.800000000000000044e-01 | ||||
| 1.174399999999999977e+01 3.800000000000000044e-01 | ||||
| 1.208099999999999952e+01 3.790000000000000036e-01 | ||||
| 1.245199999999999996e+01 3.790000000000000036e-01 | ||||
| 1.289100000000000001e+01 3.790000000000000036e-01 | ||||
| 1.316099999999999959e+01 3.800000000000000044e-01 | ||||
| 1.343099999999999916e+01 3.810000000000000053e-01 | ||||
| 1.366699999999999982e+01 3.820000000000000062e-01 | ||||
| 1.400399999999999956e+01 3.830000000000000071e-01 | ||||
| 1.430799999999999983e+01 3.850000000000000089e-01 | ||||
| 1.454400000000000048e+01 3.860000000000000098e-01 | ||||
| 1.471299999999999919e+01 3.870000000000000107e-01 | ||||
| 1.508399999999999963e+01 3.870000000000000107e-01 | ||||
| 1.562400000000000055e+01 3.870000000000000107e-01 | ||||
| 1.612999999999999901e+01 3.880000000000000115e-01 | ||||
| 1.663700000000000045e+01 3.880000000000000115e-01 | ||||
| 1.704200000000000159e+01 3.880000000000000115e-01 | ||||
| 1.744699999999999918e+01 3.880000000000000115e-01 | ||||
| 1.791900000000000048e+01 3.890000000000000124e-01 | ||||
| 1.825600000000000023e+01 3.900000000000000133e-01 | ||||
| 1.855999999999999872e+01 3.900000000000000133e-01 | ||||
| 1.889799999999999969e+01 3.920000000000000151e-01 | ||||
| 1.910000000000000142e+01 3.930000000000000160e-01 | ||||
| 1.933599999999999852e+01 3.930000000000000160e-01 | ||||
| 1.953900000000000148e+01 3.950000000000000178e-01 | ||||
| 1.987600000000000122e+01 3.960000000000000187e-01 | ||||
| 2.011199999999999832e+01 3.950000000000000178e-01 | ||||
| 2.048400000000000176e+01 3.940000000000000169e-01 | ||||
| 2.078699999999999903e+01 3.930000000000000160e-01 | ||||
| 2.112500000000000000e+01 3.920000000000000151e-01 | ||||
| 2.149599999999999866e+01 3.910000000000000142e-01 | ||||
| 2.190099999999999980e+01 3.900000000000000133e-01 | ||||
| 2.227199999999999847e+01 3.890000000000000124e-01 | ||||
| 2.264300000000000068e+01 3.880000000000000115e-01 | ||||
| 2.314999999999999858e+01 3.870000000000000107e-01 | ||||
| 2.362199999999999989e+01 3.860000000000000098e-01 | ||||
| 2.409400000000000119e+01 3.850000000000000089e-01 | ||||
| 2.460099999999999909e+01 3.850000000000000089e-01 | ||||
| 2.520799999999999841e+01 3.840000000000000080e-01 | ||||
| 2.578200000000000003e+01 3.830000000000000071e-01 | ||||
| 2.632199999999999918e+01 3.820000000000000062e-01 | ||||
| 2.692899999999999849e+01 3.820000000000000062e-01 | ||||
| 2.746900000000000119e+01 3.810000000000000053e-01 | ||||
| 2.810999999999999943e+01 3.800000000000000044e-01 | ||||
| 2.871799999999999997e+01 3.800000000000000044e-01 | ||||
| 2.922400000000000020e+01 3.790000000000000036e-01 | ||||
| 2.973000000000000043e+01 3.790000000000000036e-01 | ||||
| 3.016900000000000048e+01 3.780000000000000027e-01 | ||||
| 3.067500000000000071e+01 3.770000000000000018e-01 | ||||
| 3.128200000000000003e+01 3.770000000000000018e-01 | ||||
| 3.155199999999999960e+01 3.780000000000000027e-01 | ||||
| 3.195700000000000074e+01 3.800000000000000044e-01 | ||||
| 3.219299999999999784e+01 3.820000000000000062e-01 | ||||
| 3.246300000000000097e+01 3.840000000000000080e-01 | ||||
| 3.280100000000000193e+01 3.850000000000000089e-01 | ||||
| 3.324000000000000199e+01 3.870000000000000107e-01 | ||||
| 3.354299999999999926e+01 3.890000000000000124e-01 | ||||
| 3.388100000000000023e+01 3.900000000000000133e-01 | ||||
| 3.431900000000000261e+01 3.920000000000000151e-01 | ||||
| 3.469100000000000250e+01 3.940000000000000169e-01 | ||||
| 3.502799999999999869e+01 3.960000000000000187e-01 | ||||
| 3.546699999999999875e+01 3.970000000000000195e-01 | ||||
| 3.580400000000000205e+01 3.990000000000000213e-01 | ||||
| 3.610799999999999699e+01 4.010000000000000231e-01 | ||||
| 3.637800000000000011e+01 4.030000000000000249e-01 | ||||
| 3.661399999999999721e+01 4.040000000000000258e-01 | ||||
| 3.691799999999999926e+01 4.060000000000000275e-01 | ||||
| 3.722200000000000131e+01 4.079999999999999738e-01 | ||||
| 3.742399999999999949e+01 4.099999999999999756e-01 | ||||
| 3.762700000000000244e+01 4.109999999999999765e-01 | ||||
| 3.779500000000000171e+01 4.119999999999999774e-01 | ||||
| 3.803099999999999881e+01 4.139999999999999791e-01 | ||||
| 3.830100000000000193e+01 4.149999999999999800e-01 | ||||
| 3.850399999999999778e+01 4.159999999999999809e-01 | ||||
| 3.867300000000000182e+01 4.179999999999999827e-01 | ||||
| 3.890899999999999892e+01 4.189999999999999836e-01 | ||||
| 3.921300000000000097e+01 4.199999999999999845e-01 | ||||
| 3.938100000000000023e+01 4.209999999999999853e-01 | ||||
| 3.965100000000000335e+01 4.229999999999999871e-01 | ||||
| 3.988799999999999812e+01 4.239999999999999880e-01 | ||||
| 4.009000000000000341e+01 4.249999999999999889e-01 | ||||
| 4.039399999999999835e+01 4.259999999999999898e-01 | ||||
| 4.073100000000000165e+01 4.269999999999999907e-01 | ||||
| 4.103499999999999659e+01 4.279999999999999916e-01 | ||||
| 4.130499999999999972e+01 4.299999999999999933e-01 | ||||
| 4.160900000000000176e+01 4.309999999999999942e-01 | ||||
| 4.187899999999999778e+01 4.319999999999999951e-01 | ||||
| 4.221600000000000108e+01 4.329999999999999960e-01 | ||||
| 4.248599999999999710e+01 4.329999999999999960e-01 | ||||
| 4.275600000000000023e+01 4.339999999999999969e-01 | ||||
| 4.295799999999999841e+01 4.349999999999999978e-01 | ||||
| 4.322800000000000153e+01 4.359999999999999987e-01 | ||||
| 4.346500000000000341e+01 4.380000000000000004e-01 | ||||
| 4.376800000000000068e+01 4.390000000000000013e-01 | ||||
| 4.403799999999999670e+01 4.400000000000000022e-01 | ||||
| 4.424099999999999966e+01 4.420000000000000040e-01 | ||||
| 4.444299999999999784e+01 4.430000000000000049e-01 | ||||
| 4.461200000000000188e+01 4.440000000000000058e-01 | ||||
| 4.478099999999999881e+01 4.450000000000000067e-01 | ||||
| 4.494899999999999807e+01 4.460000000000000075e-01 | ||||
| 4.521900000000000119e+01 4.470000000000000084e-01 | ||||
| 4.545600000000000307e+01 4.480000000000000093e-01 | ||||
| 4.582699999999999818e+01 4.480000000000000093e-01 | ||||
| 4.619800000000000040e+01 4.480000000000000093e-01 | ||||
| 4.650200000000000244e+01 4.490000000000000102e-01 | ||||
| 4.683899999999999864e+01 4.490000000000000102e-01 | ||||
| 4.724399999999999977e+01 4.500000000000000111e-01 | ||||
| 4.751400000000000290e+01 4.510000000000000120e-01 | ||||
| 4.775000000000000000e+01 4.510000000000000120e-01 | ||||
| 4.808800000000000097e+01 4.520000000000000129e-01 | ||||
| 4.852600000000000335e+01 4.530000000000000138e-01 | ||||
| 4.886399999999999721e+01 4.540000000000000147e-01 | ||||
| 4.923499999999999943e+01 4.540000000000000147e-01 | ||||
| 4.964000000000000057e+01 4.540000000000000147e-01 | ||||
| 5.001100000000000279e+01 4.530000000000000138e-01 | ||||
| 5.034899999999999665e+01 4.530000000000000138e-01 | ||||
| 5.071999999999999886e+01 4.540000000000000147e-01 | ||||
| 5.102400000000000091e+01 4.540000000000000147e-01 | ||||
| 5.136099999999999710e+01 4.550000000000000155e-01 | ||||
| 5.173199999999999932e+01 4.560000000000000164e-01 | ||||
| 5.210300000000000153e+01 4.570000000000000173e-01 | ||||
| 5.254200000000000159e+01 4.580000000000000182e-01 | ||||
| 5.281199999999999761e+01 4.580000000000000182e-01 | ||||
| 5.314999999999999858e+01 4.580000000000000182e-01 | ||||
| 5.352100000000000080e+01 4.570000000000000173e-01 | ||||
| 5.382500000000000284e+01 4.570000000000000173e-01 | ||||
| 5.422899999999999920e+01 4.570000000000000173e-01 | ||||
| 5.466799999999999926e+01 4.570000000000000173e-01 | ||||
| 5.503900000000000148e+01 4.580000000000000182e-01 | ||||
| 5.541100000000000136e+01 4.580000000000000182e-01 | ||||
| 5.581600000000000250e+01 4.600000000000000200e-01 | ||||
| 5.618699999999999761e+01 4.600000000000000200e-01 | ||||
| 5.655799999999999983e+01 4.600000000000000200e-01 | ||||
| 5.696300000000000097e+01 4.600000000000000200e-01 | ||||
| 5.743500000000000227e+01 4.590000000000000191e-01 | ||||
| 5.794200000000000017e+01 4.590000000000000191e-01 | ||||
| 5.848100000000000165e+01 4.600000000000000200e-01 | ||||
| 5.912299999999999756e+01 4.600000000000000200e-01 | ||||
| 5.946000000000000085e+01 4.590000000000000191e-01 | ||||
| 5.986500000000000199e+01 4.590000000000000191e-01 | ||||
| 6.013499999999999801e+01 4.580000000000000182e-01 | ||||
| 6.040500000000000114e+01 4.560000000000000164e-01 | ||||
| 6.074199999999999733e+01 4.550000000000000155e-01 | ||||
| 6.107999999999999829e+01 4.540000000000000147e-01 | ||||
| 6.138400000000000034e+01 4.530000000000000138e-01 | ||||
| 6.185600000000000165e+01 4.520000000000000129e-01 | ||||
| 6.236200000000000188e+01 4.520000000000000129e-01 | ||||
| 6.283500000000000085e+01 4.520000000000000129e-01 | ||||
| 6.330700000000000216e+01 4.510000000000000120e-01 | ||||
| 6.371200000000000330e+01 4.500000000000000111e-01 | ||||
| 6.398199999999999932e+01 4.490000000000000102e-01 | ||||
| 6.428600000000000136e+01 4.480000000000000093e-01 | ||||
| 6.469100000000000250e+01 4.470000000000000084e-01 | ||||
| 6.496099999999999852e+01 4.450000000000000067e-01 | ||||
| 6.533199999999999363e+01 4.440000000000000058e-01 | ||||
| 6.566899999999999693e+01 4.420000000000000040e-01 | ||||
| 6.604000000000000625e+01 4.410000000000000031e-01 | ||||
| 6.634399999999999409e+01 4.400000000000000022e-01 | ||||
| 6.674899999999999523e+01 4.380000000000000004e-01 | ||||
| 6.712000000000000455e+01 4.369999999999999996e-01 | ||||
| 6.755899999999999750e+01 4.359999999999999987e-01 | ||||
| 6.806499999999999773e+01 4.349999999999999978e-01 | ||||
| 6.857099999999999795e+01 4.339999999999999969e-01 | ||||
| 6.897599999999999909e+01 4.329999999999999960e-01 | ||||
| 6.917900000000000205e+01 4.319999999999999951e-01 | ||||
| 6.958400000000000318e+01 4.299999999999999933e-01 | ||||
| 6.995499999999999829e+01 4.289999999999999925e-01 | ||||
| 7.035999999999999943e+01 4.269999999999999907e-01 | ||||
| 7.076500000000000057e+01 4.249999999999999889e-01 | ||||
| 7.117000000000000171e+01 4.229999999999999871e-01 | ||||
| 7.157500000000000284e+01 4.209999999999999853e-01 | ||||
| 7.194599999999999795e+01 4.189999999999999836e-01 | ||||
| 7.238500000000000512e+01 4.179999999999999827e-01 | ||||
| 7.299200000000000443e+01 4.169999999999999818e-01 | ||||
| 7.370099999999999341e+01 4.169999999999999818e-01 | ||||
| 7.430800000000000693e+01 4.159999999999999809e-01 | ||||
| 7.491599999999999682e+01 4.159999999999999809e-01 | ||||
| 7.545600000000000307e+01 4.139999999999999791e-01 | ||||
| 7.612999999999999545e+01 4.129999999999999782e-01 | ||||
| 7.670399999999999352e+01 4.109999999999999765e-01 | ||||
| 7.717700000000000671e+01 4.099999999999999756e-01 | ||||
| 7.771699999999999875e+01 4.099999999999999756e-01 | ||||
| 7.818899999999999295e+01 4.109999999999999765e-01 | ||||
| 7.886400000000000432e+01 4.129999999999999782e-01 | ||||
| 7.970799999999999841e+01 4.139999999999999791e-01 | ||||
| 8.055100000000000193e+01 4.159999999999999809e-01 | ||||
| 8.139499999999999602e+01 4.179999999999999827e-01 | ||||
| 8.220499999999999829e+01 4.209999999999999853e-01 | ||||
| 8.291299999999999670e+01 4.219999999999999862e-01 | ||||
		Loading…
	
		Reference in New Issue