|
| | PhononH0 (Crystal &crystal, Eigen::Tensor< double, 5 > &forceConstants_, Eigen::Vector3i &qCoarseGrid, const Eigen::MatrixXd &bravaisVectors_, const Eigen::VectorXd &weights_, const int fcRangeType) |
| | Constructor, which stores all input data. More...
|
| |
|
| PhononH0 (const PhononH0 &that) |
| | Copy constructor.
|
| |
|
PhononH0 & | operator= (const PhononH0 &that) |
| | Copy assignment operator.
|
| |
|
| ~PhononH0 () |
| | Destructor.
|
| |
|
int | getNumBands () override |
| | Returns the number of phonon bands for the crystal in consideration.
|
| |
|
Particle | getParticle () override |
| | Returns the underlying phonon-boson particle.
|
| |
| std::tuple< Eigen::VectorXd, Eigen::MatrixXcd > | diagonalize (Point &point) override |
| | get the phonon energies (in Ry) at a single q-point. More...
|
| |
| std::tuple< Eigen::VectorXd, Eigen::MatrixXcd > | diagonalizeFromCoordinates (Eigen::Vector3d &q, const bool &withMassScaling) |
| | Equivalent to diagonalize() computes phonon eigenValues/Vectors given the wavevector, but the wavevector is passed by coordinates. More...
|
| |
| std::tuple< Eigen::VectorXd, Eigen::MatrixXcd > | diagonalizeFromCoordinates (Eigen::Vector3d &q) override |
| | Diagonalize the Harmonic Hamiltonian at an arbitrary wavevector. More...
|
| |
| Eigen::Tensor< std::complex< double >, 3 > | diagonalizeVelocity (Point &point) override |
| | get the phonon velocities (in atomic units) at a single q-point. More...
|
| |
|
Eigen::Tensor< std::complex< double >, 3 > | diagonalizeVelocityFromCoordinates (Eigen::Vector3d &coordinates) override |
| |
| FullBandStructure | populate (Points &points, const bool &withVelocities, const bool &withEigenvectors, const bool isDistributed=false) override |
| | This method constructs a phonon band structure. More...
|
| |
|
FullBandStructure | cpuPopulate (Points &points, const bool &withVelocities, const bool &withEigenvectors, bool isDistributed=false) |
| |
|
FullBandStructure | kokkosPopulate (Points &points, const bool &withVelocities, const bool &withEigenvectors, const bool isDistributed=false) |
| | Make a bandstructure for all the k-points.
|
| |
|
StridedComplexView3D | kokkosBatchedBuildBlochHamiltonian (const DoubleView2D &cartesianCoordinates) override |
| | Build the Hamiltonian matrix for a batch of q-points.
|
| |
|
std::tuple< DoubleView2D, StridedComplexView3D > | kokkosBatchedDiagonalizeFromCoordinates (const DoubleView2D &cartesianCoordinates, const bool withMassScaling=true) override |
| | Create and diagonalize Hamiltonians for a batch of k-points.
|
| |
| std::tuple< DoubleView2D, StridedComplexView3D, ComplexView4D > | kokkosBatchedDiagonalizeWithVelocities (const DoubleView2D &cartesianCoordinates) override |
| | Create and diagonalize Hamiltonians for a batch of k-points, with velocities Returns the energies (nk, nb), eigenvectors (nk, nb, nb) and velocities (nk, nb, nb, 3) at each k-point. More...
|
| |
|
void | kokkosBatchedScaleEigenvectors (StridedComplexView3D &eigenvectors) |
| |
| Eigen::Vector3i | getCoarseGrid () |
| | Returns the size of the q-point coarse grid on which the force constants have been computed. More...
|
| |
| int | getIndexEigenvector (const int &iAt, const int &iPol) const |
| | Utility to convert the indices of atom basis and polarization into the index that has to be used with the eigenvector in matrix form. More...
|
| |
| Eigen::Matrix3d | getDielectricMatrix () |
| | Get the static dielectric constant matrix. More...
|
| |
| Eigen::Tensor< double, 3 > | getBornCharges () |
| | Get the Born effective charges for the ions in the unit cell. More...
|
| |
| int | estimateBatchSize (const bool &withVelocity) override |
| | Estimate how many k-points we can compute on the GPU in one batch. More...
|
| |
| void | printDynToHDF5 (Eigen::Vector3d &qCrys) |
| | Helper function to print the dynamical matrix file to HDF5, for developer testing purposes. More...
|
| |
| void | kokkosBatchedTreatDegenerateVelocities (const DoubleView2D &cartesianCoordinates, const DoubleView2D &resultEnergies, ComplexView4D &resultVelocities, const double &threshold) |
| |
|
|
Eigen::Tensor< double, 5 > | wsInit (const Eigen::MatrixXd &unitCell, const Eigen::Matrix3d &directUnitCell, const int &nr1Big, const int &nr2Big, const int &nr3Big) |
| | In wsInit, starting from the primitive crystal unit cell, we build the list of bravais lattice vectors used for the phonon Fourier transform.
|
| |
| void | addLongRangeTerm (Eigen::Tensor< std::complex< double >, 4 > &dyn, const Eigen::VectorXd &q) |
| | Adds the long range correction to the dynamical matrix due to dipole-ion interaction. More...
|
| |
| void | shortRangeTerm (Eigen::Tensor< std::complex< double >, 4 > &dyn, const Eigen::VectorXd &q) |
| | This part computes the short-range part of the dynamical matrix, which is the Fourier transform of the force constants. More...
|
| |
| void | addMediumRangeTerm (Eigen::Tensor< std::complex< double >, 4 > &dyn, const Eigen::VectorXd &q) |
| | This part computes the "medium"-range part of the dynamical matrix, which is needed for the polar correction to the dynamical matrix when finite differences are used. More...
|
| |
| std::tuple< Eigen::VectorXd, Eigen::MatrixXcd > | dynDiagonalize (Eigen::Tensor< std::complex< double >, 4 > &dyn) |
| | dynDiagonalize diagonalizes the dynamical matrix and returns eigenvalues and eigenvectors. More...
|
| |
| void | correctMediumRangeIFCs (Eigen::Tensor< double, 4 > &fq, const Eigen::VectorXd &q) |
| | Function analogous to nonanal_ifc in QE's matdyn – returns f_of_q, which is a correction to be applied to the "medium range" fcs before performing the fourier transform. More...
|
| |
| double | getDeviceMemoryUsage () |
| | Checks the size of Device-allocated views. More...
|
| |
First, it contains the force constants, i.e. the second derivative of the total energy w.r.t. ionic displacements. Additionally, it has all the infrastructure to Fourier transform this matrix, and diagonalize it to get the harmonic phonon properties.