ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Public Attributes | Private Member Functions | Private Attributes | List of all members
ModuleDFTU::DFTU Class Reference

#include <dftu.h>

Collaboration diagram for ModuleDFTU::DFTU:

Public Member Functions

 DFTU ()
 
 ~DFTU ()
 
void init (UnitCell &cell, const Parallel_Orbitals *pv, const int nks)
 
void cal_energy_correction (const UnitCell &ucell, const int istep)
 
double get_energy ()
 
void uramping_update ()
 
bool u_converged ()
 
void cal_occ_pw (const int iter, const void *psi_in, const ModuleBase::matrix &wg_in, const UnitCell &cell, const double &mixing_beta)
 calculate occupation matrix for DFT+U
 
void cal_VU_pot_pw (const int spin)
 calculate the local DFT+U effective potential matrix for PW base.
 
const std::complex< double > * get_eff_pot_pw (const int iat) const
 get effective potential matrix for PW base
 
int get_size_eff_pot_pw () const
 
void output (const UnitCell &ucell)
 
void cal_slater_UJ (const UnitCell &ucell, double **rho, const int &nrxx)
 

Static Public Member Functions

static DFTUget_instance ()
 

Public Attributes

std::vector< double > U = {}
 
std::vector< double > U0
 
std::vector< int > orbital_corr = {}
 
double uramping
 
int omc
 
int mixing_dftu
 
double EU
 
bool initialed_locale = false
 
std::vector< std::vector< std::vector< std::vector< ModuleBase::matrix > > > > locale
 
std::vector< std::vector< std::vector< std::vector< ModuleBase::matrix > > > > locale_save
 
bool Yukawa
 

Private Member Functions

void copy_locale (const UnitCell &ucell)
 
void zero_locale (const UnitCell &ucell)
 
void mix_locale (const UnitCell &ucell, const double &mixing_beta)
 
void write_occup_m (const UnitCell &ucell, std::ofstream &ofs, bool diag=false)
 
void read_occup_m (const UnitCell &ucell, const std::string &fn)
 
void local_occup_bcast (const UnitCell &ucell)
 
void cal_slater_Fk (const UnitCell &ucell, const int L, const int T)
 
void cal_yukawa_lambda (double **rho, const int &nrxx)
 
double spherical_Bessel (const int k, const double r, const double lambda)
 
double spherical_Hankel (const int k, const double r, const double lambda)
 

Private Attributes

const Parallel_OrbitalsparaV = nullptr
 
int cal_type = 3
 
std::vector< std::vector< std::vector< std::vector< std::vector< int > > > > > iatlnmipol2iwt
 
std::vector< std::complex< double > > eff_pot_pw
 
std::vector< int > eff_pot_pw_index
 
double lambda
 
std::vector< std::vector< std::vector< std::vector< double > > > > Fk
 
std::vector< std::vector< std::vector< double > > > U_Yukawa
 
std::vector< std::vector< std::vector< double > > > J_Yukawa
 

Constructor & Destructor Documentation

◆ DFTU()

ModuleDFTU::DFTU::DFTU ( )

◆ ~DFTU()

ModuleDFTU::DFTU::~DFTU ( )

Member Function Documentation

◆ cal_energy_correction()

void ModuleDFTU::DFTU::cal_energy_correction ( const UnitCell ucell,
const int  istep 
)
Here is the caller graph for this function:

◆ cal_occ_pw()

void ModuleDFTU::DFTU::cal_occ_pw ( const int  iter,
const void *  psi_in,
const ModuleBase::matrix wg_in,
const UnitCell cell,
const double &  mixing_beta 
)

calculate occupation matrix for DFT+U

interface for PW base calculate the local occupation number matrix for PW based wave functions

Here is the call graph for this function:
Here is the caller graph for this function:

◆ cal_slater_Fk()

void ModuleDFTU::DFTU::cal_slater_Fk ( const UnitCell ucell,
const int  L,
const int  T 
)
private

◆ cal_slater_UJ()

void ModuleDFTU::DFTU::cal_slater_UJ ( const UnitCell ucell,
double **  rho,
const int &  nrxx 
)
Here is the caller graph for this function:

◆ cal_VU_pot_pw()

void ModuleDFTU::DFTU::cal_VU_pot_pw ( const int  spin)

calculate the local DFT+U effective potential matrix for PW base.

◆ cal_yukawa_lambda()

void ModuleDFTU::DFTU::cal_yukawa_lambda ( double **  rho,
const int &  nrxx 
)
private

◆ copy_locale()

void ModuleDFTU::DFTU::copy_locale ( const UnitCell ucell)
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_eff_pot_pw()

const std::complex< double > * ModuleDFTU::DFTU::get_eff_pot_pw ( const int  iat) const
inline

get effective potential matrix for PW base

Here is the caller graph for this function:

◆ get_energy()

double ModuleDFTU::DFTU::get_energy ( )
inline
Here is the caller graph for this function:

◆ get_instance()

DFTU * ModuleDFTU::DFTU::get_instance ( )
static
Here is the caller graph for this function:

◆ get_size_eff_pot_pw()

int ModuleDFTU::DFTU::get_size_eff_pot_pw ( ) const
inline
Here is the caller graph for this function:

◆ init()

void ModuleDFTU::DFTU::init ( UnitCell cell,
const Parallel_Orbitals pv,
const int  nks 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ local_occup_bcast()

void ModuleDFTU::DFTU::local_occup_bcast ( const UnitCell ucell)
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ mix_locale()

void ModuleDFTU::DFTU::mix_locale ( const UnitCell ucell,
const double &  mixing_beta 
)
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ output()

void ModuleDFTU::DFTU::output ( const UnitCell ucell)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ read_occup_m()

void ModuleDFTU::DFTU::read_occup_m ( const UnitCell ucell,
const std::string &  fn 
)
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ spherical_Bessel()

double ModuleDFTU::DFTU::spherical_Bessel ( const int  k,
const double  r,
const double  lambda 
)
private

◆ spherical_Hankel()

double ModuleDFTU::DFTU::spherical_Hankel ( const int  k,
const double  r,
const double  lambda 
)
private

◆ u_converged()

bool ModuleDFTU::DFTU::u_converged ( )
Here is the caller graph for this function:

◆ uramping_update()

void ModuleDFTU::DFTU::uramping_update ( )
Here is the caller graph for this function:

◆ write_occup_m()

void ModuleDFTU::DFTU::write_occup_m ( const UnitCell ucell,
std::ofstream &  ofs,
bool  diag = false 
)
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ zero_locale()

void ModuleDFTU::DFTU::zero_locale ( const UnitCell ucell)
private
Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ cal_type

int ModuleDFTU::DFTU::cal_type = 3
private

◆ eff_pot_pw

std::vector<std::complex<double> > ModuleDFTU::DFTU::eff_pot_pw
private

◆ eff_pot_pw_index

std::vector<int> ModuleDFTU::DFTU::eff_pot_pw_index
private

◆ EU

double ModuleDFTU::DFTU::EU

◆ Fk

std::vector<std::vector<std::vector<std::vector<double> > > > ModuleDFTU::DFTU::Fk
private

◆ iatlnmipol2iwt

std::vector<std::vector<std::vector<std::vector<std::vector<int> > > > > ModuleDFTU::DFTU::iatlnmipol2iwt
private

◆ initialed_locale

bool ModuleDFTU::DFTU::initialed_locale = false

◆ J_Yukawa

std::vector<std::vector<std::vector<double> > > ModuleDFTU::DFTU::J_Yukawa
private

◆ lambda

double ModuleDFTU::DFTU::lambda
private

◆ locale

std::vector<std::vector<std::vector<std::vector<ModuleBase::matrix> > > > ModuleDFTU::DFTU::locale

◆ locale_save

std::vector<std::vector<std::vector<std::vector<ModuleBase::matrix> > > > ModuleDFTU::DFTU::locale_save

◆ mixing_dftu

int ModuleDFTU::DFTU::mixing_dftu

◆ omc

int ModuleDFTU::DFTU::omc

◆ orbital_corr

std::vector<int> ModuleDFTU::DFTU::orbital_corr = {}

◆ paraV

const Parallel_Orbitals* ModuleDFTU::DFTU::paraV = nullptr
private

◆ U

std::vector<double> ModuleDFTU::DFTU::U = {}

◆ U0

std::vector<double> ModuleDFTU::DFTU::U0

◆ U_Yukawa

std::vector<std::vector<std::vector<double> > > ModuleDFTU::DFTU::U_Yukawa
private

◆ uramping

double ModuleDFTU::DFTU::uramping

◆ Yukawa

bool ModuleDFTU::DFTU::Yukawa

The documentation for this class was generated from the following files: