15#include <Eigen/Eigenvalues>
34 Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, eOnStorageOrder>;
35using Matrix3d = Eigen::Matrix<double, 3, 3, eOnStorageOrder>;
36using Matrix4d = Eigen::Matrix<double, 4, 4, eOnStorageOrder>;
37using AtomMatrix = Eigen::Matrix<double, Eigen::Dynamic, 3, eOnStorageOrder>;
44using AtomMatrixF = Eigen::Matrix<double, 3, Eigen::Dynamic, Eigen::ColMajor>;
51 return Eigen::Map<const VectorXd>(a.data(), a.size())
52 .dot(Eigen::Map<const VectorXd>(b.data(), b.size()));
62 assert(flat_colmajor.size() >=
static_cast<size_t>(3 * nat));
63 return Eigen::Map<const AtomMatrix>(flat_colmajor.data(), nat, 3);
72 for (
int vec = 0; vec < 3; ++vec) {
73 for (
int comp = 0; comp < 3; ++comp) {
74 box[vec * 3 + comp] = cell(vec, comp);
Eigen::Matrix< double, 3, 3, eOnStorageOrder > RotationMatrix
double matDot(const AtomMatrix &a, const AtomMatrix &b)
SIMD-optimized dot product for contiguous Eigen matrices.
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic, eOnStorageOrder > MatrixXd
Eigen::Matrix< double, 3, 3, eOnStorageOrder > Matrix3d
Eigen::Matrix< double, 4, 4, eOnStorageOrder > Matrix4d
Eigen::Matrix< double, 3, Eigen::Dynamic, Eigen::ColMajor > AtomMatrixF
constexpr int eOnStorageOrder
Eigen::Matrix< double, Eigen::Dynamic, 3, eOnStorageOrder > AtomMatrix
RAII resource manager for the ARTn C library with global synchronization.
AtomMatrix from_fortran_layout_vector(const std::vector< double > &flat_colmajor, int nat)
Reconstruct AtomMatrix from a flat column-major vector (e.g.
void lattice_rows_to_fortran_box(const Matrix3d &cell, double *box)
Pack an eOn cell for pARTn artn_step.