Exemple #1
0
def freeze_center(slab):
    sf = AdsorbateSiteFinder(slab)
    surf_sites = sf.find_surface_sites_by_height(slab, height=5, bottom=True)
    sd_lst = []
    for site in slab:
        if site in surf_sites:
            sd_lst.append([True, True, True])
        else:
            sd_lst.append([False, False, False])
    slab.add_site_property('selective_dynamics', sd_lst)

    return slab
Exemple #2
0
def determine_coverage(slab, coverage, ref_species=None, height=2.1):
    sf = AdsorbateSiteFinder(slab)
    surf_sites = sf.find_surface_sites_by_height(slab, height=height)
    if ref_species == None:
        n_surf_atoms = len(surf_sites)
    else:
        n_surf_atoms = 0
        for site in surf_sites:
            if site.species_string == ref_species:
                n_surf_atoms += 1
#    print(n_surf_atoms)
    n_sites_init = n_surf_atoms*coverage
    
    n_sites = np.round(n_sites_init)
    
    if n_sites != n_sites_init:
        actual_coverage = n_sites/n_surf_atoms
        print('Warning: the number of sites used does not exactly match the specified coverage, the actual coverage is %s' %actual_coverage)
    else:
        actual_coverage = coverage
    n_sites = int(n_sites)
    
    return n_sites, actual_coverage