kups.core.neighborlist.fixed
¶
Empty and fixed-edge :class:NeighborList implementations.
These cover graph-construction cases without cutoff search: always-empty
edge sets for point clouds and state-provided fixed edge topology for bonded
interactions, optionally filtered to a patch-affected subset. They satisfy the
standard :class:NeighborList[D] protocol so a unified graph constructor can
ask any neighbor list for edges, regardless of how those edges were obtained.
The public call contract treats keys as the self-graph/output table.
queries is keyword-only and reserved for true bipartite neighbor-list
queries; fixed topology is a self-graph implementation and does not use
queries. queried_keys is keyword-only, mutually exclusive with
queries, and names affected keys ids after the caller has already
written updated particle data into keys.
FixedEdgesNeighborList returns only fixed topology rows touched by those
ids. Its implementation is a normal selector -> mask -> compactor pipeline over
the fixed edge rows; shifts are computed from the current particle positions
during selection.
EmptyNeighborList
¶
Neighbor list that emits an :class:Edges[D] with zero rows.
The degree field is the runtime arity carried by the emitted edges;
it must match the type parameter D.
Attributes:
| Name | Type | Description |
|---|---|---|
degree |
int
|
Edge arity ( |
Source code in src/kups/core/neighborlist/fixed.py
FixedEdgesNeighborList
¶
Neighbor list for a fixed topology edge set.
Full self-graph calls return all fixed topology rows with shifts computed
from the current particle positions. Affected self-graph calls pass
keyword-only queried_keys after updated particle data has been written
into keys; the neighbor list returns only fixed rows touched by those
affected keys ids. queries is reserved for true bipartite
neighbor-list implementations and is not a fixed-edge update mechanism.
Attributes:
| Name | Type | Description |
|---|---|---|
indices |
Index[ParticleId]
|
Fixed edge topology. Shifts are intentionally not stored; they are computed from the call's current particle positions. |
avg_edges |
Capacity[int] | None
|
Update-only average affected-edge capacity per affected
|