21#ifndef VOTCA_XTP_SCREENING_KERNELS_H
22#define VOTCA_XTP_SCREENING_KERNELS_H
47 std::function<void(
const Eigen::Ref<const Eigen::MatrixXd>&)>;
80 void compute(
const Eigen::MatrixXd& A);
82 const Eigen::MatrixXd&
matrixL()
const {
return L_; }
84 Eigen::MatrixXd
SolveL(
const Eigen::MatrixXd& B)
const;
86 Eigen::MatrixXd
Solve(
const Eigen::MatrixXd& B)
const;
95Eigen::MatrixXd
InverseSPD(
const Eigen::MatrixXd& A);
104 scope_.emplace(*timings, name);
void compute(const Eigen::MatrixXd &A)
Eigen::MatrixXd Solve(const Eigen::MatrixXd &B) const
A^-1 B.
Eigen::MatrixXd SolveL(const Eigen::MatrixXd &B) const
L^-1 B.
const Eigen::MatrixXd & matrixL() const
Wall-clock accounting for the parts of a DFT run.
OptionalTiming(DFTTimings *timings, const std::string &name)
std::optional< DFTTimings::Scope > scope_
std::function< void(Index m, const RowsVisitor &use)> RowsFn
std::function< void(Index m, Eigen::VectorXd &w)> WeightsFn
Writes the weights of block m; their number is the number of rows.
std::function< void(const Eigen::Ref< const Eigen::MatrixXd > &)> RowsVisitor
Calls use(R_m); R_m may be a block of stored data or a temporary.
static void setBatchMemory(double bytes)
Bytes for the stacked rows of one batch of blocks.
static Eigen::MatrixXd Compute(Index nblocks, Index ncols, const WeightsFn &weights, const RowsFn &rows)
static double batch_bytes_
bool InsideActiveParallelRegion()
SymmetricEigenSystem SymmetricEigen(const Eigen::MatrixXd &A, bool vectors=true)
With vectors = false only the eigenvalues are computed.
Eigen::MatrixXd InverseSPD(const Eigen::MatrixXd &A)
Provides a means for comparing floating point numbers.