24 for (
int ik = 0; ik < wfc.
get_nk(); ++ik)
28 dm[ik].create(ParaV->
ncol, ParaV->
nrow);
38 for (
int ib_local = 0; ib_local < nbands_local; ++ib_local)
43 if (ib_global >= wg.
nc)
49 if (ib_global >= wg.
nc) {
continue;
51 const double wg_local = wg(ik, ib_global);
52 double* wg_wfc_pointer = &(wg_wfc(0, ib_local, 0));
74 const int nbands_local = wfc.get_nbands();
75 const int nbasis_local = wfc.get_nbasis();
79 for (
int ik = 0; ik < wfc.get_nk(); ++ik)
83 dm[ik].create(ParaV->
ncol, ParaV->
nrow);
86 const std::complex<double>* pwfc = wfc.get_pointer();
87 std::complex<double>* pwg_wfc = wg_wfc.
get_pointer();
89#pragma omp parallel for schedule(static, 1024)
91 for(
int i = 0;i<wg_wfc.
size();++i)
93 pwg_wfc[i] =
conj(pwfc[i]);
97 for (
int ib_local = 0; ib_local < nbands_local; ++ib_local)
102 if (ib_global >= wg.
nc)
108 if (ib_global >= wg.
nc) {
continue;
110 const double wg_local = wg(ik, ib_global);
111 std::complex<double>* wg_wfc_pointer = &(wg_wfc(0, ib_local, 0));
static void scal(const int n, const float alpha, float *X, const int incX, base_device::AbacusDevice_t device_type=base_device::AbacusDevice_t::CpuDevice)
Definition blas_connector_vector.cpp:80
int nc
Definition matrix.h:24
static void tick(const std::string &class_name_in, const std::string &name_in)
Use twice at a time: the first time, set start_flag to false; the second time, calculate the time dur...
Definition timer.cpp:57
int ncol
Definition parallel_2d.h:116
int nrow
local size (nloc = nrow * ncol)
Definition parallel_2d.h:115
int global2local_col(const int igc) const
get the local index of a global index (col)
Definition parallel_2d.h:51
int desc[9]
ScaLAPACK descriptor.
Definition parallel_2d.h:103
Definition parallel_orbitals.h:9
int desc_wfc[9]
Definition parallel_orbitals.h:37
const int & get_nbands() const
Definition psi.cpp:342
const int & get_nk() const
Definition psi.cpp:336
void set_all_psi(const T *another_pointer, const std::size_t size_in)
Definition psi.cpp:223
size_t size() const
Definition psi.cpp:354
const int & get_nbasis() const
Definition psi.cpp:348
T * get_pointer() const
Definition psi.cpp:272
void fix_k(const int ik) const
Definition psi.cpp:364
void WARNING_QUIT(const std::string &, const std::string &)
Combine the functions of WARNING and QUIT.
Definition test_delley.cpp:14
void TITLE(const std::string &class_name, const std::string &function_name, const bool disable)
Definition tool_title.cpp:18
void cal_dm(const Parallel_Orbitals *ParaV, const ModuleBase::matrix &wg, const psi::Psi< double > &wfc, std::vector< ModuleBase::matrix > &dm)
Definition cal_dm.h:13
void psiMulPsi(const psi::Psi< double > &psi1, const psi::Psi< double > &psi2, double *dm_out)
Definition cal_dm_psi.cpp:227
void psiMulPsiMpi(const psi::Psi< double > &psi1, const psi::Psi< double > &psi2, double *dm_out, const int *desc_psi, const int *desc_dm)
Definition cal_dm_psi.cpp:156
double conj(double a)
Definition operator_lr_hxc.cpp:14