1#ifndef OUTPUT_MULLIKEN_H
2#define OUTPUT_MULLIKEN_H
29 const std::vector<int>& isk,
32 void write(
int istep, std::string out_dir);
34 void print_atom_mag(
const std::vector<std::vector<double>>& atom_chg, std::ostream& os);
42 std::vector<std::vector<double>>
get_atom_mulliken(std::vector<std::vector<double>>& atom_chg);
50 const std::vector<double>& tot_chg,
51 const std::vector<std::vector<double>>& atom_chg,
52 std::map<std::vector<int>,
double> orb_chg,
56 const std::vector<double>& tot_chg,
57 const std::vector<std::vector<double>>& atom_chg,
58 std::map<std::vector<int>,
double> orb_chg,
62 const std::vector<double>& tot_chg,
63 const std::vector<std::vector<double>>& atom_chg,
64 std::map<std::vector<int>,
double> orb_chg,
83 const std::vector<int>&
isk_;
111 auto atom_chg = mulp.get_atom_chg();
127 std::vector<std::vector<double>> atom_mag(ucell.
nat, std::vector<double>(
PARAM.
inp.
nspin, 0.0));
130 std::vector<double> moments;
131 std::vector<double> mag_x(ucell.
nat, 0.0);
132 std::vector<double> mag_y(ucell.
nat, 0.0);
133 std::vector<double> mag_z(ucell.
nat, 0.0);
147 moments = sc_lambda->cal_moment(dmr, constrain);
152 for(
int iat=0;iat<ucell.
nat;iat++)
154 atom_mag[iat][0] = 0.0;
155 atom_mag[iat][1] = moments[iat];
168 moments = sc_lambda->cal_moment(dmr, constrain);
171 for(
int iat=0;iat<ucell.nat;iat++)
173 atom_mag[iat][0] = 0.0;
174 atom_mag[iat][1] = moments[iat*3];
175 atom_mag[iat][2] = moments[iat*3+1];
176 atom_mag[iat][3] = moments[iat*3+2];
This class is used to get the information of the atoms and orbitals indices in the unit cell.
Definition cell_index.h:21
Definition sltk_grid_driver.h:40
int get_nks() const
Definition klist.h:68
std::vector< ModuleBase::Vector3< double > > kvec_d
Cartesian coordinates of k points.
Definition klist.h:15
std::vector< int > isk
ngk, number of plane waves for each k point
Definition klist.h:21
std::vector< double > cutoffs() const
Definition ORB_read.cpp:39
Definition complexmatrix.h:13
3 elements vector
Definition vector3.h:24
Definition output_dmk.h:11
the output interface to write the Mulliken population charges
Definition output_mulliken.h:22
CellIndex * cell_index_
Definition output_mulliken.h:82
std::vector< double > get_tot_chg()
get total charge
Definition output_mulliken.cpp:342
void print_atom_mag(const std::vector< std::vector< double > > &atom_chg, std::ostream &os)
print atom mag to running log file
Definition output_mulliken.cpp:469
void set_ParaV(Parallel_Orbitals *ParaV_in)
set orbital parallel info
Definition output_mulliken.cpp:331
std::vector< std::vector< double > > get_atom_chg()
get atom charge
Definition output_mulliken.cpp:358
int nspin_
Definition output_mulliken.h:84
const std::vector< int > & isk_
Definition output_mulliken.h:83
Output_DMK< TK > * output_dmk_
Definition output_mulliken.h:80
void write_mulliken_nspin2(int istep, const std::vector< double > &tot_chg, const std::vector< std::vector< double > > &atom_chg, std::map< std::vector< int >, double > orb_chg, std::ofstream &os)
write mulliken.txt for the case of nspin=2
Definition output_mulliken.cpp:136
std::map< std::vector< int >, double > get_orb_chg()
get orbital charge
Definition output_mulliken.cpp:379
Output_Sk< TK > * output_sk_
Definition output_mulliken.h:79
void write_mulliken_nspin1(int istep, const std::vector< double > &tot_chg, const std::vector< std::vector< double > > &atom_chg, std::map< std::vector< int >, double > orb_chg, std::ofstream &os)
write mulliken.txt for the case of nspin=1
Definition output_mulliken.cpp:65
void collect_MW(ModuleBase::matrix &MecMulP, const ModuleBase::ComplexMatrix &mud, int nw, int isk)
collect_mw from matrix multiplication result
Definition output_mulliken.cpp:408
void write_mulliken_nspin4(int istep, const std::vector< double > &tot_chg, const std::vector< std::vector< double > > &atom_chg, std::map< std::vector< int >, double > orb_chg, std::ofstream &os)
write mulliken.txt for the case of nspin=4
Definition output_mulliken.cpp:229
Parallel_Orbitals * ParaV_
Definition output_mulliken.h:81
std::vector< std::vector< double > > get_atom_mulliken(std::vector< std::vector< double > > &atom_chg)
returun atom_mulliken for updateing STRU file
Definition output_mulliken.cpp:539
void set_nspin(int nspin_in)
set nspin
Definition output_mulliken.cpp:320
void write(int istep, std::string out_dir)
the outer interface to write the Mulliken population charges
Definition output_mulliken.cpp:29
void cal_orbMulP()
mulliken population = trace(dm*overlap)
ModuleBase::matrix orbMulP_
Definition output_mulliken.h:85
Definition output_sk.h:12
Definition parallel_orbitals.h:9
const Input_para & inp
Definition parameter.h:26
const System_para & globalv
Definition parameter.h:30
Definition two_center_bundle.h:11
std::unique_ptr< TwoCenterIntegrator > overlap_orb_onsite
Definition two_center_bundle.h:48
std::vector< int > get_atomCounts() const
get atomCounts, which is a vector of element type with atom number
Definition unitcell.cpp:123
std::vector< std::string > get_atomLabels() const
get atom labels
Definition unitcell.cpp:115
std::vector< std::vector< double > > atom_mulliken
Definition unitcell.h:50
int & nat
Definition unitcell.h:74
std::vector< std::vector< int > > get_lnchiCounts() const
get lnchiCounts, which is a vector of element type with the l:nchi vector
Definition unitcell.cpp:131
Definition density_matrix.h:70
hamilt::HContainer< TR > * get_DMR_pointer(const int ispin) const
get pointer of DMR
Definition density_matrix_io.cpp:186
void switch_dmr(const int mode)
(Only nspin=2) switch DMR to total density matrix or magnetization density matrix
Definition density_matrix.cpp:551
Definition dspin_lcao.h:20
Definition hcontainer.h:144
Definition hamilt_lcao.h:33
int MY_RANK
global index of process
Definition global_variable.cpp:21
std::ofstream ofs_running
Definition global_variable.cpp:38
Definition input_help.cpp:10
void cal_mag(Parallel_Orbitals *pv, hamilt::Hamilt< TK > *p_ham, K_Vectors &kv, elecstate::DensityMatrix< TK, double > *dm, const TwoCenterBundle &two_center_bundle, const LCAO_Orbitals &orb, UnitCell &ucell, const Grid_Driver &gd, const int istep, const bool print)
Definition output_mulliken.h:89
Parameter PARAM
Definition parameter.cpp:3
std::string global_out_dir
global output directory
Definition system_parameter.h:42