Topological network criteria¶
This page is the definitions. The runnable checks that the implementations still return the documented counts live under Tutorials.
Bond correlation¶
CHILL and CHILL+ look at \(l = 3\). With \(N_b(i)\) neighbours,
A bond is staggered when \(c_{ij} \le -0.8\). The eclipsed window is the part that differs:
rule |
eclipsed |
staggered |
neighbours |
|---|---|---|---|
CHILL |
\(-0.2 \le c_{ij} \le -0.05\) |
\(c_{ij} \le -0.8\) |
4 |
CHILL+ |
\(-0.35 \le c_{ij} \le 0.25\) |
\(c_{ij} \le -0.8\) |
4 |
The code stores those edges as chill::chillRule (-0.8, -0.2, -0.05, 4) and chill::chillPlusRule (-0.8, -0.35, 0.25, 4).
Boundaries are inclusive.
The four-bond star is the phase.
Cubic is four staggered bonds.
Hexagonal is three staggered and one eclipsed.
CHILL+ adds clathrate (four eclipsed) and interfacial clathrate (three eclipsed).
Water is what remains.
The full star table is in bop.hpp.
Primitive rings¶
A cycle is primitive, in the Franzblau sense, when for every pair of its vertices a shortest path in the bond graph lies along the cycle.
primitive::ringNetwork enumerates cycles up to max_depth and drops the ones that fail that test.
The bond graph is an argument.
Mutual four-nearest, the union of those nominations, and a distance cutoff are three different graphs.
Quote the graph with the census.
Cages¶
A hexagonal cage is two basal six-rings joined by prismatic six-rings.
A double-diamond cage is an equatorial six-ring and its peripheral rings.
ring::cageAffiliation evaluates those conditions for every six-ring, without the claim order of the older findHC / findDDC walk.
The seeded variant takes a strict graph for the seeds and a permissive graph for the completions.
An atom on the permissive graph is kept only when its component contains a seed.
--complete then fills a six-ring that is missing one labelled vertex.
That walk is the least fixed point of the all-but-one rule; see the ring-completion page.
Confined ice¶
A prism block is two rings of the same size that satisfy the basal conditions in ring::basalPrismConditions (or the relaxed form).
ring::findPrisms returns which rings are blocks, split into perfect and imperfect.
A monolayer analysis keeps primitive rings of each size and, when you ask for the files, writes the coverage of the sheet.
The in-plane \(g(r)\) normalises the pair histogram by the slab factor
\[ f(r) =
begin{cases} 1 - r / (2h) & r le h \ h / (2r) & r > h end{cases}
\]
where \(h\) is the confined height.
That is rdf2::normalizeRDF.
Order parameters¶
\(\bar q_l(i)\) replaces \(q_{lm}(i)\) with the average of \(q_{lm}\) over \(i\) and its neighbours before the same sum.
That is the Lechner-Dellago form.
The implementation is chill::steinhardtQl.