ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
singular_value.h
Go to the documentation of this file.
1//=======================
2// AUTHOR : jiyy
3// DATE : 2024-01-10
4//=======================
5
6#ifndef AUXILIARY_FUNC_H
7#define AUXILIARY_FUNC_H
8
9#include "gaussian_abfs.h"
10//#include "source_basis/module_pw/pw_basis_k.h"
11#include "source_cell/klist.h"
12
13#include <array>
14#include <vector>
15
16namespace Singular_Value
17{
25using T_cal_fq_type = std::function<double(const ModuleBase::Vector3<double>& gk)>;
26using T_cal_fq_type_no = std::function<double()>;
27
28double cal_carrier(const UnitCell& ucell,
29 const std::vector<ModuleBase::Vector3<double>>& kvec_c,
30 const int& qdiv,
31 const double& qdense,
32 const int& niter,
33 const double& eps,
34 const int& a_rate);
35double cal_massidda(const UnitCell& ucell,
36 const std::array<int, 3>& nmp,
37 const int& qdiv,
38 const double& start_lambda,
39 const int& niter,
40 const double& eps);
41
42double solve_chi(const ModuleBase::Matrix3& G,
43 const std::vector<ModuleBase::Vector3<double>>& kvec_c,
44 const T_cal_fq_type& func_cal_fq,
45 const std::array<int, 3>& nq_arr,
46 const int& niter,
47 const double& eps,
48 const int& a_rate);
49double solve_chi(const std::vector<ModuleBase::Vector3<double>>& kvec_c,
50 const T_cal_fq_type& func_cal_fq,
51 const double& fq_int);
52double solve_chi(const int& nks, const T_cal_fq_type_no& func_cal_fq, const double& fq_int);
53double sum_for_solve_chi(const std::vector<ModuleBase::Vector3<double>>& kvec_c,
54 const T_cal_fq_type& func_cal_fq,
55 const double& fq_int);
57 const T_cal_fq_type& func_cal_fq,
58 const std::array<int, 3>& nq_arr,
59 const int& niter,
60 const double& eps,
61 const int& a_rate);
62
63// TODO: lower dimension please see PHYSICAL REVIEW B 87, 165122 (2013)
64
65// qdiv=2 i.e. q^{-2} for 3D;
66// qdiv=1 i.e. q^{-1} for 2D.
67double fq_carrier(const double& tpiba,
69 const int& qdiv,
70 std::vector<ModuleBase::Vector3<double>>& avec,
71 std::vector<ModuleBase::Vector3<double>>& bvec);
72// gamma: chosen as the radius of sphere which has the same volume as the Brillouin zone.
73double fq_massidda(const double& tpiba,
74 Gaussian_Abfs& gaussian_abfs,
75 const int& qdiv,
76 const double& lambda,
77 const int& lmax);
78}; // namespace Singular_Value
79
80#endif
Definition gaussian_abfs.h:19
3x3 matrix and related mathamatical operations
Definition matrix3.h:19
3 elements vector
Definition vector3.h:24
Definition unitcell.h:15
Definition singular_value.cpp:23
double sum_for_solve_chi(const std::vector< ModuleBase::Vector3< double > > &kvec_c, const T_cal_fq_type &func_cal_fq, const double &fq_int)
Definition singular_value.cpp:25
double fq_massidda(const double &tpiba, Gaussian_Abfs &gaussian_abfs, const int &qdiv, const double &lambda, const int &lmax)
Definition singular_value.cpp:149
std::function< double()> T_cal_fq_type_no
Definition singular_value.h:26
double Iter_Integral(const ModuleBase::Matrix3 &G, const T_cal_fq_type &func_cal_fq, const std::array< int, 3 > &nq_arr, const int &niter, const double &eps, const int &a_rate)
Definition singular_value.cpp:238
double solve_chi(const ModuleBase::Matrix3 &G, const std::vector< ModuleBase::Vector3< double > > &kvec_c, const T_cal_fq_type &func_cal_fq, const std::array< int, 3 > &nq_arr, const int &niter, const double &eps, const int &a_rate)
Definition singular_value.cpp:42
std::function< double(const ModuleBase::Vector3< double > &gk)> T_cal_fq_type
Calculating correction of Coulomb singularity.
Definition singular_value.h:25
double cal_massidda(const UnitCell &ucell, const std::array< int, 3 > &nmp, const int &qdiv, const double &start_lambda, const int &niter, const double &eps)
Definition singular_value.cpp:167
double cal_carrier(const UnitCell &ucell, const std::vector< ModuleBase::Vector3< double > > &kvec_c, const int &qdiv, const double &qdense, const int &niter, const double &eps, const int &a_rate)
Definition singular_value.cpp:106
double fq_carrier(const double &tpiba, const ModuleBase::Vector3< double > &qvec, const int &qdiv, std::vector< ModuleBase::Vector3< double > > &avec, std::vector< ModuleBase::Vector3< double > > &bvec)
Definition singular_value.cpp:72