10 Eigen::Matrix3d rotation;
11 Eigen::Vector3d translation;
37 Eigen::Matrix3d reciprocalUnitCell;
38 double volumeUnitCell;
44 Eigen::MatrixXd atomicPositions;
45 Eigen::VectorXi atomicSpecies;
46 std::vector<std::string> atomicNames;
47 Eigen::VectorXd atomicMasses;
48 Eigen::VectorXd atomicIsotopeCouplings;
49 Eigen::Tensor<double, 3> bornCharges;
50 Eigen::Matrix3d dielectricMatrix;
53 std::vector<std::string> speciesNames;
54 Eigen::VectorXd speciesMasses;
55 Eigen::VectorXd speciesIsotopeCouplings;
58 std::vector<SymmetryOperation> symmetryOperations;
76 Crystal(
Context &context, Eigen::Matrix3d &directUnitCell_, Eigen::MatrixXd &atomicPositions_,
77 Eigen::VectorXi &atomicSpecies_,
78 std::vector<std::string> &speciesNames_,
79 Eigen::VectorXd &speciesMasses_, Eigen::Tensor<double, 3>& bornCharges_,
80 Eigen::Matrix3d &dielectricMatrix);
185 const Eigen::VectorXd &getAtomicIsotopeCouplings();
211 std::tuple<Eigen::MatrixXd, Eigen::VectorXd>
213 const int &superCellFactor = 2);
238 std::tuple<Eigen::MatrixXd, Eigen::Tensor<double, 3>>
240 const Eigen::MatrixXd &shift,
241 const int &superCellFactor = 2);
Class containing the user input variables.
Definition: context.h:15
Object to store the information on the crystal unit cell, such as atomic positions,...
Definition: crystal.h:18
const Eigen::VectorXd & getSpeciesMasses()
get the vector of masses of atomic species, in rydberg the vector has size (numSpecies)
Definition: crystal.cpp:343
Eigen::Matrix3d directUnitCell
These are the internal quantities used to store.
Definition: crystal.h:36
const Eigen::Tensor< double, 3 > getBornEffectiveCharges()
Return the born effective charges for the crystal object.
Definition: crystal.cpp:317
const Eigen::Matrix3d & getDirectUnitCell()
Returns the crystal unit cell in real space, in Bohr.
Definition: crystal.cpp:309
std::tuple< Eigen::MatrixXd, Eigen::Tensor< double, 3 > > buildWignerSeitzVectorsWithShift(const Eigen::Vector3i &grid, const Eigen::MatrixXd &shift, const int &superCellFactor=2)
Similar to buildWignerSeitzVectors, we build the list of Bravais lattice vectors (real space) that li...
Definition: crystal.cpp:460
int getDimensionality() const
return the dimensionality of the crystal, i.e.
Definition: crystal.cpp:348
void print() const
Print the crystal information.
Definition: crystal.cpp:274
int getNumSpecies() const
Return the number of atomic species present in the crystal.
Definition: crystal.cpp:349
int getNumSymmetries() const
get the number of symmetries operations that are used by phoebe.
Definition: crystal.cpp:347
const Eigen::Matrix3d & getReciprocalUnitCell()
Returns the reciprocal lattice vectors, in units of Bohr^-1/tpi.
Definition: crystal.cpp:310
Crystal()
Empty constructor.
Definition: crystal.cpp:219
double getVolumeUnitCell(int dimensionality_=3) const
get the volume of the crystal unit cell in Bohr^3
Definition: crystal.cpp:318
const Eigen::Matrix3d getDielectricMatrix()
Return the dielectric matrix for the crystal object.
Definition: crystal.h:123
const std::vector< std::string > & getAtomicNames()
get the vector of atomic names vector has size (numAtoms)
Definition: crystal.cpp:333
const Eigen::MatrixXd & getAtomicPositions()
get the atomic positions, in cartesian coordinates we return an array of size (numAtoms,...
Definition: crystal.cpp:331
const std::vector< std::string > & getSpeciesNames()
get the vector of names of atomic species the vector has size (numSpecies)
Definition: crystal.cpp:340
void generateSymmetryInformation(Context &context)
A function to set up the symmetry rotation matrices for a crystal, which are then stored in this obje...
Definition: crystal.cpp:128
const Eigen::VectorXi & getAtomicSpecies()
get the species of each atom in the unit cell.
Definition: crystal.cpp:332
const std::vector< SymmetryOperation > & getSymmetryOperations()
get the symmetry operations of the crystal, in cartesian coordinates.
Definition: crystal.cpp:344
Eigen::Vector3d crystalToCartesian(const Eigen::Vector3d &point)
Change of basis method to convert crystal wavevector to cartesian coordinates.
Definition: crystal.cpp:640
Eigen::Vector3d cartesianToCrystal(const Eigen::Vector3d &point)
Change of basis method to convert crystal wavevector to cartesian coordinates.
Definition: crystal.cpp:644
Crystal & operator=(const Crystal &obj)
Copy assignment operator.
Definition: crystal.cpp:250
std::tuple< Eigen::MatrixXd, Eigen::VectorXd > buildWignerSeitzVectors(const Eigen::Vector3i &grid, const int &superCellFactor=2)
Build the list of Bravais lattice vectors (real space) that live within the Wigner Seitz zone of a su...
Definition: crystal.cpp:352
const int & getNumAtoms()
get the number of atoms in the unit cell
Definition: crystal.cpp:316
void setDirectUnitCell(const Eigen::Matrix3d &directUnitCell_)
Internal utility to set the crystal unit cell and the reciprocal cell.
Definition: crystal.cpp:304
static Eigen::Matrix3d calcReciprocalCell(const Eigen::Matrix3d &directUnitCell)
utility function to invert the direct unit cell
Definition: crystal.cpp:299
const Eigen::VectorXd & getAtomicMasses()
get the vector of atomic masses the vector has size (numAtoms)
Definition: crystal.cpp:336