namespace topoparam¶
Overview¶
namespace topoparam {
// structs
struct LayerStack;
// global functions
double normHeightPercent(const molSys::PointCloud<molSys::Point<double>, double>& yCloud, int nPrisms, double avgPrismHeight);
std::vector<double> calcCoverageArea(const molSys::PointCloud<molSys::Point<double>, double>& yCloud, const std::vector<std::vector<int>>& rings, double sheetArea);
std::vector<double> projAreaSingleRing(const molSys::PointCloud<molSys::Point<double>, double>& yCloud, const std::vector<int>& ring);
std::vector<double> rodgerF4(const molSys::PointCloud<molSys::Point<double>, double>& yCloud, const std::vector<std::vector<int>>& nList, int oxygenType, int hydrogenType);
double meanFinite(const std::vector<double>& values);
double jumpRotorTau90(const molSys::PointCloud<molSys::Point<double>, double>& frame0, const molSys::PointCloud<molSys::Point<double>, double>& frame1, double dt, int oxygenType, int hydrogenType);
LayerStack layerCubicity(const molSys::PointCloud<molSys::Point<double>, double>& yCloud, int axis = 2, double layerWidth = 3.7);
LayerStack tumLayerStack(const molSys::PointCloud<molSys::Point<double>, double>& yCloud, const std::vector<std::vector<int>>& rings, const std::vector<bool>& basal, const std::vector<bool>& equatorial, int axis = 2, double layerWidth = 3.7);
} // namespace topoparam
Detailed Documentation¶
Global Functions¶
double normHeightPercent(const molSys::PointCloud<molSys::Point<double>, double>& yCloud, int nPrisms, double avgPrismHeight)
Calculates the height%, an average measure of filled volume. The average height of a prism can be taken to be 2.75-2.85 Angstrom. (Koga et. al., 2001)
std::vector<double> calcCoverageArea(const molSys::PointCloud<molSys::Point<double>, double>& yCloud, const std::vector<std::vector<int>>& rings, double sheetArea)
Calculates the coverage area%, an area-based measure of relative proportion of monolayer ices.
std::vector<double> projAreaSingleRing(const molSys::PointCloud<molSys::Point<double>, double>& yCloud, const std::vector<int>& ring)
Calculates the projected area on the XY, YZ and XZ planes.
std::vector<double> rodgerF4(const molSys::PointCloud<molSys::Point<double>, double>& yCloud, const std::vector<std::vector<int>>& nList, int oxygenType, int hydrogenType)
Per-atom Rodger F4 = mean of cos(3 phi) over H-O…O-H dihedrals of this oxygen with its oxygen neighbours. Hydrogens share molID with their oxygen. An oxygen with no hydrogens (mW) is quiet_NaN. nList is by atom ID with the leading self entry, as neighListO.
double meanFinite(const std::vector<double>& values)
Mean of the finite per-atom F4 values; quiet_NaN when none are finite.
double jumpRotorTau90(const molSys::PointCloud<molSys::Point<double>, double>& frame0, const molSys::PointCloud<molSys::Point<double>, double>& frame1, double dt, int oxygenType, int hydrogenType)
Jump-rotor tau_90 from two frames. Each water is the H-H vector of the two hydrogens that share the oxygen molID. Returns dt when any molecule rotates by at least 90 degrees, quiet_NaN otherwise.
LayerStack tumLayerStack(const molSys::PointCloud<molSys::Point<double>, double>& yCloud, const std::vector<std::vector<int>>& rings, const std::vector<bool>& basal, const std::vector<bool>& equatorial, int axis = 2, double layerWidth = 3.7)
Literature I_sd reference: CHILL+ molecules binned by coordinate. TUM/rings stacking: only HC-basal and DDC-equatorial six-rings vote. Prismatic/peripheral rings and non-plane cages (clathrate 5^12) do not write a letter. Ions stay off the ring graph the caller passes. phiC is N_equatorial / (N_basal + N_equatorial) over plane rings.