Skip to content

Draft: Improve orbit interface

Pernilla Ekborg-Tanner requested to merge improve-orbit-interface into master

Description

Improve the interface for OrbitList and Orbit to facilitate inspection and merging of orbits.

MWE

from icet import ClusterSpace
from ase.build import fcc111

prim = fcc111('Pd', (1,1,6), 4.0, vacuum=10.0, periodic=True)
cs = ClusterSpace(structure=prim,
                  cutoffs=[3.0],
                  chemical_symbols=['Au', 'Pd'])

surface_sites = [0, 5]

for i, orbit in enumerate(cs.orbit_list):
    # Print properties of representative cluster (the corresponding properties 
    # for all clusters are available by adding `all_` in the beginning of the property name)
    print(f'Orbit {i}')
    print(f'Order: {orbit.order}')
    print(f'Radius: {orbit.radius}')
    print(f'Sites: {orbit.sites}')
    print(f'Positions: {orbit.positions}')
    print(f'Distances: {orbit.distances}')
    print(f'Unit cell offsets: {orbit.site_offsets}')
    
    if not np.any([site in surface_sites for site in orbit.sites]):
        print('Merge')

    if np.any([dist > 4.0 for dist in orbit.distances]):
        print('Prune')
    
    print()

Additional information

#565

Edited by Pernilla Ekborg-Tanner

Merge request reports