ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
deepks_spre.h
Go to the documentation of this file.
1#ifndef DEEPKS_SPRE_H
2#define DEEPKS_SPRE_H
3
4#ifdef __MLALGO
5
9#include "source_base/timer.h"
14
15#include <torch/script.h>
16#include <torch/torch.h>
17
18namespace DeePKS_domain
19{
20//------------------------
21// deepks_spre.cpp
22//------------------------
23
24// This file contains 2 subroutines for calculating,
25// 1. cal_gdmepsl, calculating gdmepsl
26// 2. cal_gvepsl : gvepsl is used for training with stress label, which is derivative of
27// descriptors wrt strain tensor, calculated by
28// d(des)/d\epsilon_{ab} = d(pdm)/d\epsilon_{ab} * d(des)/d(pdm) = gdmepsl * gvdm
29// using einsum
30
31// calculate the gradient of pdm with regard to atomic virial stress tensor
32// d/d\epsilon D_{Inl,mm'}
33template <typename TK>
34void cal_gdmepsl( // const ModuleBase::matrix& dm,
35 const int lmaxd,
36 const int inlmax,
37 const int nks,
38 const std::vector<ModuleBase::Vector3<double>>& kvec_d,
39 std::vector<hamilt::HContainer<double>*> phialpha,
40 const ModuleBase::IntArray* inl_index,
42 const UnitCell& ucell,
43 const LCAO_Orbitals& orb,
44 const Parallel_Orbitals& pv,
45 const Grid_Driver& GridD,
46 torch::Tensor& gdmepsl);
47
48void cal_gvepsl(const int nat,
49 const int inlmax,
50 const int des_per_atom,
51 const std::vector<int>& inl2l,
52 const std::vector<torch::Tensor>& gevdm,
53 const torch::Tensor& gdmepsl,
54 torch::Tensor& gvepsl,
55 const int rank);
56} // namespace DeePKS_domain
57#endif
58#endif
Definition sltk_grid_driver.h:43
Definition ORB_read.h:19
Integer array.
Definition intarray.h:20
3 elements vector
Definition vector3.h:22
Definition parallel_orbitals.h:9
Definition unitcell.h:16
Definition hcontainer.h:144
Definition deepks_basic.h:14
void cal_gvepsl(const int nat, const int inlmax, const int des_per_atom, const std::vector< int > &inl2l, const std::vector< torch::Tensor > &gevdm, const torch::Tensor &gdmepsl, torch::Tensor &gvepsl, const int rank)
Definition deepks_spre.cpp:158
void cal_gdmepsl(const int lmaxd, const int inlmax, const int nks, const std::vector< ModuleBase::Vector3< double > > &kvec_d, std::vector< hamilt::HContainer< double > * > phialpha, const ModuleBase::IntArray *inl_index, const hamilt::HContainer< double > *dmr, const UnitCell &ucell, const LCAO_Orbitals &orb, const Parallel_Orbitals &pv, const Grid_Driver &GridD, torch::Tensor &gdmepsl)
Definition deepks_spre.cpp:18