ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
cal_ldos.h
Go to the documentation of this file.
1#ifndef CAL_LDOS_H
2#define CAL_LDOS_H
3
6
7#include "source_estate/fp_energy.h" // eferm
9#include "source_lcao/setup_dm.h" // Setup_DM
10#include "source_cell/klist.h" // K_Vectors
11#include "source_base/matrix.h" // matrix
12
13namespace ModuleIO
14{
15template <typename T>
17{
18 public:
21
22 static void cal_ldos_lcao(
23 const elecstate::Efermi &eferm, // mohan add 2025-11-02
24 const Charge &chr, // mohan add add 2025-11-02
25 const LCAO_domain::Setup_DM<T> &dmat, // mohan add 2025-11-02
26 const K_Vectors &kv, // k points, mohan add 2025-11-02
27 const ModuleBase::matrix &ekb, // mohan add 2025-11-02
28 const ModuleBase::matrix &wg, // mohan add 2025-11-02
29 const psi::Psi<T>& psi,
30 const Parallel_Grid& pgrid,
31 const UnitCell& ucell);
32
33}; // namespace Cal_ldos
34
35void cal_ldos_pw(const elecstate::ElecStatePW<std::complex<double>>* pelec,
36 const psi::Psi<std::complex<double>>& psi,
37 const Parallel_Grid& pgrid,
38 const UnitCell& ucell);
39
40void stm_mode_pw(const elecstate::ElecStatePW<std::complex<double>>* pelec,
41 const psi::Psi<std::complex<double>>& psi,
42 const Parallel_Grid& pgrid,
43 const UnitCell& ucell);
44
45void ldos_mode_pw(const elecstate::ElecStatePW<std::complex<double>>* pelec,
46 const psi::Psi<std::complex<double>>& psi,
47 const Parallel_Grid& pgrid,
48 const UnitCell& ucell);
49
50/*
51 * @brief Get grid points and shifts for interpolation.
52 *
53 * @param start The starting point of the line.
54 * @param end The ending point of the line.
55 * @param npoints The number of points in the line.
56 * @param nx The dimension of 3D grids in the x direction.
57 * @param ny The dimension of 3D grids in the y direction.
58 * @param nz The dimension of 3D grids in the z direction.
59 * @param points The grid index that the points in the line are placed in.
60 * @param shifts The shifts along three directions due to the points are not on the grid exactly.
61 */
62void get_grid_points(const std::vector<double>& start,
63 const std::vector<double>& end,
64 const int& npoints,
65 const int& nx,
66 const int& ny,
67 const int& nz,
68 std::vector<std::vector<int>>& points,
69 std::vector<std::vector<double>>& shifts);
70
71/*
72 * @brief Trilinear interpolation of data on a 3D grid.
73 *
74 * @param points The grid points for interpolation.
75 * @param shifts The shifts for interpolation.
76 * @param pgrid The parallel grid object.
77 * @param data The data to be interpolated.
78 * @param results The results of the interpolation.
79 */
80void trilinear_interpolate(const std::vector<std::vector<int>>& points,
81 const std::vector<std::vector<double>>& shifts,
82 const Parallel_Grid& pgrid,
83 const std::vector<double>& data,
84 std::vector<double>& results);
85
86} // namespace ModuleIO
87
88#endif // CAL_LDOS_H
Definition charge.h:18
Definition klist.h:13
Definition setup_dm.h:14
Definition matrix.h:19
Definition cal_ldos.h:17
Cal_ldos()
Definition cal_ldos.h:19
static void cal_ldos_lcao(const elecstate::Efermi &eferm, const Charge &chr, const LCAO_domain::Setup_DM< T > &dmat, const K_Vectors &kv, const ModuleBase::matrix &ekb, const ModuleBase::matrix &wg, const psi::Psi< T > &psi, const Parallel_Grid &pgrid, const UnitCell &ucell)
~Cal_ldos()
Definition cal_ldos.h:20
Definition parallel_grid.h:8
Definition unitcell.h:17
Definition elecstate_pw.h:17
Definition psi.h:37
This file contains all energies about first-principle calculations.
Definition cal_dos.h:9
void trilinear_interpolate(const std::vector< std::vector< int > > &points, const std::vector< std::vector< double > > &shifts, const Parallel_Grid &pgrid, const std::vector< double > &data, std::vector< double > &results)
Definition cal_ldos.cpp:310
void stm_mode_pw(const elecstate::ElecStatePW< std::complex< double > > *pelec, const psi::Psi< std::complex< double > > &psi, const Parallel_Grid &pgrid, const UnitCell &ucell)
Definition cal_ldos.cpp:121
void ldos_mode_pw(const elecstate::ElecStatePW< std::complex< double > > *pelec, const psi::Psi< std::complex< double > > &psi, const Parallel_Grid &pgrid, const UnitCell &ucell)
Definition cal_ldos.cpp:169
void get_grid_points(const std::vector< double > &start, const std::vector< double > &end, const int &npoints, const int &nx, const int &ny, const int &nz, std::vector< std::vector< int > > &points, std::vector< std::vector< double > > &shifts)
Definition cal_ldos.cpp:260
void cal_ldos_pw(const elecstate::ElecStatePW< std::complex< double > > *pelec, const psi::Psi< std::complex< double > > &psi, const Parallel_Grid &pgrid, const UnitCell &ucell)
Definition cal_ldos.cpp:106
Definition exx_lip.h:23
Definition fp_energy.h:63
iclock::time_point start
Definition test_partition.cpp:22