Skip to content

Add warning if there are no species in range of site #361

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Apr 3, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 15 additions & 13 deletions src/gemdat/transitions.py
Original file line number Diff line number Diff line change
Expand Up @@ -504,17 +504,6 @@ def _calculate_atom_states(
The value corresponds to the index in the `site_coords`.
-1 indicates that atom is not at any site.
"""

def _site_radius_iterator():
for label, radius in site_radius.items():
if label:
grouped = ((k, site) for k, site in enumerate(sites) if site.label == label)
key, site_group = zip(*grouped)
frac_coords = np.array([site.frac_coords for site in site_group])
yield frac_coords, np.array(key), radius
else:
yield sites.frac_coords, None, radius

lattice = trajectory.get_lattice()

cutoff = max(list(site_radius.values()))
Expand All @@ -531,10 +520,23 @@ def _site_radius_iterator():

atom_sites = np.full((traj_cart_coords.shape[0]), NOSITE)

for coords, key, radius in _site_radius_iterator():
cart_coords = lattice.get_cartesian_coords(coords)
for label, radius in site_radius.items():
if label:
grouped = ((k, site) for k, site in enumerate(sites) if site.label == label)
key, site_group = zip(*grouped)
frac_coords = np.array([site.frac_coords for site in site_group])
key = np.array(key)
else:
frac_coords = sites.frac_coords
key = None

cart_coords = lattice.get_cartesian_coords(frac_coords)
site_index = periodic_tree.search_tree(cart_coords, radius * site_inner_fraction)

if site_index.size == 0:
warn(f'No floating species in range of {label} ({radius=})', stacklevel=2)
continue

siteno, index = site_index.T

if key is not None:
Expand Down