I have read ICET – A Python Library for Constructing and Sampling Alloy Cluster Expansions,in the '‘6.2. Chemical Ordering in an Inorganic Clathrate’'it said “The unit cell contains 46 framework sites, which prevents an enumeration approach for structure generation. Instead, 240 occupations of the primitive unit cell for x = (13 … 16) were produced by randomly distributing Al and Si atoms over the host lattice.”,hou should i do this ?Anyone can help me ?
What more precisely are you struggling with?
If you have the structure as an ASE atoms object, you can manipulate the concentration and occupations by changing
I don’t know how to do ? Becase my structure is complex and i am a new to ase,so can you give me some example about this
Here is a quick example for NaCl where Cl atoms are randomly substituted with I atoms to achieve a given concentration. I think something similar could be adopted for your case.
import numpy as np from ase.build import bulk from ase.visualize import view # build ideal NaCl supercell prim = bulk('NaCl', 'rocksalt', a=5.5, cubic=True) atoms = prim.repeat(3) print('number of atoms', len(atoms)) view(atoms) # Randomly occupy Cl-sublattice with Cl and I at some concentration active_indices = atoms.symbols.indices()['Cl'] print('number of atoms on Cl sublattice', len(active_indices)) c_Cl = 0.75 n_Cl = round(len(atoms) / 2 * c_Cl) n_I = len(active_indices) - n_Cl print('number of Cl atoms', n_Cl) print('number of I atoms', n_I) random_occupations = ['Cl'] * n_Cl + ['I'] * n_I np.random.shuffle(random_occupations) print('random occupations of Cl sublattice', random_occupations) atoms.symbols[active_indices] = random_occupations view(atoms)
And possibly the
occupy_structure_randomly function in
icet could be useful.