ectoolkits.structures.slab module#
- class ectoolkits.structures.slab.RutileSlab(symbols=None, positions=None, numbers=None, tags=None, momenta=None, masses=None, magmoms=None, charges=None, scaled_positions=None, cell=None, pbc=None, celldisp=None, constraint=None, calculator=None, info=None, velocities=None)[source]#
Bases:
Slab
class atoms used for rutile like(structure) system space group: P42/mnm Usage: rutile = read(“Rutile-exp.cif”) x = RutileType(rutile) slab = [] for i in range(3, 7):
slab.append(x.get_slab(indices=(1, 1, 0), n_layers=i, lateral_repeat=(2, 4)))
- rutile_slab_001(n_layers=5, lateral_repeat: tuple = (2, 2), vacuum=10.0)[source]#
function for create symmetry slab for rutile structure 001 surface space group: P42/mnm this function is valid only for 6 atoms conventional cell.
- rutile_slab_100(n_layers=5, lateral_repeat: tuple = (2, 3), vacuum=10.0)[source]#
function for create symmetry slab for rutile structure 100 surface space group: P42/mnm this function is valid only for 6 atoms conventional cell.
- class ectoolkits.structures.slab.Slab(symbols=None, positions=None, numbers=None, tags=None, momenta=None, masses=None, magmoms=None, charges=None, scaled_positions=None, cell=None, pbc=None, celldisp=None, constraint=None, calculator=None, info=None, velocities=None)[source]#
Bases:
Atoms
Object inherent from Atoms object in ASE. Add method for vacuum slab model
- Parameters:
Atoms (_type_) – Atoms object int ASE
- add_adsorbate(ad_site_idx: int, vertical_dist: float, adsorbate: Atoms, contact_atom_idx: int = 0, lateral_shift: Tuple[float] = (0, 0))[source]#
- add_adsorbates(ad_site_idx_list: List[int], vertical_dist: float, adsorbate: Atoms, contact_atom_idx: int = 0, lateral_shift: Tuple[float] = (0, 0))[source]#
- del_from_range(zmin: int, zmax: int, element: Optional[str] = None) Atoms [source]#
_summary_
_extended_summary_
- Parameters:
zmin (int) – _description_
zmax (int) – _description_
element (str, optional) – _description_. Defaults to None.
- Returns:
_description_
- Return type:
Atoms
- del_surf_layer(element: Optional[str] = None, tolerance=0.1, dsur='up', check_cross_boundary=False)[source]#
delete the layer atoms,
_extended_summary_
- Parameters:
element (str, optional) – _description_. Defaults to None.
tolerance (float, optional) – _description_. Defaults to 0.1.
dsur (str, optional) – _description_. Defaults to ‘up’.
- Returns:
_description_
- Return type:
_type_
- find_element_idx_list(element: str) list [source]#
find atom index provided that element symbol
_extended_summary_
- Parameters:
element (str) – element symbol
- Returns:
list of atom indices
- Return type:
list
- find_idx_from_range(zmin: int, zmax: int, element: Optional[str] = None) list [source]#
_summary_
_extended_summary_
- Parameters:
zmin (int) – minimum in z
zmax (int) – maximum in z
element (str, optional) – element symbol, None means all atoms. Defaults to None.
- Returns:
list of atom indices
- Return type:
list
- find_surf_idx(element: Optional[str] = None, tolerance: float = 0.1, dsur: str = 'up', check_cross_boundary=False, trans_z_dist=5) list [source]#
find atom indexs at surface
_extended_summary_
- Parameters:
element (str) – element symbol
tolerance (float, optional) – tolerance for define a layer. Defaults to 0.1.
dsur (str, optional) – direction of surface, ‘up’ or ‘dw’. for a vacuum-slab model,
'up'. (you have up surface and down surface. Defaults to) –
- Returns:
list of atom indices
- Return type:
list
- generate_interface(water_box_len: float, top_surface_idx: List[int], bottom_surface_idx: List[int])[source]#
merge slab model and water box together
- Parameters:
water_box_len –
top_surface_idx –
bottom_surface_idx –
- Return type:
tmp
- generate_water_box(water_box_len)[source]#
function to generate water box x and y length is from self length :param water_box_len:
Returns:
- get_cus(input_idx, coord_num, cutoff)[source]#
function to get atom index of coordinate unsaturated sites. slab: Atoms object, the slab model input_idx: the index of the atom you want get the coordination number coord_num: coordination number for coordinate unsaturated sites, the number must be less then the full coordination cutoff: the cutoff radius defining coordination. something like: {(‘Ti’, ‘O’): 2.2} return: the index for cus atoms