CHILL and CHILL+ structure classification. This namespace contains functions that are used in the CHILL/CHILL+ classification scheme, as well as a yodaCloud struct to hold all the information. More...
Data Structures | |
struct | YlmAtom |
This contains a complex vector of length | |
struct | QlmAtom |
This is the local orientational bond order parameter | |
Functions | |
molSys::PointCloud< molSys::Point< double >, double > | getCorrel (molSys::PointCloud< molSys::Point< double >, double > *yCloud, std::vector< std::vector< int >> nList, bool isSlice=false) |
molSys::PointCloud< molSys::Point< double >, double > | getIceTypeNoPrint (molSys::PointCloud< molSys::Point< double >, double > *yCloud, std::vector< std::vector< int >> nList, bool isSlice=false) |
Classifies each atom according to the CHILL algorithm without printing. More... | |
molSys::PointCloud< molSys::Point< double >, double > | getIceType (molSys::PointCloud< molSys::Point< double >, double > *yCloud, std::vector< std::vector< int >> nList, std::string path, int firstFrame, bool isSlice=false, std::string outputFileName="chill.txt") |
Classifies each atom according to the CHILL algorithm. More... | |
molSys::PointCloud< molSys::Point< double >, double > | getCorrelPlus (molSys::PointCloud< molSys::Point< double >, double > *yCloud, std::vector< std::vector< int >> nList, bool isSlice=false) |
Gets c_ij and then classifies bond types according to the CHILL+ algorithm. More... | |
molSys::PointCloud< molSys::Point< double >, double > | getIceTypePlus (molSys::PointCloud< molSys::Point< double >, double > *yCloud, std::vector< std::vector< int >> nList, std::string path, int firstFrame, bool isSlice=false, std::string outputFileName="chillPlus.txt") |
Classifies each atom according to the CHILL+ algorithm. More... | |
std::vector< double > | getq6 (molSys::PointCloud< molSys::Point< double >, double > *yCloud, std::vector< std::vector< int >> nList, bool isSlice=false) |
molSys::PointCloud< molSys::Point< double >, double > | reclassifyWater (molSys::PointCloud< molSys::Point< double >, double > *yCloud, std::vector< double > *q6) |
int | printIceType (molSys::PointCloud< molSys::Point< double >, double > *yCloud, std::string path, int firstFrame, bool isSlice=false, std::string outputFileName="superChill.txt") |
Prints out the iceType for a particular frame onto the terminal. More... | |
bool | isInterfacial (molSys::PointCloud< molSys::Point< double >, double > *yCloud, std::vector< std::vector< int >> nList, int iatom, int num_staggrd, int num_eclipsd) |
int | numStaggered (molSys::PointCloud< molSys::Point< double >, double > *yCloud, std::vector< std::vector< int >> nList, int jatom) |
Finds the number of staggered bonds for a given atom of index jatom. More... | |
CHILL and CHILL+ structure classification. This namespace contains functions that are used in the CHILL/CHILL+ classification scheme, as well as a yodaCloud struct to hold all the information.
Both the CHILL and CHILL+ methods are based on the local bond order parameter method, developed by ten Wolde et al. for the identification of crystal nuclei in Lennard-Jones systems. The local order parameter method is based on order parameters introduced by Steinhardt et al.
The local environment of the water molecules is classified using an algorithm based on spherical harmonics, which is independent of the specific crystal structure and does not require the definition of a reference frame. The local order around each water molecule
Here,
The alignment of the orientation of the local structures is measured by the normalized dot product of the local orientational bond order parameter,
where,
Depending on the values of
Algorithm | Eclipsed Bonds | Staggered Bonds |
---|---|---|
CHILL | ||
CHILL+ |
Since each molecule
The CHILL algorithm can classify water molecules as belonging to the cubic, hexagonal, interfacial or liquid (amorphous) phase:
| Phase | E | S | Neighbours | Description | |----------—|--—|--—|---------—|------------------------------------------------------—| | Cubic | 0 | 4 | 4 | All 4 neighbours are staggered. | | Hexagonal | 1 | 3 | 4 | 3 staggered and 1 eclipsed bond. | | Interfacial | any | 2 | 4 | Belongs to the ice phase, but does not satisfy strict criteria of cubic and hexagonal | | | 0 | 3 | 4 | | | Liquid | N/A | N/A | any | Classification by exclusion. |
Here, E and S refer to eclipsed and staggered bonds. The neighbours column contains the number of nearest neighbours.
The CHILL+ algorithm, which is a modified version of CHILL, additionally identifies clathrate and interfacial clathrate phases. The criteria are enumerated in the table below:
Phase | E | S | Neighbours | Description |
---|---|---|---|---|
Cubic | 0 | 4 | 4 | no change was made to |
staggered bond criterion from CHILL | | Hexagonal | 1 | 3 | 4 | wider eclipsed range compared to CHILL; identifies 99% hexagonal ice up to 270 K | | Interfacial | any | 2 | 4 | must have at least one first neighbor water with more than two staggered bonds | | | 0 | 3 | 4 | must have at least one first neighbor water with more than one staggered bond | | Clathrate | 4 | 0 | 4 | bulk clathrate and part of the interface of clathrates can be identified with four eclipsed bonds | | Interfacial clathrate | 3 | any | 4 | partial clathrate cages and threads of clathrate-like order | | Liquid | N/A | N/A | any | classifies as liquid if none of the above criteria are fulfilled |
Although both the CHILL and CHILL+ classification schemes take into account the local order of the environment of each particle, both schemes output a per-particle classification.