Loading...
Searching...
No Matches
site Namespace Reference

Classes

struct  DensityZ
struct  GuestOccupancy
 Guests read against enumerated cages. More...
struct  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...
struct  IonEnvironment
struct  Table

Enumerations

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

Functions

DensityZ densityZ (const molSys::PointCloud< molSys::Point< double >, double > &yCloud, int typeI, int nbin, int axis)
 Histogram Point::{x,y,z} for typeI (0 = every atom). axis is 0, 1, or 2.
DensityZ densityZ (const molSys::PointCloud< molSys::Point< double >, double > &yCloud, const Table &table, Kind kind, int nbin, int axis)
 Same histogram, restricted to atoms whose Table kind matches.
bool iceScoreAllowed (Family f)
const char * refuseIceScore (Family f)
const char * familyName (Family f)
Family parseFamily (std::string_view name)
std::vector< int > indicesOf (const molSys::PointCloud< molSys::Point< double >, double > &yCloud, const Table &table, Kind kind)
int lammpsTypeOfKind (const Table &table, Kind kind)
molSys::PointCloud< molSys::Point< double >, double > ionCloud (const molSys::PointCloud< molSys::Point< double >, double > &src, const Table &table)
Table parseSiteSpec (std::string_view spec)
IonEnvironment 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 > 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 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 > 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 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 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)

Enumeration Type Documentation

◆ Family

enum class site::Family
strong
Enumerator
waterIce 
ionicLiquid 
moltenSalt 
des 
electrolyte 
confinedIL 
confinedWater 
networkFormer 

Definition at line 41 of file site.hpp.

41 {
42 waterIce, // default; CHILL/TUM allowed
43 ionicLiquid, // CHILL/TUM refused
44 moltenSalt, // CHILL/TUM refused
45 des, // CHILL/TUM refused
46 electrolyte, // CHILL/TUM only if the caller also names a waterIce subset
47 confinedIL, // CHILL/TUM refused
48 confinedWater, // 2D RDF / monolayer rings; bulk CHILL refused
49 networkFormer // silica / BeF2; Franzblau yes, CHILL no
50};
@ electrolyte
Definition site.hpp:46
@ confinedWater
Definition site.hpp:48
@ ionicLiquid
Definition site.hpp:43
@ networkFormer
Definition site.hpp:49

◆ IonState

enum class site::IonState
strong

Ions read against a per-atom ice assignment.

Ions are not part of the hydrogen-bond network; the assignment is computed on the water and each ion is classed by its first water shell: every shell molecule labelled is ice, none is liquid, otherwise front. An ion with an empty shell is liquid.

Enumerator
liquid 
front 
ice 

Definition at line 86 of file site.hpp.

86{ liquid = 0, front = 1, ice = 2 };

◆ Kind

enum class site::Kind
strong
Enumerator
unspecified 
cationHead 
anion 
tail 
donorH 
acceptor 
polar 
apolar 
waterO 
waterH 
solvent 

Definition at line 27 of file site.hpp.

27 {
30 anion,
31 tail,
32 donorH,
34 polar,
35 apolar,
36 waterO,
37 waterH,
39};
@ cationHead
Definition site.hpp:29
@ acceptor
Definition site.hpp:33
@ solvent
Definition site.hpp:38
@ unspecified
Definition site.hpp:28

Function Documentation

◆ densityZ() [1/2]

DensityZ site::densityZ ( const molSys::PointCloud< molSys::Point< double >, double > & yCloud,
const Table & table,
Kind kind,
int nbin,
int axis )

Same histogram, restricted to atoms whose Table kind matches.

◆ densityZ() [2/2]

DensityZ site::densityZ ( const molSys::PointCloud< molSys::Point< double >, double > & yCloud,
int typeI,
int nbin,
int axis )

Histogram Point::{x,y,z} for typeI (0 = every atom). axis is 0, 1, or 2.

◆ familyName()

const char * site::familyName ( Family f)

◆ guestOccupancy()

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).

◆ guestOccupancyInside()

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.

Among cages that contain the guest the nearest centroid wins. rings is the ring list the cage faces index; cageFaces[c] is the face indices of cage c.

◆ iceClusterIonCensus()

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 )

◆ iceScoreAllowed()

bool site::iceScoreAllowed ( Family f)

◆ indicesOf()

std::vector< int > site::indicesOf ( const molSys::PointCloud< molSys::Point< double >, double > & yCloud,
const Table & table,
Kind kind )

◆ ionCloud()

molSys::PointCloud< molSys::Point< double >, double > site::ionCloud ( const molSys::PointCloud< molSys::Point< double >, double > & src,
const Table & table )

◆ ionEnvironment()

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.

◆ lammpsTypeOfKind()

int site::lammpsTypeOfKind ( const Table & table,
Kind kind )

◆ parseFamily()

Family site::parseFamily ( std::string_view name)

◆ parseSiteSpec()

Table site::parseSiteSpec ( std::string_view spec)

◆ periodicCentroid()

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.

◆ refuseIceScore()

const char * site::refuseIceScore ( Family f)

◆ shellRingCensus()

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.

An ion is not a vertex of the network, so the rings it would have closed are gone and the rings its shell still carries measure how far the network survives around it (the hydration-shell ring census of a brine or an ionic solution). census[s] counts rings of size s up to maxRingSize.