ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
Inverse_Matrix.h
Go to the documentation of this file.
1//=======================
2// AUTHOR : Peize Lin
3// DATE : 2022-08-17
4//=======================
5
6#pragma once
7
9
10#include <RI/global/Tensor.h>
11#include <vector>
12
13template <typename Tdata>
15{
16 public:
17 enum class Method
18 {
19 potrf,
20 syev
21 };
22 void cal_inverse(const Method& method, const double& threshold_condition_number = 0.);
23
24 void input(const RI::Tensor<Tdata>& m);
25 void input(const std::vector<std::vector<RI::Tensor<Tdata>>>& ms);
26 RI::Tensor<Tdata> output() const;
27 std::vector<std::vector<RI::Tensor<Tdata>>> output(const std::vector<size_t>& n0,
28 const std::vector<size_t>& n1) const;
29
30 private:
31 void using_potrf();
32 void using_syev(const double& threshold_condition_number);
33 void copy_down_triangle();
34 RI::Tensor<Tdata> A;
35};
36
37#include "Inverse_Matrix.hpp"
Definition Inverse_Matrix.h:15
Method
Definition Inverse_Matrix.h:18
RI::Tensor< Tdata > A
Definition Inverse_Matrix.h:34
void using_potrf()
Definition Inverse_Matrix.hpp:30
void copy_down_triangle()
Definition Inverse_Matrix.hpp:251
void input(const RI::Tensor< Tdata > &m)
Definition Inverse_Matrix.hpp:166
RI::Tensor< Tdata > output() const
Definition Inverse_Matrix.hpp:218
void using_syev(const double &threshold_condition_number)
Definition Inverse_Matrix.hpp:102
void cal_inverse(const Method &method, const double &threshold_condition_number=0.)
Definition Inverse_Matrix.hpp:16