Angular Parameters and Chi Parameters#
Angular Criteria#
The angular parameter identifies diamond-like structures by analyzing the angles between an atom and its neighbors. It returns a per-atom value useful for distinguishing diamond cubic from other structures.
Note: Both angular_criteria and chi_params require neighbors to be found first.
import pyscal
from pyscal.structures import make_crystal
import numpy as np
Angular Parameter#
dia = make_crystal("diamond", lattice_constant=5.43, repetitions=(3, 3, 3))
pyscal.find_neighbors(dia, method="cutoff", cutoff=0)
angular = pyscal.angular_criteria(dia)
print(f"Angular parameter (diamond): mean = {angular.mean():.4f}")
print(f"Unique values: {np.unique(angular)}")
Angular parameter (diamond): mean = 0.0000
Unique values: [1.84889275e-32]
# Compare with non-diamond structure
fcc = make_crystal("fcc", lattice_constant=3.6, repetitions=(4, 4, 4))
pyscal.find_neighbors(fcc, method="cutoff", cutoff=0)
angular_fcc = pyscal.angular_criteria(fcc)
print(f"Angular parameter (FCC): mean = {angular_fcc.mean():.4f}")
Angular parameter (FCC): mean = 2.5931
Chi Parameters#
Chi parameters provide a complementary structural fingerprint based on the angular distribution of neighbors. The chi vector captures angular structure information.
fcc = make_crystal("fcc", lattice_constant=3.6, repetitions=(4, 4, 4))
pyscal.find_neighbors(fcc, method="cutoff", cutoff=0)
chi = pyscal.chi_params(fcc)
print(f"Chi vector shape: {chi.shape}")
print(f"Chi vector (atom 0): {chi[0]}")
Chi vector shape: (256, 9)
Chi vector (atom 0): [ 6 0 0 0 24 12 0 24 0]
Comparing Chi Parameters Across Structures#
structures = {
"FCC": make_crystal("fcc", lattice_constant=3.6, repetitions=(4, 4, 4)),
"BCC": make_crystal("bcc", lattice_constant=2.87, repetitions=(4, 4, 4)),
"HCP": make_crystal("hcp", lattice_constant=3.2, repetitions=(4, 4, 4), ca_ratio=1.633),
}
for name, s in structures.items():
pyscal.find_neighbors(s, method="cutoff", cutoff=0)
chi = pyscal.chi_params(s)
vals = chi.mean(axis=0)
print(f"{name}: chi = {vals}")
FCC: chi = [ 6. 0. 0. 0. 24. 12. 0. 24. 0.]
BCC: chi = [ 7. 0. 0. 0. 36. 12. 0. 36. 0.]
HCP: chi = [ 3. 0. 6. 0. 21. 12. 0. 24. 0.]