DNDSR 0.1.0.dev1+gcd065ad
Distributed Numeric Data Structure for CFV
Loading...
Searching...
No Matches
HardEigen.hpp File Reference

Robust linear-algebra primitives for small / moderately-sized Eigen matrices that are more numerically careful than Eigen's default paths. More...

#include "Defines.hpp"
Include dependency graph for HardEigen.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  DNDS
 the host side operators are provided as implemented
 
namespace  DNDS::HardEigen
 

Functions

real DNDS::HardEigen::EigenLeastSquareInverse (const Eigen::MatrixXd &A, Eigen::MatrixXd &AI, real svdTol=0)
 Moore-Penrose pseudoinverse via SVD, dropping singular values below svdTol (relative to the largest). Returns the largest / smallest ratio (condition number).
 
real DNDS::HardEigen::EigenLeastSquareInverse_Filtered (const Eigen::MatrixXd &A, Eigen::MatrixXd &AI, real svdTol=0, int mode=0)
 Pseudoinverse with a choice of singular-value filter.
 
Eigen::Index DNDS::HardEigen::EigenLeastSquareSolve (const Eigen::MatrixXd &A, const Eigen::MatrixXd &B, Eigen::MatrixXd &AIB)
 Least-squares solve A * AIB ~= B via a rank-revealing QR-style decomposition; returns the computed rank of A.
 
Eigen::Matrix3d DNDS::HardEigen::Eigen3x3RealSymEigenDecomposition (const Eigen::Matrix3d &A)
 Analytic eigen-decomposition of a 3x3 real symmetric matrix. Returns the eigenvector matrix (columns = eigenvectors, scaled so that diagonal == eigenvalues).
 
Eigen::Matrix2d DNDS::HardEigen::Eigen2x2RealSymEigenDecomposition (const Eigen::Matrix2d &A)
 Analytic 2x2 analogue of Eigen3x3RealSymEigenDecomposition.
 
real DNDS::HardEigen::Eigen3x3RealSymEigenDecompositionGetCond (const Eigen::Matrix3d &A)
 Condition number of a 3x3 SPD matrix from its eigenvalues.
 
real DNDS::HardEigen::Eigen3x3RealSymEigenDecompositionGetCond01 (const Eigen::Matrix3d &A)
 Like Eigen3x3RealSymEigenDecompositionGetCond but returns lambda0 / lambda1 only (ignores the smallest eigenvalue).
 
real DNDS::HardEigen::Eigen2x2RealSymEigenDecompositionGetCond (const Eigen::Matrix2d &A)
 2x2 analogue of Eigen3x3RealSymEigenDecompositionGetCond.
 
Eigen::Matrix3d DNDS::HardEigen::Eigen3x3RealSymEigenDecompositionNormalized (const Eigen::Matrix3d &A)
 Eigen-decomposition with eigenvector columns normalised to unit length.
 
Eigen::Matrix2d DNDS::HardEigen::Eigen2x2RealSymEigenDecompositionNormalized (const Eigen::Matrix2d &A)
 2x2 analogue of Eigen3x3RealSymEigenDecompositionNormalized.
 

Detailed Description

Robust linear-algebra primitives for small / moderately-sized Eigen matrices that are more numerically careful than Eigen's default paths.

These are used on the "hot" side of reconstruction / limiter code where matrices may be nearly rank-deficient and a plain A.inverse() or A.jacobiSvd().solve(b) would introduce large errors.

Definition in file HardEigen.hpp.