Structures

class Structure

Neighbor attributes

Eigen::VectorXi neighbor_count

Neighbor count for each atom.

Eigen::VectorXi cumulative_neighbor_count

Cumulative neighbor count. The vector has length N+1, where N is the number of atoms in the structure, with first entry 0.

Eigen::VectorXi neighbor_species

Species of each neighbor. The vector has length equal to the total number of neighbors in the structure.

Eigen::VectorXi structure_indices

ID of each neighbor, where the ID is determined by the initial order of atoms used when the structure was constructed.

The periodic box

Eigen::MatrixXd cell
Eigen::MatrixXd cell_transpose
Eigen::MatrixXd cell_transpose_inverse
Eigen::MatrixXd cell_dot
Eigen::MatrixXd cell_dot_inverse

Atom coordinates

Eigen::MatrixXd positions
Eigen::MatrixXd wrapped_positions
Eigen::MatrixXd relative_positions

Descriptors

std::vector<Descriptor*> descriptor_calculators
std::vector<DescriptorValues> descriptors

Structure labels

Eigen::VectorXd energy
Eigen::VectorXd forces
Eigen::VectorXd stresses

Mean and variance predictions

Eigen::VectorXd mean_efs
Eigen::VectorXd variance_efs
std::vector<Eigen::VectorXd> mean_contributions
std::vector<Eigen::VectorXd> local_uncertainties

Public Functions

Structure()

Default structure constructor.

Structure(const Eigen::MatrixXd &cell, const std::vector<int> &species, const Eigen::MatrixXd &positions)

Basic structure constructor. Holds the cell, species, and positions of a periodic structure of atoms.

Parameters
  • cell – 3x3 array whose rows are the Bravais lattice vectors of the periodic cell.

  • species – List of integers denoting the chemical species of each atom. Must lie between 0 and s-1 (inclusive), where s is the number of species in the system.

  • positions – Nx3 array of atomic coordinates.

Structure(const Eigen::MatrixXd &cell, const std::vector<int> &species, const Eigen::MatrixXd &positions, double cutoff, std::vector<Descriptor*> descriptor_calculators)
Eigen::MatrixXd wrap_positions()
double get_single_sweep_cutoff()
void compute_neighbors()
void compute_descriptors()

Public Members

double cutoff
double single_sweep_cutoff
double volume
int sweep
int n_neighbors
std::vector<int> species

Species of each atom.

int noa

Number of atoms in the structure.

Public Static Functions

static NLOHMANN_DEFINE_TYPE_INTRUSIVE(Structure, neighbor_count, cutoff, cumulative_neighbor_count, structure_indices, neighbor_species, cell, cell_transpose, cell_transpose_inverse, cell_dot, cell_dot_inverse, positions, wrapped_positions, relative_positions, cutoff, single_sweep_cutoff, volume, sweep, n_neighbors, species, noa, energy, forces, stresses, mean_efs, variance_efs, mean_contributions, local_uncertainties, descriptor_calculators, descriptors) void to_json(std Structure from_json (std::string file_name)