Loading...
Searching...
No Matches
site.hpp File Reference

Per-atom site chemistry, separate from CHILL ice labels. More...

#include <mol_sys.hpp>
#include <array>
#include <string_view>
#include <unordered_map>
#include <vector>

Go to the source code of this file.

Classes

struct  site::Table
struct  site::IonEnvironment
struct  site::GuestOccupancy
 Guests read against enumerated cages. More...
struct  site::IceClusterIons
 Connected components of ice atoms on the water graph, and the ion count per component: each ion is assigned to the cluster of the nearest ice atom within cutoff. More...

Namespaces

namespace  site

Enumerations

enum class  site::Kind {
  site::unspecified , site::cationHead , site::anion , site::tail ,
  site::donorH , site::acceptor , site::polar , site::apolar ,
  site::waterO , site::waterH , site::solvent
}
enum class  site::Family {
  site::waterIce , site::ionicLiquid , site::moltenSalt , site::des ,
  site::electrolyte , site::confinedIL , site::confinedWater , site::networkFormer
}
enum class  site::IonState { site::liquid = 0 , site::front = 1 , site::ice = 2 }
 Ions read against a per-atom ice assignment. More...

Functions

std::vector< int > site::indicesOf (const molSys::PointCloud< molSys::Point< double >, double > &yCloud, const Table &table, Kind kind)
int site::lammpsTypeOfKind (const Table &table, Kind kind)
molSys::PointCloud< molSys::Point< double >, double > site::ionCloud (const molSys::PointCloud< molSys::Point< double >, double > &src, const Table &table)
Table site::parseSiteSpec (std::string_view spec)
IonEnvironment site::ionEnvironment (const molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< bool > &iceFlag, const std::vector< int > &ionIndices, int waterType, double cutoff)
 iceFlag is indexed like yCloud.pts; waterType selects the water oxygens (0 accepts every atom that is not an ion); cutoff is the first shell radius in the cloud's length unit.
std::vector< int > site::shellRingCensus (const std::vector< std::vector< int > > &rings, const std::vector< int > &shell, int maxRingSize)
 Rings of the water network that pass through a first shell: the census by size of every ring with at least one vertex in shell.
GuestOccupancy site::guestOccupancy (const molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< std::vector< int > > &cages, const std::vector< int > &guestIndices, double radius)
 cages are vertex index lists into yCloud.pts; radius in the cloud's length unit (half the cage diameter, about 4 A for a 5^12 cage).
std::array< double, 3 > site::periodicCentroid (const molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< int > &atoms)
 Periodic centroid of a set of atoms: every atom is unwrapped to its minimum image about the first, and the mean is taken there.
GuestOccupancy site::guestOccupancyInside (const molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< std::vector< int > > &rings, const std::vector< std::vector< int > > &cageFaces, const std::vector< int > &guestIndices)
 Occupancy by ray-parity: a guest sits in a cage when a ray from the guest, in the frame that unwraps the cage about its periodic centroid, crosses an odd number of fan-triangulated faces.
IceClusterIons site::iceClusterIonCensus (const molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< bool > &ice, const std::vector< std::vector< int > > &nListByIndex, const std::vector< int > &ionIndices, double cutoff)

Detailed Description

Per-atom site chemistry, separate from CHILL ice labels.

LAMMPS type IDs are not chemistry. A Table maps type (and optional atom-ID override) to Kind. Family is an input, not an inference. Table::of does not write polar or apolar back onto the table; indicesOf applies those two derived unions.

Definition in file site.hpp.