ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
Classes | Typedefs | Functions
LRI_CV_Tools Namespace Reference

Classes

struct  is_std_array
 
struct  is_std_array< std::array< T, N > >
 
struct  is_tensor
 
struct  is_tensor< RI::Tensor< T > >
 
struct  plus
 
struct  TinType
 
struct  TinType< RI::Tensor< T > >
 
struct  TinType< std::array< RI::Tensor< T >, N > >
 

Typedefs

using TC = std::array< int, 3 >
 
using TAC = std::pair< int, TC >
 
template<typename T >
using TLRI = std::map< int, std::map< TAC, RI::Tensor< T > > >
 

Functions

template<typename Tdata >
RI::Tensor< Tdata > cal_I (const RI::Tensor< Tdata > &m)
 
template<typename Tdata >
std::vector< std::vector< RI::Tensor< Tdata > > > cal_I (const std::vector< std::vector< RI::Tensor< Tdata > > > &ms)
 
template<typename Tdata >
RI::Tensor< Tdata > transform_Rm (const RI::Tensor< Tdata > &V)
 
template<typename Tdata >
std::array< RI::Tensor< Tdata >, 3 > transform_Rm (const std::array< RI::Tensor< Tdata >, 3 > &dV)
 
template<typename Tdata >
bool exist (const RI::Tensor< Tdata > &V)
 
template<typename T , std::size_t N>
bool exist (const std::array< T, N > &dV)
 
template<typename Tdata >
RI::Tensor< Tdata > mul1 (const RI::Tensor< Tdata > &t1, const RI::Tensor< Tdata > &t2)
 
template<typename T >
std::array< T, 3 > mul1 (const std::array< T, 3 > &t1, const T &t2)
 
template<typename Tdata >
std::vector< RI::Tensor< Tdata > > mul2 (const std::vector< std::vector< RI::Tensor< Tdata > > > &mat, const std::vector< RI::Tensor< Tdata > > &vec)
 
template<typename T1 , typename T2 >
std::array< T2, 3 > mul2 (const T1 &t1, const std::array< T2, 3 > &t2)
 
template<typename T >
RI::Tensor< Tmul2 (const T &t1, const RI::Tensor< T > &t2)
 
template<typename T , typename TkeyA , typename TkeyB , typename Tvalue >
std::map< TkeyA, std::map< TkeyB, Tvalue > > mul2 (const T &t1, const std::map< TkeyA, std::map< TkeyB, Tvalue > > &t2)
 
template<typename T , std::size_t N>
std::vector< std::array< T, N > > minus (const std::vector< std::array< T, N > > &v1, const std::vector< std::array< T, N > > &v2)
 
template<typename TkeyA , typename TkeyB , typename Tvalue , std::size_t N>
std::array< std::map< TkeyA, std::map< TkeyB, Tvalue > >, Nminus (std::array< std::map< TkeyA, std::map< TkeyB, Tvalue > >, N > &v1, std::array< std::map< TkeyA, std::map< TkeyB, Tvalue > >, N > &v2)
 
template<typename TkeyA , typename TkeyB , typename Tvalue , std::size_t N>
std::map< TkeyA, std::map< TkeyB, std::array< Tvalue, N > > > minus (std::map< TkeyA, std::map< TkeyB, std::array< Tvalue, N > > > &v1, std::map< TkeyA, std::map< TkeyB, std::array< Tvalue, N > > > &v2)
 
template<typename TkeyA , typename TkeyB , typename Tvalue >
std::map< TkeyA, std::map< TkeyB, Tvalue > > minus (std::map< TkeyA, std::map< TkeyB, Tvalue > > &v1, std::map< TkeyA, std::map< TkeyB, Tvalue > > &v2)
 
template<typename T , std::size_t N>
std::vector< std::array< T, N > > add (const std::vector< std::array< T, N > > &v1, const std::vector< std::array< T, N > > &v2)
 
template<typename TkeyA , typename TkeyB , typename Tvalue , std::size_t N>
std::array< std::map< TkeyA, std::map< TkeyB, Tvalue > >, Nadd (std::array< std::map< TkeyA, std::map< TkeyB, Tvalue > >, N > &v1, std::array< std::map< TkeyA, std::map< TkeyB, Tvalue > >, N > &v2)
 
template<typename TkeyA , typename TkeyB , typename Tvalue , std::size_t N>
std::map< TkeyA, std::map< TkeyB, std::array< Tvalue, N > > > add (std::map< TkeyA, std::map< TkeyB, std::array< Tvalue, N > > > &v1, std::map< TkeyA, std::map< TkeyB, std::array< Tvalue, N > > > &v2)
 
template<typename TkeyA , typename TkeyB , typename Tvalue >
std::map< TkeyA, std::map< TkeyB, Tvalue > > add (std::map< TkeyA, std::map< TkeyB, Tvalue > > &v1, std::map< TkeyA, std::map< TkeyB, Tvalue > > &v2)
 
template<typename T , std::size_t N>
std::array< T, Nnegative (const std::array< T, N > &v_in)
 
template<typename Tdata >
RI::Tensor< Tdata > transpose12 (const RI::Tensor< Tdata > &c_in)
 
template<typename T , std::size_t N>
std::array< T, Ntranspose12 (const std::array< T, N > &c_in)
 
template<typename T , std::size_t N>
std::array< std::vector< T >, Nchange_order (std::vector< std::array< T, N > > &&ds_in)
 
template<typename T , std::size_t N>
std::vector< std::array< T, N > > change_order (std::array< std::vector< T >, N > &&ds_in)
 
template<typename T , std::size_t N>
std::array< std::vector< std::vector< T > >, Nchange_order (std::vector< std::vector< std::array< T, N > > > &&ds_in)
 
template<typename TkeyA , typename TkeyB , typename Tvalue , std::size_t N>
std::array< std::map< TkeyA, std::map< TkeyB, Tvalue > >, Nchange_order (std::map< TkeyA, std::map< TkeyB, std::array< Tvalue, N > > > &&ds_in)
 
template<typename TkeyA , typename TkeyB , typename Tvalue , std::size_t N>
std::map< TkeyA, std::map< TkeyB, std::array< Tvalue, N > > > change_order (std::array< std::map< TkeyA, std::map< TkeyB, Tvalue > >, N > &&ds_in)
 
template<typename Tcell >
std::array< Tcell, 3 > cal_latvec_range (const double &rcut_times, const UnitCell &ucell, const std::vector< double > &orb_cutoff)
 
template<typename TA , typename Tcell , typename Tdata >
std::map< int, std::map< int, std::map< Abfs::Vector3_Order< double >, RI::Tensor< Tdata > > > > get_CVws (const UnitCell &ucell, const std::map< TA, std::map< std::pair< TA, std::array< Tcell, 3 > >, RI::Tensor< Tdata > > > &CVs)
 
template<typename TA , typename Tcell , typename Tdata >
std::map< int, std::map< int, std::map< Abfs::Vector3_Order< double >, std::array< RI::Tensor< Tdata >, 3 > > > > get_dCVws (const UnitCell &ucell, const std::map< TA, std::map< std::pair< TA, std::array< Tcell, 3 > >, std::array< RI::Tensor< Tdata >, 3 > > > &dCVs)
 
template<typename TA , typename TC , typename Tdata >
std::array< std::array< std::map< TA, std::map< std::pair< TA, TC >, RI::Tensor< Tdata > > >, 3 >, 3 > cal_dMRs (const UnitCell &ucell, const std::array< std::map< TA, std::map< std::pair< TA, TC >, RI::Tensor< Tdata > > >, 3 > &dMs)
 
template<typename T >
TLRI< Tread_Cs_ao (const std::string &file_path, const double &threshold=1e-10)
 
template<typename T >
void write_Cs_ao (const TLRI< T > &Vs, const std::string &file_path)
 
template<typename T >
TLRI< Tread_Vs_abf (const std::string &file_path, const double &threshold=1e-10)
 
template<typename T >
void write_Vs_abf (const TLRI< T > &Vs, const std::string &file_path)
 
template<typename Tdata , typename = std::enable_if_t<!is_std_array<Tdata>::value>>
void init_elem (Tdata &data, const size_t ndim0, const size_t ndim1)
 
template<typename T , std::size_t N>
void init_elem (std::array< RI::Tensor< T >, N > &data, const size_t ndim0, const size_t ndim1)
 
template<typename Tdata , typename = std::enable_if_t<!is_std_array<Tdata>::value && !is_tensor<Tdata>::value>>
void add_elem (Tdata &data, const Tdata &val, const Tdata &frac)
 
template<typename T , std::size_t N>
void add_elem (std::array< T, N > &data, const T &val, const T &frac)
 
template<typename Tdata , typename = std::enable_if_t<is_tensor<Tdata>::value>>
void add_elem (const Tdata &data, const int lmp, const int lmq, const typename TinType< Tdata >::type &val, const typename TinType< Tdata >::type &frac)
 
template<typename T , std::size_t N>
void add_elem (std::array< RI::Tensor< T >, N > &data, const int lmp, const int lmq, const std::array< T, N > &val, const T &frac)
 
template<typename Tdata , typename = std::enable_if_t<is_tensor<Tdata>::value>>
void add_elem (Tdata &data, const int lmp0, const int lmq0, const Tdata &val, const int lmp1, const int lmq1, const typename TinType< Tdata >::type &frac)
 
template<typename T , std::size_t N>
void add_elem (std::array< RI::Tensor< T >, N > &data, const int lmp0, const int lmq0, const std::array< RI::Tensor< T >, N > &val, const int lmp1, const int lmq1, const T &frac)
 
template<typename Tout , typename Tin >
RI::Tensor< Tout > convert (RI::Tensor< Tin > &&data)
 
template<typename Tout , typename Tin , std::size_t N>
std::array< RI::Tensor< Tout >, Nconvert (std::array< RI::Tensor< Tin >, N > &&data)
 
template<typename T >
double absmax (const RI::Tensor< T > &t)
 

Typedef Documentation

◆ TAC

typedef std::pair< int, TC > LRI_CV_Tools::TAC

◆ TC

typedef std::array< int, 3 > LRI_CV_Tools::TC

◆ TLRI

template<typename T >
using LRI_CV_Tools::TLRI = typedef std::map<int, std::map<TAC, RI::Tensor<T> >>

Function Documentation

◆ absmax()

template<typename T >
double LRI_CV_Tools::absmax ( const RI::Tensor< T > &  t)
inline
Here is the caller graph for this function:

◆ add() [1/4]

template<typename T , std::size_t N>
std::vector< std::array< T, N > > LRI_CV_Tools::add ( const std::vector< std::array< T, N > > &  v1,
const std::vector< std::array< T, N > > &  v2 
)
extern
Here is the caller graph for this function:

◆ add() [2/4]

template<typename TkeyA , typename TkeyB , typename Tvalue , std::size_t N>
std::array< std::map< TkeyA, std::map< TkeyB, Tvalue > >, N > LRI_CV_Tools::add ( std::array< std::map< TkeyA, std::map< TkeyB, Tvalue > >, N > &  v1,
std::array< std::map< TkeyA, std::map< TkeyB, Tvalue > >, N > &  v2 
)
extern
Here is the call graph for this function:

◆ add() [3/4]

template<typename TkeyA , typename TkeyB , typename Tvalue , std::size_t N>
std::map< TkeyA, std::map< TkeyB, std::array< Tvalue, N > > > LRI_CV_Tools::add ( std::map< TkeyA, std::map< TkeyB, std::array< Tvalue, N > > > &  v1,
std::map< TkeyA, std::map< TkeyB, std::array< Tvalue, N > > > &  v2 
)
inline
Here is the call graph for this function:

◆ add() [4/4]

template<typename TkeyA , typename TkeyB , typename Tvalue >
std::map< TkeyA, std::map< TkeyB, Tvalue > > LRI_CV_Tools::add ( std::map< TkeyA, std::map< TkeyB, Tvalue > > &  v1,
std::map< TkeyA, std::map< TkeyB, Tvalue > > &  v2 
)
extern

◆ add_elem() [1/6]

template<typename Tdata , typename = std::enable_if_t<is_tensor<Tdata>::value>>
void LRI_CV_Tools::add_elem ( const Tdata &  data,
const int  lmp,
const int  lmq,
const typename TinType< Tdata >::type &  val,
const typename TinType< Tdata >::type &  frac 
)
inline

◆ add_elem() [2/6]

template<typename T , std::size_t N>
void LRI_CV_Tools::add_elem ( std::array< RI::Tensor< T >, N > &  data,
const int  lmp,
const int  lmq,
const std::array< T, N > &  val,
const T frac 
)
extern

◆ add_elem() [3/6]

template<typename T , std::size_t N>
void LRI_CV_Tools::add_elem ( std::array< RI::Tensor< T >, N > &  data,
const int  lmp0,
const int  lmq0,
const std::array< RI::Tensor< T >, N > &  val,
const int  lmp1,
const int  lmq1,
const T frac 
)
extern

◆ add_elem() [4/6]

template<typename T , std::size_t N>
void LRI_CV_Tools::add_elem ( std::array< T, N > &  data,
const T val,
const T frac 
)
extern

◆ add_elem() [5/6]

template<typename Tdata , typename = std::enable_if_t<is_tensor<Tdata>::value>>
void LRI_CV_Tools::add_elem ( Tdata &  data,
const int  lmp0,
const int  lmq0,
const Tdata &  val,
const int  lmp1,
const int  lmq1,
const typename TinType< Tdata >::type &  frac 
)
inline

◆ add_elem() [6/6]

template<typename Tdata , typename = std::enable_if_t<!is_std_array<Tdata>::value && !is_tensor<Tdata>::value>>
void LRI_CV_Tools::add_elem ( Tdata &  data,
const Tdata &  val,
const Tdata &  frac 
)
inline

◆ cal_dMRs()

template<typename TA , typename TC , typename Tdata >
std::array< std::array< std::map< TA, std::map< std::pair< TA, TC >, RI::Tensor< Tdata > > >, 3 >, 3 > LRI_CV_Tools::cal_dMRs ( const UnitCell ucell,
const std::array< std::map< TA, std::map< std::pair< TA, TC >, RI::Tensor< Tdata > > >, 3 > &  dMs 
)
extern
Here is the call graph for this function:

◆ cal_I() [1/2]

template<typename Tdata >
RI::Tensor< Tdata > LRI_CV_Tools::cal_I ( const RI::Tensor< Tdata > &  m)
extern
Here is the call graph for this function:
Here is the caller graph for this function:

◆ cal_I() [2/2]

template<typename Tdata >
std::vector< std::vector< RI::Tensor< Tdata > > > LRI_CV_Tools::cal_I ( const std::vector< std::vector< RI::Tensor< Tdata > > > &  ms)
extern
Here is the call graph for this function:

◆ cal_latvec_range()

template<typename Tcell >
std::array< Tcell, 3 > LRI_CV_Tools::cal_latvec_range ( const double &  rcut_times,
const UnitCell ucell,
const std::vector< double > &  orb_cutoff 
)
extern
Here is the call graph for this function:

◆ change_order() [1/5]

template<typename TkeyA , typename TkeyB , typename Tvalue , std::size_t N>
std::map< TkeyA, std::map< TkeyB, std::array< Tvalue, N > > > LRI_CV_Tools::change_order ( std::array< std::map< TkeyA, std::map< TkeyB, Tvalue > >, N > &&  ds_in)
extern

◆ change_order() [2/5]

template<typename T , std::size_t N>
std::vector< std::array< T, N > > LRI_CV_Tools::change_order ( std::array< std::vector< T >, N > &&  ds_in)

◆ change_order() [3/5]

template<typename TkeyA , typename TkeyB , typename Tvalue , std::size_t N>
std::array< std::map< TkeyA, std::map< TkeyB, Tvalue > >, N > LRI_CV_Tools::change_order ( std::map< TkeyA, std::map< TkeyB, std::array< Tvalue, N > > > &&  ds_in)
extern

◆ change_order() [4/5]

template<typename T , std::size_t N>
std::array< std::vector< T >, N > LRI_CV_Tools::change_order ( std::vector< std::array< T, N > > &&  ds_in)
extern
Here is the caller graph for this function:

◆ change_order() [5/5]

template<typename T , std::size_t N>
std::array< std::vector< std::vector< T > >, N > LRI_CV_Tools::change_order ( std::vector< std::vector< std::array< T, N > > > &&  ds_in)
extern

◆ convert() [1/2]

template<typename Tout , typename Tin >
RI::Tensor< Tout > LRI_CV_Tools::convert ( RI::Tensor< Tin > &&  data)
inline

◆ convert() [2/2]

template<typename Tout , typename Tin , std::size_t N>
std::array< RI::Tensor< Tout >, N > LRI_CV_Tools::convert ( std::array< RI::Tensor< Tin >, N > &&  data)
extern

◆ exist() [1/2]

template<typename Tdata >
bool LRI_CV_Tools::exist ( const RI::Tensor< Tdata > &  V)
inline
Here is the caller graph for this function:

◆ exist() [2/2]

template<typename T , std::size_t N>
bool LRI_CV_Tools::exist ( const std::array< T, N > &  dV)
inline

◆ get_CVws()

template<typename TA , typename Tcell , typename Tdata >
std::map< int, std::map< int, std::map< Abfs::Vector3_Order< double >, RI::Tensor< Tdata > > > > LRI_CV_Tools::get_CVws ( const UnitCell ucell,
const std::map< TA, std::map< std::pair< TA, std::array< Tcell, 3 > >, RI::Tensor< Tdata > > > &  CVs 
)
extern
Here is the call graph for this function:

◆ get_dCVws()

template<typename TA , typename Tcell , typename Tdata >
std::map< int, std::map< int, std::map< Abfs::Vector3_Order< double >, std::array< RI::Tensor< Tdata >, 3 > > > > LRI_CV_Tools::get_dCVws ( const UnitCell ucell,
const std::map< TA, std::map< std::pair< TA, std::array< Tcell, 3 > >, std::array< RI::Tensor< Tdata >, 3 > > > &  dCVs 
)
extern
Here is the call graph for this function:

◆ init_elem() [1/2]

template<typename T , std::size_t N>
void LRI_CV_Tools::init_elem ( std::array< RI::Tensor< T >, N > &  data,
const size_t  ndim0,
const size_t  ndim1 
)
extern

◆ init_elem() [2/2]

template<typename Tdata , typename = std::enable_if_t<!is_std_array<Tdata>::value>>
void LRI_CV_Tools::init_elem ( Tdata &  data,
const size_t  ndim0,
const size_t  ndim1 
)
inline

◆ minus() [1/4]

template<typename T , std::size_t N>
std::vector< std::array< T, N > > LRI_CV_Tools::minus ( const std::vector< std::array< T, N > > &  v1,
const std::vector< std::array< T, N > > &  v2 
)
extern
Here is the caller graph for this function:

◆ minus() [2/4]

template<typename TkeyA , typename TkeyB , typename Tvalue , std::size_t N>
std::array< std::map< TkeyA, std::map< TkeyB, Tvalue > >, N > LRI_CV_Tools::minus ( std::array< std::map< TkeyA, std::map< TkeyB, Tvalue > >, N > &  v1,
std::array< std::map< TkeyA, std::map< TkeyB, Tvalue > >, N > &  v2 
)
extern
Here is the call graph for this function:

◆ minus() [3/4]

template<typename TkeyA , typename TkeyB , typename Tvalue , std::size_t N>
std::map< TkeyA, std::map< TkeyB, std::array< Tvalue, N > > > LRI_CV_Tools::minus ( std::map< TkeyA, std::map< TkeyB, std::array< Tvalue, N > > > &  v1,
std::map< TkeyA, std::map< TkeyB, std::array< Tvalue, N > > > &  v2 
)
inline
Here is the call graph for this function:

◆ minus() [4/4]

template<typename TkeyA , typename TkeyB , typename Tvalue >
std::map< TkeyA, std::map< TkeyB, Tvalue > > LRI_CV_Tools::minus ( std::map< TkeyA, std::map< TkeyB, Tvalue > > &  v1,
std::map< TkeyA, std::map< TkeyB, Tvalue > > &  v2 
)
extern

◆ mul1() [1/2]

template<typename Tdata >
RI::Tensor< Tdata > LRI_CV_Tools::mul1 ( const RI::Tensor< Tdata > &  t1,
const RI::Tensor< Tdata > &  t2 
)
extern
Here is the caller graph for this function:

◆ mul1() [2/2]

template<typename T >
std::array< T, 3 > LRI_CV_Tools::mul1 ( const std::array< T, 3 > &  t1,
const T t2 
)
extern
Here is the call graph for this function:

◆ mul2() [1/4]

template<typename Tdata >
std::vector< RI::Tensor< Tdata > > LRI_CV_Tools::mul2 ( const std::vector< std::vector< RI::Tensor< Tdata > > > &  mat,
const std::vector< RI::Tensor< Tdata > > &  vec 
)
extern
Here is the caller graph for this function:

◆ mul2() [2/4]

template<typename T >
RI::Tensor< T > LRI_CV_Tools::mul2 ( const T t1,
const RI::Tensor< T > &  t2 
)
extern

◆ mul2() [3/4]

template<typename T , typename TkeyA , typename TkeyB , typename Tvalue >
std::map< TkeyA, std::map< TkeyB, Tvalue > > LRI_CV_Tools::mul2 ( const T t1,
const std::map< TkeyA, std::map< TkeyB, Tvalue > > &  t2 
)
extern
Here is the call graph for this function:

◆ mul2() [4/4]

template<typename T1 , typename T2 >
std::array< T2, 3 > LRI_CV_Tools::mul2 ( const T1 &  t1,
const std::array< T2, 3 > &  t2 
)
extern
Here is the call graph for this function:

◆ negative()

template<typename T , std::size_t N>
std::array< T, N > LRI_CV_Tools::negative ( const std::array< T, N > &  v_in)
extern
Here is the caller graph for this function:

◆ read_Cs_ao()

template<typename T >
TLRI< T > LRI_CV_Tools::read_Cs_ao ( const std::string &  file_path,
const double &  threshold = 1e-10 
)
Here is the call graph for this function:

◆ read_Vs_abf()

template<typename T >
TLRI< T > LRI_CV_Tools::read_Vs_abf ( const std::string &  file_path,
const double &  threshold = 1e-10 
)
Here is the call graph for this function:

◆ transform_Rm() [1/2]

template<typename Tdata >
RI::Tensor< Tdata > LRI_CV_Tools::transform_Rm ( const RI::Tensor< Tdata > &  V)
inline
Here is the caller graph for this function:

◆ transform_Rm() [2/2]

template<typename Tdata >
std::array< RI::Tensor< Tdata >, 3 > LRI_CV_Tools::transform_Rm ( const std::array< RI::Tensor< Tdata >, 3 > &  dV)
inline

◆ transpose12() [1/2]

template<typename Tdata >
RI::Tensor< Tdata > LRI_CV_Tools::transpose12 ( const RI::Tensor< Tdata > &  c_in)
Here is the caller graph for this function:

◆ transpose12() [2/2]

template<typename T , std::size_t N>
std::array< T, N > LRI_CV_Tools::transpose12 ( const std::array< T, N > &  c_in)
Here is the call graph for this function:

◆ write_Cs_ao()

template<typename T >
void LRI_CV_Tools::write_Cs_ao ( const TLRI< T > &  Vs,
const std::string &  file_path 
)
Here is the caller graph for this function:

◆ write_Vs_abf()

template<typename T >
void LRI_CV_Tools::write_Vs_abf ( const TLRI< T > &  Vs,
const std::string &  file_path 
)