|
ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
|
#include <spin_constrain.h>
Public Member Functions | |
| void | init_sc (double sc_thr_in, int nsc_in, int nsc_min_in, double alpha_trial_in, double sccut_in, double sc_drop_thr_in, const UnitCell &ucell, Parallel_Orbitals *ParaV_in, int nspin_in, const K_Vectors &kv_in, void *p_hamilt_in, void *psi_in, elecstate::ElecState *pelec_in, ModulePW::PW_Basis_K *pw_wfc_in=nullptr) |
| initialize spin-constrained DFT | |
| void | cal_mi_lcao (const int &step, bool print=false) |
| calculate the magnetization of each atom with real space projection method for LCAO base | |
| void | cal_mi_pw () |
| void | cal_mw_from_lambda (int i_step, const ModuleBase::Vector3< double > *delta_lambda=nullptr) |
| double | cal_escon () |
| calculate the energy of \sum_i \lambda_i * Mi if this->is_mag_converged is true, then this function will calculate the energy and return the real value if this->is_mag_converged is false, then this function will return 0.0 | |
| double | get_escon () |
| void | run_lambda_loop (int outer_step, bool rerun=true) |
| void | update_psi_charge (const ModuleBase::Vector3< double > *delta_lambda, bool pw_solve=true) |
| update the charge density for LCAO base with new lambda update the charge density and psi for PW base with new lambda | |
| void | calculate_delta_hcc (std::complex< double > *h_tmp, const std::complex< double > *becp_k, const ModuleBase::Vector3< double > *delta_lambda, const int nbands, const int nkb, const int *nh_iat) |
| bool | check_rms_stop (int outer_step, int i_step, double rms_error, double duration, double total_duration) |
| lambda loop helper functions | |
| void | check_restriction (const std::vector< ModuleBase::Vector3< double > > &search, double &alpha_trial) |
| apply restriction | |
| bool | check_gradient_decay (std::vector< ModuleBase::Vector3< double > > new_spin, std::vector< ModuleBase::Vector3< double > > old_spin, std::vector< ModuleBase::Vector3< double > > new_delta_lambda, std::vector< ModuleBase::Vector3< double > > old_delta_lambda, bool print=false) |
| check gradient decay | |
| double | cal_alpha_opt (std::vector< ModuleBase::Vector3< double > > spin, std::vector< ModuleBase::Vector3< double > > spin_plus, const double alpha_trial) |
| calculate alpha_opt | |
| void | print_header () |
| print header info | |
| void | print_termination () |
| print termination message | |
| void | print_Mi (std::ofstream &ofs_running) |
| print mi | |
| void | print_Mag_Force (std::ofstream &ofs_running) |
| print magnetic force, defined as \frac{\delta{L}}/{\delta{Mi}} = -lambda[iat]) | |
| SpinConstrain (SpinConstrain const &)=delete | |
| Delete copy and move constructors and assign operators. | |
| SpinConstrain (SpinConstrain &&)=delete | |
| void | set_atomCounts (const std::map< int, int > &atomCounts_in) |
| set element index to atom index map | |
| const std::map< int, int > & | get_atomCounts () const |
| get element index to atom index map | |
| void | set_orbitalCounts (const std::map< int, int > &orbitalCounts_in) |
| set element index to orbital index map | |
| const std::map< int, int > & | get_orbitalCounts () const |
| get element index to orbital index map | |
| void | set_lnchiCounts (const std::map< int, std::map< int, int > > &lnchiCounts_in) |
| set lnchiCounts | |
| const std::map< int, std::map< int, int > > & | get_lnchiCounts () const |
| get lnchiCounts | |
| void | set_sc_lambda () |
| set sc_lambda | |
| void | set_sc_lambda (const ModuleBase::Vector3< double > *lambda_in, int nat_in) |
| set sc_lambda from variable | |
| void | set_target_mag () |
| set target_mag | |
| void | set_target_mag (const ModuleBase::Vector3< double > *target_mag_in, int nat_in) |
| set target_mag from variable | |
| void | set_target_mag (const std::vector< ModuleBase::Vector3< double > > &target_mag_in) |
| set target magnetic moment | |
| void | set_constrain () |
| set constrain | |
| void | set_constrain (const ModuleBase::Vector3< int > *constrain_in, int nat_in) |
| set constrain from variable | |
| const std::vector< ModuleBase::Vector3< double > > & | get_sc_lambda () const |
| get sc_lambda | |
| const std::vector< ModuleBase::Vector3< double > > & | get_target_mag () const |
| get target_mag | |
| const std::vector< ModuleBase::Vector3< int > > & | get_constrain () const |
| get constrain | |
| int | get_nat () |
| get nat | |
| int | get_ntype () |
| get ntype | |
| void | check_atomCounts () |
| check atomCounts | |
| int | get_iat (int itype, int atom_index) |
| get iat | |
| void | set_nspin (int nspin) |
| set nspin | |
| int | get_nspin () |
| get nspin | |
| void | zero_Mi () |
| zero atomic magnetic moment | |
| double | get_decay_grad (int itype) |
| get decay_grad | |
| void | set_decay_grad () |
| set decay_grad | |
| const std::vector< double > & | get_decay_grad () |
| get decay_grad | |
| void | set_decay_grad (const double *decay_grad_in, int ntype_in) |
| set decay_grad from variable | |
| void | set_sc_drop_thr (double sc_drop_thr_in) |
| set decay grad switch | |
| void | set_input_parameters (double sc_thr_in, int nsc_in, int nsc_min_in, double alpha_trial_in, double sccut_in, double sc_drop_thr_in) |
| set input parameters | |
| double | get_sc_thr () |
| get sc_thr | |
| int | get_nsc () |
| get nsc | |
| int | get_nsc_min () |
| get nsc_min | |
| double | get_alpha_trial () |
| get alpha_trial | |
| double | get_sccut () |
| get sccut | |
| double | get_sc_drop_thr () |
| get sc_drop_thr | |
| void | set_ParaV (Parallel_Orbitals *ParaV_in) |
| set orbital parallel info | |
| void | set_solver_parameters (const K_Vectors &kv_in, void *p_hamilt_in, void *psi_in, elecstate::ElecState *pelec_in) |
| set parameters for solver | |
| void | set_operator (hamilt::Operator< TK > *op_in) |
| save operator for spin-constrained DFT | |
| void | set_mag_converged (bool is_Mi_converged_in) |
| set is_Mi_converged | |
| bool | mag_converged () const |
| get is_Mi_converged | |
| void | cal_mi_pw () |
| void | set_operator (hamilt::Operator< std::complex< double > > *op_in) |
| void | set_operator (hamilt::Operator< double > *op_in) |
| void | calculate_delta_hcc (std::complex< double > *h_tmp, const std::complex< double > *becp_k, const ModuleBase::Vector3< double > *delta_lambda, const int nbands, const int nkb, const int *nh_iat) |
| void | cal_mw_from_lambda (int i_step, const ModuleBase::Vector3< double > *delta_lambda) |
| void | update_psi_charge (const ModuleBase::Vector3< double > *delta_lambda, bool pw_solve) |
| void | run_lambda_loop (int outer_step, bool rerun) |
| void | print_termination () |
| bool | check_rms_stop (int outer_step, int i_step, double rms_error, double duration, double total_duration) |
| void | print_header () |
| print header | |
| void | check_restriction (const std::vector< ModuleBase::Vector3< double > > &search, double &alpha_trial) |
| check restriction | |
| double | cal_alpha_opt (std::vector< ModuleBase::Vector3< double > > spin, std::vector< ModuleBase::Vector3< double > > spin_plus, const double alpha_trial) |
| calculate alpha_opt | |
| bool | check_gradient_decay (std::vector< ModuleBase::Vector3< double > > new_spin, std::vector< ModuleBase::Vector3< double > > spin, std::vector< ModuleBase::Vector3< double > > delta_lambda, std::vector< ModuleBase::Vector3< double > > dnu_last_step, bool print) |
| check gradient decay | |
| void | cal_mw_from_lambda (int i_step, const ModuleBase::Vector3< double > *delta_lambda) |
| void | cal_mi_lcao (const int &step, bool print) |
| void | run_lambda_loop (int outer_step, bool rerun) |
| bool | check_rms_stop (int outer_step, int i_step, double rms_error, double duration, double total_duration) |
| void | check_restriction (const std::vector< ModuleBase::Vector3< double > > &search, double &alpha_trial) |
| double | cal_alpha_opt (std::vector< ModuleBase::Vector3< double > > spin, std::vector< ModuleBase::Vector3< double > > spin_plus, const double alpha_trial) |
| calculate alpha_opt | |
| void | print_termination () |
| void | print_header () |
| bool | check_gradient_decay (std::vector< ModuleBase::Vector3< double > > new_spin, std::vector< ModuleBase::Vector3< double > > old_spin, std::vector< ModuleBase::Vector3< double > > new_delta_lambda, std::vector< ModuleBase::Vector3< double > > old_delta_lambda, bool print) |
Static Public Member Functions | |
| static SpinConstrain & | getScInstance () |
| Public method to access the Singleton instance. | |
Public Attributes | |
| bool | higher_mag_prec = false |
| use rerun to get higher precision in lambda_loop for PW base | |
| Parallel_Orbitals * | ParaV = nullptr |
| void * | p_hamilt = nullptr |
| void * | psi = nullptr |
| elecstate::ElecState * | pelec = nullptr |
| ModulePW::PW_Basis_K * | pw_wfc_ = nullptr |
| double | tpiba = 0.0 |
| const double | meV_to_Ry = 7.349864435130999e-05 |
| save ucell.tpiba | |
| K_Vectors | kv_ |
Private Member Functions | |
| SpinConstrain () | |
| ~SpinConstrain () | |
| SpinConstrain & | operator= (SpinConstrain const &)=delete |
| SpinConstrain & | operator= (SpinConstrain &&)=delete |
Private Attributes | |
| std::map< int, std::vector< ScAtomData > > | ScData |
| std::map< int, double > | ScDecayGrad |
| std::vector< double > | decay_grad_ |
| std::map< int, int > | atomCounts |
| std::map< int, int > | orbitalCounts |
| std::map< int, std::map< int, int > > | lnchiCounts |
| std::vector< ModuleBase::Vector3< double > > | lambda_ |
| std::vector< ModuleBase::Vector3< double > > | target_mag_ |
| std::vector< ModuleBase::Vector3< double > > | Mi_ |
| std::vector< std::string > | atomLabels_ |
| double | escon_ = 0.0 |
| int | nspin_ = 0 |
| int | npol_ = 1 |
| int | nsc_ |
| int | nsc_min_ |
| double | sc_drop_thr_ = 1e-3 |
| double | sc_thr_ |
| double | current_sc_thr_ |
| std::vector< ModuleBase::Vector3< int > > | constrain_ |
| bool | debug = false |
| double | alpha_trial_ |
| double | restrict_current_ |
| hamilt::Operator< TK > * | p_operator = nullptr |
| operator for spin-constrained DFT, used for calculating current atomic magnetic moment | |
| bool | is_Mi_converged = false |
| if atomic magnetic moment is converged | |
| TK * | sub_h_save |
| TK * | sub_s_save |
| TK * | becp_save |
|
delete |
Delete copy and move constructors and assign operators.
|
delete |
|
inlineprivate |
|
inlineprivate |
| double spinconstrain::SpinConstrain< std::complex< double > >::cal_alpha_opt | ( | std::vector< ModuleBase::Vector3< double > > | spin, |
| std::vector< ModuleBase::Vector3< double > > | spin_plus, | ||
| const double | alpha_trial | ||
| ) |
calculate alpha_opt
| double spinconstrain::SpinConstrain< TK >::cal_alpha_opt | ( | std::vector< ModuleBase::Vector3< double > > | spin, |
| std::vector< ModuleBase::Vector3< double > > | spin_plus, | ||
| const double | alpha_trial | ||
| ) |
calculate alpha_opt
| double spinconstrain::SpinConstrain< double >::cal_alpha_opt | ( | std::vector< ModuleBase::Vector3< double > > | spin, |
| std::vector< ModuleBase::Vector3< double > > | spin_plus, | ||
| const double | alpha_trial | ||
| ) |
calculate alpha_opt
| double spinconstrain::SpinConstrain< TK >::cal_escon | ( | ) |
calculate the energy of \sum_i \lambda_i * Mi if this->is_mag_converged is true, then this function will calculate the energy and return the real value if this->is_mag_converged is false, then this function will return 0.0
| void spinconstrain::SpinConstrain< double >::cal_mi_lcao | ( | const int & | step, |
| bool | |||
| ) |
| void spinconstrain::SpinConstrain< TK >::cal_mi_lcao | ( | const int & | step, |
| bool | print = false |
||
| ) |
calculate the magnetization of each atom with real space projection method for LCAO base
| step | : the step number of the SCF calculation |
| : print the magnetization of each atom if true |
| void spinconstrain::SpinConstrain< std::complex< double > >::cal_mi_pw | ( | ) |
| void spinconstrain::SpinConstrain< TK >::cal_mi_pw | ( | ) |
| void spinconstrain::SpinConstrain< std::complex< double > >::cal_mw_from_lambda | ( | int | i_step, |
| const ModuleBase::Vector3< double > * | delta_lambda | ||
| ) |
update H(k) for each k point
| void spinconstrain::SpinConstrain< double >::cal_mw_from_lambda | ( | int | i_step, |
| const ModuleBase::Vector3< double > * | delta_lambda | ||
| ) |
| void spinconstrain::SpinConstrain< TK >::cal_mw_from_lambda | ( | int | i_step, |
| const ModuleBase::Vector3< double > * | delta_lambda = nullptr |
||
| ) |
| void spinconstrain::SpinConstrain< std::complex< double > >::calculate_delta_hcc | ( | std::complex< double > * | h_tmp, |
| const std::complex< double > * | becp_k, | ||
| const ModuleBase::Vector3< double > * | delta_lambda, | ||
| const int | nbands, | ||
| const int | nkb, | ||
| const int * | nh_iat | ||
| ) |
| void spinconstrain::SpinConstrain< TK >::calculate_delta_hcc | ( | std::complex< double > * | h_tmp, |
| const std::complex< double > * | becp_k, | ||
| const ModuleBase::Vector3< double > * | delta_lambda, | ||
| const int | nbands, | ||
| const int | nkb, | ||
| const int * | nh_iat | ||
| ) |
| void spinconstrain::SpinConstrain< TK >::check_atomCounts | ( | ) |
check atomCounts
| bool spinconstrain::SpinConstrain< double >::check_gradient_decay | ( | std::vector< ModuleBase::Vector3< double > > | new_spin, |
| std::vector< ModuleBase::Vector3< double > > | old_spin, | ||
| std::vector< ModuleBase::Vector3< double > > | new_delta_lambda, | ||
| std::vector< ModuleBase::Vector3< double > > | old_delta_lambda, | ||
| bool | |||
| ) |
| bool spinconstrain::SpinConstrain< TK >::check_gradient_decay | ( | std::vector< ModuleBase::Vector3< double > > | new_spin, |
| std::vector< ModuleBase::Vector3< double > > | old_spin, | ||
| std::vector< ModuleBase::Vector3< double > > | new_delta_lambda, | ||
| std::vector< ModuleBase::Vector3< double > > | old_delta_lambda, | ||
| bool | print = false |
||
| ) |
check gradient decay
| bool spinconstrain::SpinConstrain< std::complex< double > >::check_gradient_decay | ( | std::vector< ModuleBase::Vector3< double > > | new_spin, |
| std::vector< ModuleBase::Vector3< double > > | spin, | ||
| std::vector< ModuleBase::Vector3< double > > | delta_lambda, | ||
| std::vector< ModuleBase::Vector3< double > > | dnu_last_step, | ||
| bool | |||
| ) |
check gradient decay
| void spinconstrain::SpinConstrain< std::complex< double > >::check_restriction | ( | const std::vector< ModuleBase::Vector3< double > > & | search, |
| double & | alpha_trial | ||
| ) |
check restriction
| void spinconstrain::SpinConstrain< TK >::check_restriction | ( | const std::vector< ModuleBase::Vector3< double > > & | search, |
| double & | alpha_trial | ||
| ) |
apply restriction
| void spinconstrain::SpinConstrain< double >::check_restriction | ( | const std::vector< ModuleBase::Vector3< double > > & | search, |
| double & | alpha_trial | ||
| ) |
| bool spinconstrain::SpinConstrain< std::complex< double > >::check_rms_stop | ( | int | outer_step, |
| int | i_step, | ||
| double | rms_error, | ||
| double | duration, | ||
| double | total_duration | ||
| ) |
| bool spinconstrain::SpinConstrain< TK >::check_rms_stop | ( | int | outer_step, |
| int | i_step, | ||
| double | rms_error, | ||
| double | duration, | ||
| double | total_duration | ||
| ) |
lambda loop helper functions
| bool spinconstrain::SpinConstrain< double >::check_rms_stop | ( | int | outer_step, |
| int | i_step, | ||
| double | rms_error, | ||
| double | duration, | ||
| double | total_duration | ||
| ) |
| double spinconstrain::SpinConstrain< TK >::get_alpha_trial | ( | ) |
get alpha_trial
| const std::map< int, int > & spinconstrain::SpinConstrain< TK >::get_atomCounts | ( | ) | const |
get element index to atom index map
| const std::vector< ModuleBase::Vector3< int > > & spinconstrain::SpinConstrain< TK >::get_constrain | ( | ) | const |
get constrain
get_constrain
| const std::vector< double > & spinconstrain::SpinConstrain< TK >::get_decay_grad | ( | ) |
get decay_grad
| double spinconstrain::SpinConstrain< TK >::get_decay_grad | ( | int | itype | ) |
get decay_grad
get grad_decay this function can only be called by the root process because only root process reads the ScDecayGrad from json file
| double spinconstrain::SpinConstrain< TK >::get_escon | ( | ) |
| int spinconstrain::SpinConstrain< TK >::get_iat | ( | int | itype, |
| int | atom_index | ||
| ) |
get iat
| const std::map< int, std::map< int, int > > & spinconstrain::SpinConstrain< TK >::get_lnchiCounts | ( | ) | const |
get lnchiCounts
| int spinconstrain::SpinConstrain< TK >::get_nat | ( | ) |
get nat
| int spinconstrain::SpinConstrain< TK >::get_nsc | ( | ) |
get nsc
| int spinconstrain::SpinConstrain< TK >::get_nsc_min | ( | ) |
get nsc_min
| int spinconstrain::SpinConstrain< TK >::get_nspin | ( | ) |
get nspin
| int spinconstrain::SpinConstrain< TK >::get_ntype | ( | ) |
get ntype
| const std::map< int, int > & spinconstrain::SpinConstrain< TK >::get_orbitalCounts | ( | ) | const |
get element index to orbital index map
| double spinconstrain::SpinConstrain< TK >::get_sc_drop_thr | ( | ) |
get sc_drop_thr
| const std::vector< ModuleBase::Vector3< double > > & spinconstrain::SpinConstrain< TK >::get_sc_lambda | ( | ) | const |
get sc_lambda
| double spinconstrain::SpinConstrain< TK >::get_sc_thr | ( | ) |
get sc_thr
| double spinconstrain::SpinConstrain< TK >::get_sccut | ( | ) |
get sccut
| const std::vector< ModuleBase::Vector3< double > > & spinconstrain::SpinConstrain< TK >::get_target_mag | ( | ) | const |
get target_mag
|
static |
Public method to access the Singleton instance.
pubic methods for setting and getting spin-constrained DFT parameters
| void spinconstrain::SpinConstrain< TK >::init_sc | ( | double | sc_thr_in, |
| int | nsc_in, | ||
| int | nsc_min_in, | ||
| double | alpha_trial_in, | ||
| double | sccut_in, | ||
| double | sc_drop_thr_in, | ||
| const UnitCell & | ucell, | ||
| Parallel_Orbitals * | ParaV_in, | ||
| int | nspin_in, | ||
| const K_Vectors & | kv_in, | ||
| void * | p_hamilt_in, | ||
| void * | psi_in, | ||
| elecstate::ElecState * | pelec_in, | ||
| ModulePW::PW_Basis_K * | pw_wfc_in = nullptr |
||
| ) |
initialize spin-constrained DFT
pubic interface for spin-constrained DFT
|
inline |
get is_Mi_converged
|
privatedelete |
|
privatedelete |
| void spinconstrain::SpinConstrain< std::complex< double > >::print_header | ( | ) |
print header
| void spinconstrain::SpinConstrain< TK >::print_header | ( | ) |
print header info
| void spinconstrain::SpinConstrain< double >::print_header | ( | ) |
| void spinconstrain::SpinConstrain< TK >::print_Mag_Force | ( | std::ofstream & | ofs_running | ) |
print magnetic force, defined as \frac{\delta{L}}/{\delta{Mi}} = -lambda[iat])
print magnetic force (defined as \frac{\delta{L}}/{\delta{Mi}} = -lambda[iat])
| void spinconstrain::SpinConstrain< TK >::print_Mi | ( | std::ofstream & | ofs_running | ) |
print mi
print Mi
| void spinconstrain::SpinConstrain< std::complex< double > >::print_termination | ( | ) |
| void spinconstrain::SpinConstrain< TK >::print_termination | ( | ) |
print termination message
| void spinconstrain::SpinConstrain< double >::print_termination | ( | ) |
| void spinconstrain::SpinConstrain< std::complex< double > >::run_lambda_loop | ( | int | outer_step, |
| bool | rerun | ||
| ) |
check if restriction is needed
check if restriction is needed
| void spinconstrain::SpinConstrain< double >::run_lambda_loop | ( | int | outer_step, |
| bool | rerun | ||
| ) |
| void spinconstrain::SpinConstrain< TK >::run_lambda_loop | ( | int | outer_step, |
| bool | rerun = true |
||
| ) |
| void spinconstrain::SpinConstrain< TK >::set_atomCounts | ( | const std::map< int, int > & | atomCounts_in | ) |
set element index to atom index map
| void spinconstrain::SpinConstrain< TK >::set_constrain | ( | ) |
set constrain
| void spinconstrain::SpinConstrain< TK >::set_constrain | ( | const ModuleBase::Vector3< int > * | constrain_in, |
| int | nat_in | ||
| ) |
set constrain from variable
| void spinconstrain::SpinConstrain< TK >::set_decay_grad | ( | ) |
set decay_grad
set grad_decy
| void spinconstrain::SpinConstrain< TK >::set_decay_grad | ( | const double * | decay_grad_in, |
| int | ntype_in | ||
| ) |
set decay_grad from variable
set grad_decy from variable
| void spinconstrain::SpinConstrain< TK >::set_input_parameters | ( | double | sc_thr_in, |
| int | nsc_in, | ||
| int | nsc_min_in, | ||
| double | alpha_trial_in, | ||
| double | sccut_in, | ||
| double | sc_drop_thr_in | ||
| ) |
set input parameters
| void spinconstrain::SpinConstrain< TK >::set_lnchiCounts | ( | const std::map< int, std::map< int, int > > & | lnchiCounts_in | ) |
set lnchiCounts
|
inline |
set is_Mi_converged
| void spinconstrain::SpinConstrain< TK >::set_nspin | ( | int | nspin | ) |
set nspin
| void spinconstrain::SpinConstrain< double >::set_operator | ( | hamilt::Operator< double > * | op_in | ) |
| void spinconstrain::SpinConstrain< std::complex< double > >::set_operator | ( | hamilt::Operator< std::complex< double > > * | op_in | ) |
| void spinconstrain::SpinConstrain< TK >::set_operator | ( | hamilt::Operator< TK > * | op_in | ) |
save operator for spin-constrained DFT
| op_in | the base pointer of operator, actual type should be DeltaSpin<OperatorLCAO<TK, TR>>* |
| void spinconstrain::SpinConstrain< TK >::set_orbitalCounts | ( | const std::map< int, int > & | orbitalCounts_in | ) |
set element index to orbital index map
| void spinconstrain::SpinConstrain< TK >::set_ParaV | ( | Parallel_Orbitals * | ParaV_in | ) |
set orbital parallel info
set ParaV
| void spinconstrain::SpinConstrain< TK >::set_sc_drop_thr | ( | double | sc_drop_thr_in | ) |
set decay grad switch
set sc_drop_thr
| void spinconstrain::SpinConstrain< TK >::set_sc_lambda | ( | ) |
set sc_lambda
| void spinconstrain::SpinConstrain< TK >::set_sc_lambda | ( | const ModuleBase::Vector3< double > * | lambda_in, |
| int | nat_in | ||
| ) |
set sc_lambda from variable
| void spinconstrain::SpinConstrain< TK >::set_solver_parameters | ( | const K_Vectors & | kv_in, |
| void * | p_hamilt_in, | ||
| void * | psi_in, | ||
| elecstate::ElecState * | pelec_in | ||
| ) |
set parameters for solver
| void spinconstrain::SpinConstrain< TK >::set_target_mag | ( | ) |
set target_mag
| void spinconstrain::SpinConstrain< TK >::set_target_mag | ( | const ModuleBase::Vector3< double > * | target_mag_in, |
| int | nat_in | ||
| ) |
set target_mag from variable
| void spinconstrain::SpinConstrain< TK >::set_target_mag | ( | const std::vector< ModuleBase::Vector3< double > > & | target_mag_in | ) |
set target magnetic moment
this is wired because the UnitCell class set in x direction
| void spinconstrain::SpinConstrain< std::complex< double > >::update_psi_charge | ( | const ModuleBase::Vector3< double > * | delta_lambda, |
| bool | pw_solve | ||
| ) |
| void spinconstrain::SpinConstrain< TK >::update_psi_charge | ( | const ModuleBase::Vector3< double > * | delta_lambda, |
| bool | pw_solve = true |
||
| ) |
update the charge density for LCAO base with new lambda update the charge density and psi for PW base with new lambda
| void spinconstrain::SpinConstrain< TK >::zero_Mi | ( | ) |
zero atomic magnetic moment
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
| bool spinconstrain::SpinConstrain< TK >::higher_mag_prec = false |
use rerun to get higher precision in lambda_loop for PW base
|
private |
if atomic magnetic moment is converged
| K_Vectors spinconstrain::SpinConstrain< TK >::kv_ |
|
private |
|
private |
| const double spinconstrain::SpinConstrain< TK >::meV_to_Ry = 7.349864435130999e-05 |
save ucell.tpiba
|
private |
|
private |
|
private |
input parameters for lambda-loop
|
private |
|
private |
|
private |
| void* spinconstrain::SpinConstrain< TK >::p_hamilt = nullptr |
|
private |
operator for spin-constrained DFT, used for calculating current atomic magnetic moment
| Parallel_Orbitals* spinconstrain::SpinConstrain< TK >::ParaV = nullptr |
important outter class pointers used in spin-constrained DFT
| elecstate::ElecState* spinconstrain::SpinConstrain< TK >::pelec = nullptr |
| void* spinconstrain::SpinConstrain< TK >::psi = nullptr |
| ModulePW::PW_Basis_K* spinconstrain::SpinConstrain< TK >::pw_wfc_ = nullptr |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
| double spinconstrain::SpinConstrain< TK >::tpiba = 0.0 |