Loading...
Searching...
No Matches
Eigen.h File Reference
#include <Eigen/Dense>
#include <Eigen/Eigenvalues>
#include <cassert>
#include <vector>

Go to the source code of this file.

Namespaces

namespace  eonc
 RAII resource manager for the ARTn C library with global synchronization.

Typedefs

using MatrixXd
using Matrix3d = Eigen::Matrix<double, 3, 3, eOnStorageOrder>
using Matrix4d = Eigen::Matrix<double, 4, 4, eOnStorageOrder>
using AtomMatrix = Eigen::Matrix<double, Eigen::Dynamic, 3, eOnStorageOrder>
using RotationMatrix = Eigen::Matrix<double, 3, 3, eOnStorageOrder>
using AtomMatrixF = Eigen::Matrix<double, 3, Eigen::Dynamic, Eigen::ColMajor>

Functions

double matDot (const AtomMatrix &a, const AtomMatrix &b)
 SIMD-optimized dot product for contiguous Eigen matrices.
AtomMatrix eonc::from_fortran_layout_vector (const std::vector< double > &flat_colmajor, int nat)
 Reconstruct AtomMatrix from a flat column-major vector (e.g.

Variables

constexpr int eOnStorageOrder = Eigen::RowMajor

Typedef Documentation

◆ AtomMatrix

using AtomMatrix = Eigen::Matrix<double, Eigen::Dynamic, 3, eOnStorageOrder>

Definition at line 37 of file Eigen.h.

◆ AtomMatrixF

using AtomMatrixF = Eigen::Matrix<double, 3, Eigen::Dynamic, Eigen::ColMajor>

Definition at line 44 of file Eigen.h.

◆ Matrix3d

using Matrix3d = Eigen::Matrix<double, 3, 3, eOnStorageOrder>

Definition at line 35 of file Eigen.h.

◆ Matrix4d

using Matrix4d = Eigen::Matrix<double, 4, 4, eOnStorageOrder>

Definition at line 36 of file Eigen.h.

◆ MatrixXd

using MatrixXd
Initial value:
Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, eOnStorageOrder>

Definition at line 33 of file Eigen.h.

◆ RotationMatrix

using RotationMatrix = Eigen::Matrix<double, 3, 3, eOnStorageOrder>

Definition at line 38 of file Eigen.h.

Function Documentation

◆ matDot()

double matDot ( const AtomMatrix & a,
const AtomMatrix & b )
inline

SIMD-optimized dot product for contiguous Eigen matrices.

Maps both operands as flat VectorXd and uses Eigen's optimized .dot() which leverages SSE/AVX intrinsics, avoiding the element-wise temporary that (a.array() * b.array()).sum() creates.

Definition at line 50 of file Eigen.h.

50 {
51 return Eigen::Map<const VectorXd>(a.data(), a.size())
52 .dot(Eigen::Map<const VectorXd>(b.data(), b.size()));
53}

Variable Documentation

◆ eOnStorageOrder

int eOnStorageOrder = Eigen::RowMajor
constexpr

Definition at line 31 of file Eigen.h.