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

#include <pot_ml_exx.h>

Inheritance diagram for elecstate::ML_EXX:
Collaboration diagram for elecstate::ML_EXX:

Public Member Functions

 ML_EXX ()
 
virtual ~ML_EXX ()
 
void set_para (const Input_para &inp, const UnitCell *ucell_in, const ModulePW::PW_Basis *rho_basis_in)
 
void ml_potential (const double *const *prho, const ModulePW::PW_Basis *pw_rho, ModuleBase::matrix &rpotential)
 Get the potential of ML KEDF, and add it into rpotential.
 
void generateTrainData (const double *const *prho, const ModulePW::PW_Basis *pw_rho, const double *veff)
 Generate training data for ML KEDF.
 
void localTest (const double *const *prho, const ModulePW::PW_Basis *pw_rho)
 For test.
 
void init_data (const int &nkernel, const bool &of_ml_gamma, const bool &of_ml_p, const bool &of_ml_q, const bool &of_ml_tanhp, const bool &of_ml_tanhq, const std::vector< int > &of_ml_gammanl_, const std::vector< int > &of_ml_pnl, const std::vector< int > &of_ml_qnl, const std::vector< int > &of_ml_xi, const std::vector< int > &of_ml_tanhxi, const std::vector< int > &of_ml_tanhxi_nl, const std::vector< int > &of_ml_tanh_pnl, const std::vector< int > &of_ml_tanh_qnl, const std::vector< int > &of_ml_tanhp_nl, const std::vector< int > &of_ml_tanhq_nl)
 Initialize the data for ML KEDF, and generate the mapping between descriptor and kernel.
 
- Public Member Functions inherited from ML_Base
 ML_Base ()
 
 ~ML_Base ()
 
void set_device (std::string device_inpt)
 
void loadVector (std::string filename, std::vector< double > &data)
 
void dumpVector (std::string filename, const std::vector< double > &data)
 
void dumpTensor (std::string filename, const torch::Tensor &data)
 
void dumpMatrix (std::string filename, const ModuleBase::matrix &data)
 
torch::Tensor get_data (std::string parameter, const int ikernel) const
 

Public Attributes

double ml_exx_energy = 0.0
 
- Public Attributes inherited from ML_Base
int nx_tot = 0
 

Additional Inherited Members

- Protected Member Functions inherited from ML_Base
void updateInput (const double *const *prho, const ModulePW::PW_Basis *pw_rho)
 
void NN_forward (const double *const *prho, const ModulePW::PW_Basis *pw_rho, bool cal_grad)
 
void get_potential_ (const double *const *prho, const ModulePW::PW_Basis *pw_rho, ModuleBase::matrix &rpotential)
 
double potGammaTerm (int ir)
 
double potPTerm1 (int ir)
 
double potQTerm1 (int ir)
 
double potXiTerm1 (int ir)
 
double potTanhxiTerm1 (int ir)
 
double potTanhpTerm1 (int ir)
 
double potTanhqTerm1 (int ir)
 
void potGammanlTerm (const double *const *prho, const std::vector< double > &tau_lda, const ModulePW::PW_Basis *pw_rho, std::vector< double > &rGammanlTerm)
 
void potXinlTerm (const double *const *prho, const std::vector< double > &tau_lda, const ModulePW::PW_Basis *pw_rho, std::vector< double > &rXinlTerm)
 
void potTanhxinlTerm (const double *const *prho, const std::vector< double > &tau_lda, const ModulePW::PW_Basis *pw_rho, std::vector< double > &rTanhxinlTerm)
 
void potTanhxi_nlTerm (const double *const *prho, const std::vector< double > &tau_lda, const ModulePW::PW_Basis *pw_rho, std::vector< double > &rTanhxi_nlTerm)
 
void potPPnlTerm (const double *const *prho, const std::vector< double > &tau_lda, const ModulePW::PW_Basis *pw_rho, std::vector< double > &rPPnlTerm)
 
void potQQnlTerm (const double *const *prho, const std::vector< double > &tau_lda, const ModulePW::PW_Basis *pw_rho, std::vector< double > &rQQnlTerm)
 
void potTanhpTanh_pnlTerm (const double *const *prho, const std::vector< double > &tau_lda, const ModulePW::PW_Basis *pw_rho, std::vector< double > &rTanhpTanh_pnlTerm)
 
void potTanhqTanh_qnlTerm (const double *const *prho, const std::vector< double > &tau_lda, const ModulePW::PW_Basis *pw_rho, std::vector< double > &rTanhqTanh_qnlTerm)
 
void potTanhpTanhp_nlTerm (const double *const *prho, const std::vector< double > &tau_lda, const ModulePW::PW_Basis *pw_rho, std::vector< double > &rTanhpTanhp_nlTerm)
 
void potTanhqTanhq_nlTerm (const double *const *prho, const std::vector< double > &tau_lda, const ModulePW::PW_Basis *pw_rho, std::vector< double > &rTanhqTanhq_nlTerm)
 
- Protected Attributes inherited from ML_Base
ModuleIO::Cal_MLKEDF_Descriptorscal_tool = nullptr
 
int nx = 0
 
double dV = 0.
 
double pqcoef = 1.0 / (4.0 * std::pow(3*std::pow(M_PI, 2.0), 2.0/3.0))
 
double feg_net_F = 0.0
 
double feg3_correct = 0.541324854612918
 
double energy_prefactor = 0.0
 
double energy_exponent = 0.0
 
int ninput = 0
 
std::vector< double > gamma
 
std::vector< double > p
 
std::vector< double > q
 
std::vector< std::vector< double > > gammanl
 
std::vector< std::vector< double > > pnl
 
std::vector< std::vector< double > > qnl
 
std::vector< std::vector< double > > nablaRho
 
std::vector< double > chi_xi
 
double chi_p = 1.0
 
double chi_q = 1.0
 
std::vector< std::vector< double > > xi
 
std::vector< std::vector< double > > tanhxi
 
std::vector< std::vector< double > > tanhxi_nl
 
std::vector< double > tanhp
 
std::vector< double > tanhq
 
std::vector< double > chi_pnl
 
std::vector< double > chi_qnl
 
std::vector< std::vector< double > > tanh_pnl
 
std::vector< std::vector< double > > tanh_qnl
 
std::vector< std::vector< double > > tanhp_nl
 
std::vector< std::vector< double > > tanhq_nl
 
torch::DeviceType device_type = torch::kCPU
 
torch::Device device = torch::Device(torch::kCPU)
 
torch::Device device_CPU = torch::Device(torch::kCPU)
 
std::shared_ptr< NN_OFImplnn
 
double * enhancement_cpu_ptr = nullptr
 
double * gradient_cpu_ptr = nullptr
 
int nkernel = 1
 
bool ml_gamma = false
 
bool ml_p = false
 
bool ml_q = false
 
bool ml_tanhp = false
 
bool ml_tanhq = false
 
bool ml_gammanl = false
 
bool ml_pnl = false
 
bool ml_qnl = false
 
bool ml_xi = false
 
bool ml_tanhxi = false
 
bool ml_tanhxi_nl = false
 
bool ml_tanh_pnl = false
 
bool ml_tanh_qnl = false
 
bool ml_tanhp_nl = false
 
bool ml_tanhq_nl = false
 
std::vector< std::string > descriptor_type
 
std::vector< int > kernel_index
 
std::map< std::string, std::vector< int > > descriptor2kernel
 
std::map< std::string, std::vector< int > > descriptor2index
 
std::map< std::string, std::vector< bool > > gene_data_label
 

Constructor & Destructor Documentation

◆ ML_EXX()

elecstate::ML_EXX::ML_EXX ( )

◆ ~ML_EXX()

elecstate::ML_EXX::~ML_EXX ( )
virtual

Member Function Documentation

◆ generateTrainData()

void elecstate::ML_EXX::generateTrainData ( const double *const *  prho,
const ModulePW::PW_Basis pw_rho,
const double *  veff 
)

Generate training data for ML KEDF.

Parameters
prhocharge density
wtKEDF_WT
tfKEDF_TF
pw_rhoPW_Basis
veffeffective potential
Here is the call graph for this function:

◆ init_data()

void elecstate::ML_EXX::init_data ( const int &  nkernel,
const bool &  of_ml_gamma,
const bool &  of_ml_p,
const bool &  of_ml_q,
const bool &  of_ml_tanhp,
const bool &  of_ml_tanhq,
const std::vector< int > &  of_ml_gammanl,
const std::vector< int > &  of_ml_pnl,
const std::vector< int > &  of_ml_qnl,
const std::vector< int > &  of_ml_xi,
const std::vector< int > &  of_ml_tanhxi,
const std::vector< int > &  of_ml_tanhxi_nl,
const std::vector< int > &  of_ml_tanh_pnl,
const std::vector< int > &  of_ml_tanh_qnl,
const std::vector< int > &  of_ml_tanhp_nl,
const std::vector< int > &  of_ml_tanhq_nl 
)

Initialize the data for ML KEDF, and generate the mapping between descriptor and kernel.

Parameters
nkernelnumber of kernels
of_ml_gammawhether to use gamma descriptor
of_ml_pwhether to use p descriptor
of_ml_qwhether to use q descriptor
of_ml_tanhpwhether to use tanhp descriptor
of_ml_tanhqwhether to use tanhq descriptor
of_ml_gammanlwhether to use gammanl descriptor
of_ml_pnlwhether to use pnl descriptor
of_ml_qnlwhether to use qnl descriptor
of_ml_xiwhether to use xi descriptor
of_ml_tanhxiwhether to use tanhxi descriptor
of_ml_tanhxi_nlwhether to use tanhxi_nl descriptor
of_ml_tanh_pnlwhether to use tanh_pnl descriptor
of_ml_tanh_qnlwhether to use tanh_qnl descriptor
of_ml_tanhp_nlwhether to use tanhp_nl descriptor
of_ml_tanhq_nlwhether to use tanhq_nl descriptor
Here is the caller graph for this function:

◆ localTest()

void elecstate::ML_EXX::localTest ( const double *const *  pprho,
const ModulePW::PW_Basis pw_rho 
)

For test.

Parameters
prhocharge density
pw_rhoPW_Basis
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ml_potential()

void elecstate::ML_EXX::ml_potential ( const double *const *  prho,
const ModulePW::PW_Basis pw_rho,
ModuleBase::matrix rpotential 
)

Get the potential of ML KEDF, and add it into rpotential.

Parameters
prhocharge density
pw_rhoPW_Basis
rpotentialrpotential => rpotential + V_{ML}
Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_para()

void elecstate::ML_EXX::set_para ( const Input_para inp,
const UnitCell ucell_in,
const ModulePW::PW_Basis rho_basis_in 
)
Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ ml_exx_energy

double elecstate::ML_EXX::ml_exx_energy = 0.0

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