ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
Namespaces | Functions
rdmft_tools.cpp File Reference
#include "source_lcao/module_rdmft/rdmft_tools.h"
#include "source_pw/module_pwdft/global.h"
#include "source_base/tool_title.h"
#include "source_base/timer.h"
#include "source_hamilt/module_xc/xc_functional.h"
#include "source_estate/module_pot/H_Hartree_pw.h"
#include "source_estate/module_pot/pot_local.h"
#include "source_estate/module_pot/pot_xc.h"
#include "source_pw/module_pwdft/structure_factor.h"
#include "source_lcao/module_gint/temp_gint/gint_interface.h"
#include <iostream>
#include <cmath>
#include <complex>
#include <fstream>
#include <sstream>
#include <cassert>
Include dependency graph for rdmft_tools.cpp:

Namespaces

namespace  rdmft
 Reduced Density Matrix Functional Theory (RDMFT)
 

Functions

template<>
void rdmft::conj_psi< double > (psi::Psi< double > &wfc)
 
template<>
void rdmft::HkPsi< double > (const Parallel_Orbitals *ParaV, const double &HK, const double &wfc, double &H_wfc)
 
template<>
void rdmft::cal_bra_op_ket< double > (const Parallel_Orbitals *ParaV, const Parallel_2D &para_Eij_in, const double &wfc, const double &H_wfc, std::vector< double > &Dmn)
 
void rdmft::occNum_Mul_wfcHwfc (const ModuleBase::matrix &occ_number, const ModuleBase::matrix &wfcHwfc, ModuleBase::matrix &occNum_wfcHwfc, int symbol=0, const std::string XC_func_rdmft="hf", const double alpha=1.0)
 occNum_wfcHwfc = occNum*wfcHwfc + occNum_wfcHwfc
 
void rdmft::add_occNum (const K_Vectors &kv, const ModuleBase::matrix &occ_number, const ModuleBase::matrix &wfcHwfc_TV_in, const ModuleBase::matrix &wfcHwfc_hartree_in, const ModuleBase::matrix &wfcHwfc_dft_XC_in, const ModuleBase::matrix &wfcHwfc_exx_XC_in, ModuleBase::matrix &occNum_wfcHwfc, const std::string XC_func_rdmft="hf", const double alpha=1.0)
 Default symbol = 0 for the gradient of Etotal with respect to occupancy, symbol = 1 for the relevant calculation of Etotal.
 
void rdmft::add_wfcHwfc (const ModuleBase::matrix &wg, const ModuleBase::matrix &wk_fun_occNum, const ModuleBase::matrix &wfcHwfc_TV_in, const ModuleBase::matrix &wfcHwfc_hartree_in, const ModuleBase::matrix &wfcHwfc_XC_in, ModuleBase::matrix &occNum_wfcHwfc, const std::string XC_func_rdmft, const double alpha)
 do wk*g(occNum)*wfcHwfc and add for TV, hartree, XC. This function just use once, so it can be replace and delete
 
double rdmft::getEnergy (const ModuleBase::matrix &occNum_wfcHwfc)
 give certain occNum_wfcHwfc, get the corresponding energy
 
double rdmft::occNum_func (double eta, int symbol=0, const std::string XC_func_rdmft="hf", const double alpha_power=1.0)
 now support XC_func_rdmft = "hf", "muller", "power", "pbe", "pbe0". "wp22" and "cwp22" is realizing.