예제 #1
0
#obtain atom indices and atom type as 'surface' or 'bulk'
nano_indices, GCNs, atom_types = get_geometric_data(nano_CONTCAR)
#initialize a PDOS object for the nanoparticle
nano_PDOS = VASP_DOS(nano_DOSCAR)
#calculate orbital interactions
BULK_DOSCAR = os.path.join(example_path, 'Pt_nano/Pt147/DOSCAR')
# VASP_DOS objects for both the gas (vacuum) and the adsorbate+surface system
GAS_PDOS = VASP_DOS(GAS_DOSCAR)
REFERENCE_PDOS = VASP_DOS(ADSORBATE_DOSCAR)
BULK_PDOS = VASP_DOS(BULK_DOSCAR)
print('Interactions with 4sigma orbital')
orbital_interaction = CO_overlap.get_orbital_interaction(
    gas_indices[0],
    nano_PDOS,
    nano_indices[atom_types[...] == 'surface'][0], ['s', 'dz2'],
    BULK_PDOS,
    bulk_atom=43,
    sum_interaction=False,
    sum_spin=True,
    index_type='gas')
print(orbital_interaction)
print('Interactions with 1pi orbital')
orbital_interaction = CO_overlap.get_orbital_interaction(
    gas_indices[1],
    nano_PDOS,
    nano_indices[atom_types[...] == 'surface'][0], ['dyz', 'dxz'],
    BULK_PDOS,
    bulk_atom=43,
    sum_interaction=False,
    sum_spin=True,
    index_type='gas')
예제 #2
0
four_sigma_list = []
one_pi_list = []
five_sigma_list = []

DOSCAR_files, CONTCAR_files = get_all_VASP_files(\
        r'C:\Users\lansf\Documents\Data\PROBE_PDOS\vasp_dos_files\Pt_nano')


for nano_DOSCAR, nano_CONTCAR in zip(DOSCAR_files, CONTCAR_files):
    nano_indices, GCNs, atom_types = get_geometric_data(nano_CONTCAR)
    GCNList += GCNs[atom_types[...] == 'surface'].tolist()
    # read and return density of states object
    nano_PDOS = VASP_DOS(nano_DOSCAR)   
    for atom_index in nano_indices[atom_types[...] == 'surface']:
        four_sigma = CO_overlap.get_orbital_interaction(1\
                    , nano_PDOS, atom_index, ['s','dz2']\
                    , BULK_PDOS, bulk_atom=43\
                    , method='band_width', use_orbital_proximity=False)
        one_pi = CO_overlap.get_orbital_interaction(2\
                    , nano_PDOS, atom_index, ['dyz','dxz']\
                    , BULK_PDOS, bulk_atom=43\
                    , method='band_width', use_orbital_proximity=False)
        five_sigma = CO_overlap.get_orbital_interaction(3\
                    , nano_PDOS, atom_index, ['s','dz2']\
                    , BULK_PDOS, bulk_atom=43\
                    , method='band_width', use_orbital_proximity=False)
        
            
        four_sigma_list.append(four_sigma)
        one_pi_list.append(one_pi)
        five_sigma_list.append(five_sigma)
GCNList = []
orbital_indices = [0, 3, 4, 5]
orbital_array = [[] for i in range(len(orbital_indices))]
DOSCAR_files, CONTCAR_files = get_all_VASP_files(os.path.join(lobster_path,'nanoparticles_noW'))
DOSCAR_files = [file_name + '.lobster' for file_name in DOSCAR_files]
for nano_DOSCAR, nano_CONTCAR in zip(DOSCAR_files, CONTCAR_files):
    nano_indices, GCNs, atom_types = get_geometric_data(nano_CONTCAR)
    GCNList += GCNs[atom_types[...] == 'surface'].tolist()
    # read and return density of states object
    nano_PDOS = VASP_DOS(nano_DOSCAR)   
    for atom_index in nano_indices[atom_types[...] == 'surface']:
        for i, index in enumerate(orbital_indices):
            orbital_array[i].append(Overlap.get_orbital_interaction(index\
                    , nano_PDOS, atom_index, ['s','d']\
                    , BULK_PDOS, bulk_atom=43\
                    , method='band_width', use_orbital_proximity=False\
                    , index_type='adsorbate'
                    , sum_interaction=True))
            


GCNList = np.array(GCNList)
for i in range(len(orbital_indices)):
    orbital_array[i] = np.array(orbital_array[i]).T
#plotting scaling of band center with GCN
colors = ['b','r']
abc = ['(a)','(b)','(c)','(d)']
fig = plt.figure(figsize=(7.2,3.5),dpi=400)
axes = fig.subplots(nrows=2, ncols=2)
axis_list = [axes[0, 0], axes[0, 1], axes[1, 0], axes[1, 1]]
for count, orbital_list in enumerate(orbital_array):