Namespaces | |
| namespace | chill |
| CHILL and CHILL+ structure classification. | |
| namespace | sph |
| Functions used for spherical harmonics. | |
Classes | |
| struct | chill::YlmAtom |
| This contains a complex vector of length \(2l+1\). More... | |
| struct | chill::QlmAtom |
| This is the local orientational bond order parameter \(q_{lm}\), of length \(2l+1\). More... | |
| struct | chill::BondClassifier |
| One rule set for classifying bond correlations \(c_{ij}\). More... | |
| struct | chill::SteinhardtQl |
| Per-particle Steinhardt order parameters of a single degree \(l\). More... | |
Functions | |
| BondClassifier | chill::chillRule () |
| BondClassifier | chill::chillPlusRule () |
| BondClassifier | chill::bondClassifier (const std::string &name) |
| void | chill::registerBondClassifier (const std::string &name, const BondClassifier &rule) |
| std::vector< std::string > | chill::bondClassifierNames () |
| Names of every registered rule set. | |
| void | chill::classifyBonds (molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< std::vector< int > > &nList, const BondClassifier &rule, bool isSlice=false) |
| void | chill::getCorrel (molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< std::vector< int > > &nList, bool isSlice=false, int coordinationNumber=4) |
| Function for getting the bond order correlations \(c_{ij}\) (or \(a_{ij}\) in some treatments) according to the CHILL algorithm. | |
| void | chill::getIceTypeNoPrint (molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< std::vector< int > > &nList, bool isSlice=false) |
| Function that classifies every particle's molSys::atom_state_type ice type, according to the CHILL algorithm. | |
| void | chill::getIceType (molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< std::vector< int > > &nList, std::string path, int firstFrame, bool isSlice=false, std::string outputFileName="chill.txt") |
| Function that classifies every particle's molSys::atom_state_type ice type, according to the CHILL algorithm. | |
| void | chill::getCorrelPlus (molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< std::vector< int > > &nList, bool isSlice=false, int coordinationNumber=4) |
| void | chill::getIceTypePlus (molSys::PointCloud< molSys::Point< double >, double > &yCloud, const 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. | |
| void | chill::getIceTypePlusNoPrint (molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< std::vector< int > > &nList, bool isSlice=false) |
| CHILL+ ice types on the cloud. Does not write a file. | |
| std::vector< double > | chill::getq6 (molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< std::vector< int > > &nList, bool isSlice=false) |
| void | chill::reclassifyWater (molSys::PointCloud< molSys::Point< double >, double > &yCloud, std::vector< double > &q6) |
| int | chill::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. | |
| bool | chill::isInterfacial (molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< std::vector< int > > &nList, int iatom, int num_staggrd, int num_eclipsd, bool chillPlus=false) |
| int | chill::numStaggered (molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< std::vector< int > > &nList, int jatom) |
| Finds the number of staggered bonds for a given atom of index jatom. | |
| SteinhardtQl | chill::steinhardtQl (const molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< std::vector< int > > &nList, int orderL) |
| std::vector< std::complex< double > > | sph::spheriHarmo (int orderL, std::array< double, 2 > radialCoord) |
| std::array< double, 2 > | sph::radialCoord (std::array< double, 3 > cartCoord) |
| std::vector< std::complex< double > > | sph::lookupTableQ3Vec (std::array< double, 2 > angles) |
| Lookup table for Q3. | |
| std::complex< double > | sph::lookupTableQ3 (int m, std::array< double, 2 > angles) |
| Lookup table for Q3 (m=0 to m=6). | |
| std::vector< std::complex< double > > | sph::lookupTableQ4Vec (std::array< double, 2 > angles) |
| Lookup table for Q4. | |
| std::complex< double > | sph::lookupTableQ4 (int m, std::array< double, 2 > angles) |
| Lookup table for Q4 (m=0 to m=8). | |
| std::vector< std::complex< double > > | sph::lookupTableQ6Vec (std::array< double, 2 > angles) |
| Lookup table for Q6. | |
| std::vector< std::complex< double > > | sph::lookupTableQ8Vec (std::array< double, 2 > angles) |
| Lookup table for Q8. | |
| std::complex< double > | sph::lookupTableQ8 (int m, std::array< double, 2 > angles) |
| Lookup table for Q8 (m=0 to m=16). | |
| std::complex< double > | sph::lookupTableQ6 (int m, std::array< double, 2 > angles) |
| Lookup table for Q6 (m=0 to m=12). | |
Variables | |
| std::vector< std::complex< double > > | chill::YlmAtom::ylm |
| std::vector< YlmAtom > | chill::QlmAtom::ptq |
| double | chill::BondClassifier::staggeredMax |
| double | chill::BondClassifier::eclipsedMin |
| c_ij at or below this is staggered | |
| double | chill::BondClassifier::eclipsedMax |
| Lower edge of the eclipsed band. | |
| int | chill::BondClassifier::coordinationNumber |
| Upper edge of the eclipsed band. | |
| std::vector< double > | chill::SteinhardtQl::ql |
| std::vector< double > | chill::SteinhardtQl::qlBar |
| Local \(q_l(i)\). | |
|
nodiscard |
Look up a registered rule set by name. "CHILL" and "CHILL+" are always present; registerBondClassifier adds more. Throws std::out_of_range for unknown names.
|
nodiscard |
Names of every registered rule set.
|
nodiscard |
The CHILL+ rule set (Nguyen and Molinero, JPCB 119, 9369, 2015): wider eclipsed band for interfacial and clathrate recognition
|
nodiscard |
The CHILL rule set (Moore et al., PCCP 12, 4124, 2010): strict staggered bound, narrow eclipsed band, four nearest neighbours
| void chill::classifyBonds | ( | molSys::PointCloud< molSys::Point< double >, double > & | yCloud, |
| const std::vector< std::vector< int > > & | nList, | ||
| const BondClassifier & | rule, | ||
| bool | isSlice = false ) |
Compute and classify the bond correlations c_ij under an arbitrary rule set, filling yCloud.pts[i].c_ij. getCorrel and getCorrelPlus are this engine under their canonical water rules.
| void chill::getCorrel | ( | molSys::PointCloud< molSys::Point< double >, double > & | yCloud, |
| const std::vector< std::vector< int > > & | nList, | ||
| bool | isSlice = false, | ||
| int | coordinationNumber = 4 ) |
Function for getting the bond order correlations \(c_{ij}\) (or \(a_{ij}\) in some treatments) according to the CHILL algorithm.
| [in,out] | yCloud | The output molSys::PointCloud |
| [in] | nList | The row-ordered neighbour list, by ID. The first element of each row is the particle ID, followed by the IDs of the neighbours |
| [in] | isSlice | This decides whether there is a slice or not |
| [in] | coordinationNumber | How many nearest neighbours the bond sum runs over. The default of four is the coordination CHILL is defined and validated against (tetrahedral water); other values reuse the c_ij machinery for differently coordinated systems, and a non-positive value gives each atom its own count from its neighbour-list row. The ice-classification tables in getIceType remain four-bond rules |
| void chill::getCorrelPlus | ( | molSys::PointCloud< molSys::Point< double >, double > & | yCloud, |
| const std::vector< std::vector< int > > & | nList, | ||
| bool | isSlice = false, | ||
| int | coordinationNumber = 4 ) |
Gets c_ij and then classifies bond types according to the CHILL+ algorithm. coordinationNumber as in getCorrel: four is the validated CHILL+ water scheme, non-positive keeps each atom's whole neighbour row
| void chill::getIceType | ( | molSys::PointCloud< molSys::Point< double >, double > & | yCloud, |
| const std::vector< std::vector< int > > & | nList, | ||
| std::string | path, | ||
| int | firstFrame, | ||
| bool | isSlice = false, | ||
| std::string | outputFileName = "chill.txt" ) |
Function that classifies every particle's molSys::atom_state_type ice type, according to the CHILL algorithm.
| [in,out] | yCloud | The output molSys::PointCloud |
| [in] | nList | Row-ordered neighbour list by atom ID |
| [in] | path | Path to the output directory to which ice types are written out to |
| [in] | firstFrame | First frame to be analyzed |
| [in] | isSlice | This decides whether there is a slice or not |
| [in] | outputFileName | Name of the output file, to which the ice types will be written out. |
| void chill::getIceTypeNoPrint | ( | molSys::PointCloud< molSys::Point< double >, double > & | yCloud, |
| const std::vector< std::vector< int > > & | nList, | ||
| bool | isSlice = false ) |
Function that classifies every particle's molSys::atom_state_type ice type, according to the CHILL algorithm.
Does not print out the information.
| [in,out] | yCloud | The output molSys::PointCloud |
| [in] | isSlice | This decides whether there is a slice or not |
| [in] | nList | Row-ordered neighbour list by atom ID |
| void chill::getIceTypePlus | ( | molSys::PointCloud< molSys::Point< double >, double > & | yCloud, |
| const 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.
| void chill::getIceTypePlusNoPrint | ( | molSys::PointCloud< molSys::Point< double >, double > & | yCloud, |
| const std::vector< std::vector< int > > & | nList, | ||
| bool | isSlice = false ) |
CHILL+ ice types on the cloud. Does not write a file.
| std::vector< double > chill::getq6 | ( | molSys::PointCloud< molSys::Point< double >, double > & | yCloud, |
| const std::vector< std::vector< int > > & | nList, | ||
| bool | isSlice = false ) |
q6 can distinguish between water and ice. Use this for the largest ice cluster
| bool chill::isInterfacial | ( | molSys::PointCloud< molSys::Point< double >, double > & | yCloud, |
| const std::vector< std::vector< int > > & | nList, | ||
| int | iatom, | ||
| int | num_staggrd, | ||
| int | num_eclipsd, | ||
| bool | chillPlus = false ) |
Interfacial ice. Moore CHILL uses a neighbour with exactly two staggered bonds; Nguyen CHILL+ uses a neighbour with more than one. Pass chillPlus=true for the latter.
| std::complex< double > sph::lookupTableQ3 | ( | int | m, |
| std::array< double, 2 > | angles ) |
Lookup table for Q3 (m=0 to m=6).
| std::vector< std::complex< double > > sph::lookupTableQ3Vec | ( | std::array< double, 2 > | angles | ) |
Lookup table for Q3.
| std::complex< double > sph::lookupTableQ4 | ( | int | m, |
| std::array< double, 2 > | angles ) |
Lookup table for Q4 (m=0 to m=8).
| std::vector< std::complex< double > > sph::lookupTableQ4Vec | ( | std::array< double, 2 > | angles | ) |
Lookup table for Q4.
| std::complex< double > sph::lookupTableQ6 | ( | int | m, |
| std::array< double, 2 > | angles ) |
Lookup table for Q6 (m=0 to m=12).
| std::vector< std::complex< double > > sph::lookupTableQ6Vec | ( | std::array< double, 2 > | angles | ) |
Lookup table for Q6.
| std::complex< double > sph::lookupTableQ8 | ( | int | m, |
| std::array< double, 2 > | angles ) |
Lookup table for Q8 (m=0 to m=16).
| std::vector< std::complex< double > > sph::lookupTableQ8Vec | ( | std::array< double, 2 > | angles | ) |
Lookup table for Q8.
|
nodiscard |
Finds the number of staggered bonds for a given atom of index jatom.
|
nodiscard |
Prints out the iceType for a particular frame onto the terminal.
| std::array< double, 2 > sph::radialCoord | ( | std::array< double, 3 > | cartCoord | ) |
| void chill::reclassifyWater | ( | molSys::PointCloud< molSys::Point< double >, double > & | yCloud, |
| std::vector< double > & | q6 ) |
'Test' condition for classifying hexagonal ice using averaged q6 and q3 Checks water According to https://!pubs.rsc.org/en/content/articlehtml/2011/cp/c1cp22167a Gets c_ij and then classifies bond types according to the CHILL+ algorithm
| void chill::registerBondClassifier | ( | const std::string & | name, |
| const BondClassifier & | rule ) |
Register (or replace) a named rule set at runtime, making the material's thresholds available to every front end by name
| std::vector< std::complex< double > > sph::spheriHarmo | ( | int | orderL, |
| std::array< double, 2 > | radialCoord ) |
|
nodiscard |
Local and neighbour-averaged Steinhardt parameters of degree 3, 4 or 6. Local ql is Steinhardt, Nelson and Ronchetti; qlBar is the Lechner-Dellago average of q_lm over the particle and its neighbours. The compute path flattens the neighbour list to CSR so the same kernel can run on the host (OpenMP), across MPI ranks (atom split plus Allgatherv of q_lm), or under OpenMP target offload when the build provides a device.
| int chill::BondClassifier::coordinationNumber |
| double chill::BondClassifier::eclipsedMax |
| double chill::BondClassifier::eclipsedMin |
| std::vector<double> chill::SteinhardtQl::qlBar |