KIDS  ver-0.0.1
KIDS : Kernel Integrated Dynamics Simulator
Loading...
Searching...
No Matches
PROJECT_NS Namespace Reference

< http://warp.povusers.org/FunctionParser/fparser.html More...

Namespaces

namespace  DATA
 
namespace  Dimension
 Dimension namespace locates read parameters for system size.
 
namespace  FORCE_OPT
 

Classes

class  Context
 
class  DataSet
 DataSet class is a tree-structured container for storage of Tensor and other DataSet. More...
 
struct  DimenHelper
 DimenHelper is a struct control dimensional utils on the orginal/einsum index for a given tensor. More...
 
class  EinsumHelper
 
struct  EinsumIdx
 EinsumIdx is a struct store information of index used in einsum operation. More...
 
class  elec_utils
 
class  Expression
 A class representing a mathematical expression. More...
 
class  Handler
 this class provides a control of simulation More...
 
class  Kernel
 this class provides the container and implementation of algorithms More...
 
class  Kernel_Conserve
 This class implements a process for energy conservation. More...
 
class  Kernel_Dump_DataSet
 this class implements a process for dumping current data with stuctured format More...
 
class  Kernel_Elec
 this class implements calculation/utils for electronic DOFs: More...
 
class  Kernel_Elec_NAD
 initialization kernel for electonic DOFs in NAD More...
 
class  Kernel_Elec_Switch
 initialization kernel for electonic DOFs in NAD More...
 
class  Kernel_GWP
 
class  Kernel_Iter
 Minimal iterator for integration of the equations of motion. More...
 
class  Kernel_Iter_Adapt
 
class  Kernel_Load_DataSet
 this class implements a process for loading data in state stucture More...
 
class  Kernel_NADForce
 this class implements process of calculation of nuclear force for nonadiabatic dynamics More...
 
class  Kernel_Prioritization
 This class specifies the kernels that prioritizing other kernels. More...
 
class  Kernel_Random
 Kernel_Random manipulation of random engine and numbers. More...
 
class  Kernel_Read_Dimensions
 This class specifies the kernels that initialize the dimensions of data. More...
 
class  Kernel_Recorder
 
class  Kernel_Representation
 Kernel_Representationfor solving basis transformation for electronic problems. More...
 
class  Kernel_Update_c
 
class  Kernel_Update_p
 
class  Kernel_Update_T
 
class  Kernel_Update_x
 
class  KernelInfo
 
struct  kids_error
 
struct  MNDOKW
 
class  Model_Bath
 
class  Model_CED
 
class  Model_ElectronTransfer
 
class  Model_Hello
 
class  Model_HO
 
class  Model_Interf_MNDO
 
class  Model_LVCM
 
class  MODEL_MD1D
 
class  Model_NAD1D
 
class  Model_SystemBath
 
class  MPI_Guard
 
class  Node
 Node class is an abstract interface. More...
 
class  Param
 this class provides an interface wrapper for the parameter data. More...
 
struct  param_warning
 
class  Platform
 
class  Result
 
struct  RuleEvaluator
 Represents a rule for evaluating an expression. More...
 
class  RuleSet
 Represents a handler for input/output operations related to expressions. More...
 
class  Shape
 Shape class provide information about of a Tensor's shape. More...
 
class  Solver
 
struct  Status
 
class  System
 
class  Tensor
 Tensor class is the container for array-like data. More...
 
class  VARIABLE
 
class  VARIABLE_BASE
 
struct  VariableDescriptor
 Represents a variable token in an expression rule. More...
 

Typedefs

using Basic_Dimen = std::size_t
 
using Basic_Shape = std::vector<std::size_t>
 
using kids_void = void
 Alias for void type.
 
using kids_bool = bool
 Alias for bool type.
 
using kids_int = int
 Alias for integer type.
 
using kids_bint = int
 Alias for integer type.
 
using kids_real = double
 Alias for real number type.
 
using kids_complex = std::complex<double>
 Alias for complex number type.
 
using kids_str = std::string
 Alias for string type.
 
using kids_param = Param
 Alias for Param type (to be defined later)
 
using kids_dataset = DataSet
 Alias for DataSet type (to be defined later)
 
template<class T >
using EigVX = Eigen::Matrix<T, Eigen::Dynamic, 1, EigMajor>
 
template<class T >
using EigMX = Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic, EigMajor>
 
template<class T >
using EigAX = Eigen::Array<T, Eigen::Dynamic, Eigen::Dynamic, EigMajor>
 
using EigVXr = EigVX<kids_real>
 
using EigVXc = EigVX<kids_complex>
 
using EigMXr = EigMX<kids_real>
 
using EigMXc = EigMX<kids_complex>
 
using EigAXr = EigMX<kids_real>
 
using EigAXc = EigMX<kids_complex>
 
using MapVXr = Eigen::Map<EigVXr>
 
using MapVXc = Eigen::Map<EigVXc>
 
using MapMXr = Eigen::Map<EigMXr>
 
using MapMXc = Eigen::Map<EigMXc>
 
using MapAXr = Eigen::Map<EigAXr>
 
using MapAXc = Eigen::Map<EigAXc>
 
using MNDOKW_map = std::map<std::string, std::string>
 

Enumerations

enum  kids_dtype {
  kids_void_type , kids_bool_type , kids_int_type , kids_real_type ,
  kids_complex_type , kids_str_type , kids_param_type , kids_dataset_type
}
 

Functions

template<typename T >
void einsum (EinsumHelper &EH, const std::vector< T * > &data_inputs, T *data_output)
 
template<typename T >
void einsum (const std::string &einsum_expression, std::vector< T * > data_inputs, const std::vector< std::vector< std::size_t > > &shape_inputs, T *data_output, const std::vector< std::size_t > &shape_output={})
 
constexpr int FMT_WIDTH (int X)
 control the io printing format
 
bool ARRAY_ISFINITE (kids_real *A, size_t n)
 Check if all elements of a real array are finite.
 
bool ARRAY_ISFINITE (kids_complex *A, size_t n)
 Check if all elements of a complex array are finite.
 
void ARRAY_CLEAR (kids_int *A, size_t N)
 Set all elements of an integer array to zero.
 
void ARRAY_CLEAR (kids_real *A, size_t N)
 Set all elements of a real array to zero.
 
void ARRAY_CLEAR (kids_complex *A, size_t N)
 Set all elements of a complex array to zero.
 
void ARRAY_MATMUL (kids_real *A, kids_real *B, kids_real *C, size_t N1, size_t N2, size_t N3)
 Perform matrix multiplication where A = B * C for real matrices.
 
void ARRAY_MATMUL (kids_complex *A, kids_complex *B, kids_complex *C, size_t N1, size_t N2, size_t N3)
 Perform matrix multiplication where A = B * C for complex matrices.
 
void ARRAY_MATMUL (kids_complex *A, kids_real *B, kids_complex *C, size_t N1, size_t N2, size_t N3)
 Perform matrix multiplication where A = B * C for complex and real matrices.
 
void ARRAY_MATMUL (kids_complex *A, kids_complex *B, kids_real *C, size_t N1, size_t N2, size_t N3)
 Perform matrix multiplication where A = B * C for complex and real matrices.
 
void ARRAY_MATMUL_TRANS1 (kids_real *A, kids_real *B, kids_real *C, size_t N1, size_t N2, size_t N3)
 Perform matrix multiplication where A = B^T * C for real matrices.
 
void ARRAY_MATMUL_TRANS1 (kids_complex *A, kids_complex *B, kids_complex *C, size_t N1, size_t N2, size_t N3)
 Perform matrix multiplication where A = B^T * C for complex matrices.
 
void ARRAY_MATMUL_TRANS1 (kids_complex *A, kids_real *B, kids_complex *C, size_t N1, size_t N2, size_t N3)
 Perform matrix multiplication where A = B^T * C for complex and real matrices.
 
void ARRAY_MATMUL_TRANS1 (kids_complex *A, kids_complex *B, kids_real *C, size_t N1, size_t N2, size_t N3)
 Perform matrix multiplication where A = B^T * C for complex and real matrices.
 
void ARRAY_MATMUL_TRANS2 (kids_real *A, kids_real *B, kids_real *C, size_t N1, size_t N2, size_t N3)
 Perform matrix multiplication where A = B * C^T for real matrices.
 
void ARRAY_MATMUL_TRANS2 (kids_complex *A, kids_complex *B, kids_complex *C, size_t N1, size_t N2, size_t N3)
 Perform matrix multiplication where A = B * C^T for complex matrices.
 
void ARRAY_MATMUL_TRANS2 (kids_complex *A, kids_real *B, kids_complex *C, size_t N1, size_t N2, size_t N3)
 Perform matrix multiplication where A = B * C^T for complex and real matrices.
 
void ARRAY_MATMUL_TRANS2 (kids_complex *A, kids_complex *B, kids_real *C, size_t N1, size_t N2, size_t N3)
 Perform matrix multiplication where A = B * C^T for complex and real matrices.
 
void ARRAY_OUTER_TRANS2 (kids_real *A, kids_real *B, kids_real *C, size_t N1, size_t N2)
 Perform outer product with transpose where A = B^T * C for real matrices.
 
void ARRAY_OUTER_TRANS2 (kids_complex *A, kids_complex *B, kids_complex *C, size_t N1, size_t N2)
 Perform outer product with transpose where A = B^T * C for complex matrices.
 
void ARRAY_MATMUL3_TRANS1 (kids_real *A, kids_real *B, kids_real *C, kids_real *D, size_t N1, size_t N2, size_t N0, size_t N3)
 Perform matrix multiplication where A = B^T * C * D for real matrices.
 
void ARRAY_MATMUL3_TRANS1 (kids_complex *A, kids_complex *B, kids_complex *C, kids_complex *D, size_t N1, size_t N2, size_t N0, size_t N3)
 Perform matrix multiplication where A = B^T * C * D for complex matrices.
 
void ARRAY_MATMUL3_TRANS1 (kids_complex *A, kids_real *B, kids_complex *C, kids_real *D, size_t N1, size_t N2, size_t N0, size_t N3)
 Perform matrix multiplication where A = B^T * C * D for complex and real matrices.
 
void ARRAY_MATMUL3_TRANS1 (kids_complex *A, kids_complex *B, kids_real *C, kids_complex *D, size_t N1, size_t N2, size_t N0, size_t N3)
 Perform matrix multiplication where A = B^T * C * D for complex and real matrices.
 
void ARRAY_MATMUL3_TRANS2 (kids_real *A, kids_real *B, kids_real *C, kids_real *D, size_t N1, size_t N2, size_t N0, size_t N3)
 Perform matrix multiplication where A = B * C * D^T for real matrices.
 
void ARRAY_MATMUL3_TRANS2 (kids_complex *A, kids_complex *B, kids_complex *C, kids_complex *D, size_t N1, size_t N2, size_t N0, size_t N3)
 Perform matrix multiplication where A = B * C * D^T for complex matrices.
 
void ARRAY_MATMUL3_TRANS2 (kids_complex *A, kids_real *B, kids_complex *C, kids_real *D, size_t N1, size_t N2, size_t N0, size_t N3)
 Perform matrix multiplication where A = B * C * D^T for complex and real matrices.
 
void ARRAY_MATMUL3_TRANS2 (kids_complex *A, kids_complex *B, kids_real *C, kids_complex *D, size_t N1, size_t N2, size_t N0, size_t N3)
 Perform matrix multiplication where A = B * C * D^T for complex and real matrices.
 
kids_real ARRAY_TRACE2 (kids_real *B, kids_real *C, size_t N1, size_t N2)
 Compute the trace of the matrix product B * C for real matrices.
 
kids_complex ARRAY_TRACE2 (kids_complex *B, kids_complex *C, size_t N1, size_t N2)
 Compute the trace of the matrix product B * C for complex matrices.
 
kids_complex ARRAY_TRACE2 (kids_complex *B, kids_real *C, size_t N1, size_t N2)
 Compute the trace of the matrix product B * C for complex and real matrices.
 
kids_complex ARRAY_TRACE2 (kids_real *B, kids_complex *C, size_t N1, size_t N2)
 Compute the trace of the matrix product B * C for real and complex matrices.
 
kids_real ARRAY_TRACE2_DIAG (kids_real *B, kids_real *C, size_t N1, size_t N2)
 Compute the trace of the diagonal elements of the matrix product B * C for real matrices.
 
kids_complex ARRAY_TRACE2_DIAG (kids_complex *B, kids_complex *C, size_t N1, size_t N2)
 Compute the trace of the diagonal elements of the matrix product B * C for complex matrices.
 
kids_complex ARRAY_TRACE2_DIAG (kids_complex *B, kids_real *C, size_t N1, size_t N2)
 Compute the trace of the diagonal elements of the matrix product B * C for complex and real matrices.
 
kids_complex ARRAY_TRACE2_DIAG (kids_real *B, kids_complex *C, size_t N1, size_t N2)
 Compute the trace of the diagonal elements of the matrix product B * C for real and complex matrices.
 
kids_real ARRAY_TRACE2_OFFD (kids_real *B, kids_real *C, size_t N1, size_t N2)
 Compute the trace of the off-diagonal elements of the matrix product B * C for real matrices.
 
kids_complex ARRAY_TRACE2_OFFD (kids_complex *B, kids_complex *C, size_t N1, size_t N2)
 Compute the trace of the off-diagonal elements of the matrix product B * C for complex matrices.
 
kids_complex ARRAY_TRACE2_OFFD (kids_complex *B, kids_real *C, size_t N1, size_t N2)
 Compute the trace of the off-diagonal elements of the matrix product B * C for complex and real matrices.
 
kids_complex ARRAY_TRACE2_OFFD (kids_real *B, kids_complex *C, size_t N1, size_t N2)
 Compute the trace of the off-diagonal elements of the matrix product B * C for real and complex matrices.
 
kids_real ARRAY_INNER_TRANS1 (kids_real *B, kids_real *C, size_t N1)
 Compute the inner product of the transpose of B with C for real matrices.
 
kids_complex ARRAY_INNER_TRANS1 (kids_complex *B, kids_complex *C, size_t N1)
 Compute the inner product of the conjugate transpose of B with C for complex matrices.
 
kids_complex ARRAY_INNER_TRANS1 (kids_complex *B, kids_real *C, size_t N1)
 Compute the inner product of the conjugate transpose of B with C for complex and real matrices.
 
kids_complex ARRAY_INNER_TRANS1 (kids_real *B, kids_complex *C, size_t N1)
 Compute the inner product of the transpose of B with C for real and complex matrices.
 
kids_real ARRAY_INNER_VMV_TRANS1 (kids_real *B, kids_real *C, kids_real *D, size_t N1, size_t N2)
 Compute the inner product of the transpose of the real vector B with the matrix C, element-wise multiplication with the real vector D.
 
kids_complex ARRAY_INNER_VMV_TRANS1 (kids_complex *B, kids_complex *C, kids_complex *D, size_t N1, size_t N2)
 Compute the inner product of the conjugate transpose of the complex vector B with the complex matrix C, element-wise multiplication with the complex vector D.
 
kids_complex ARRAY_INNER_VMV_TRANS1 (kids_complex *B, kids_real *C, kids_complex *D, size_t N1, size_t N2)
 Compute the inner product of the conjugate transpose of the complex vector B with the real matrix C, element-wise multiplication with the complex vector D.
 
kids_complex ARRAY_INNER_VMV_TRANS1 (kids_real *B, kids_complex *C, kids_real *D, size_t N1, size_t N2)
 Compute the inner product of the transpose of the real vector B with the complex matrix C, element-wise multiplication with the real vector D.
 
void ARRAY_EYE (kids_real *A, size_t n)
 Generate an identity matrix of size n for real numbers.
 
void ARRAY_EYE (kids_complex *A, size_t n)
 Generate an identity matrix of size n for complex numbers.
 
void ARRAY_MAT_DIAG (kids_real *A, kids_real *B, size_t N1)
 Copy the diagonal elements from matrix B to matrix A for real matrices.
 
void ARRAY_MAT_DIAG (kids_complex *A, kids_complex *B, size_t N1)
 Copy the diagonal elements from matrix B to matrix A for complex matrices.
 
void ARRAY_MAT_DIAG (kids_complex *A, kids_real *B, size_t N1)
 Copy the diagonal elements from matrix B to matrix A for complex and real matrices.
 
void ARRAY_MAT_OFFD (kids_real *A, kids_real *B, size_t N1)
 Copy the off-diagonal elements from matrix B to matrix A for real matrices.
 
void ARRAY_MAT_OFFD (kids_complex *A, kids_complex *B, size_t N1)
 Copy the off-diagonal elements from matrix B to matrix A for complex matrices.
 
void ARRAY_MAT_OFFD (kids_complex *A, kids_real *B, size_t N1)
 Copy the off-diagonal elements from matrix B to matrix A for complex and real matrices.
 
void LinearSolve (kids_real *x, kids_real *A, kids_real *b, size_t N)
 Solve a linear system Ax = b for real matrices.
 
void EigenSolve (kids_real *E, kids_real *T, kids_real *A, size_t N)
 Solve the eigenvalue problem for real matrices.
 
void EigenSolve (kids_real *E, kids_complex *T, kids_complex *A, size_t N)
 Solve the eigenvalue problem for (hermite) complex matrices.
 
void EigenSolve (kids_complex *E, kids_complex *T, kids_complex *A, size_t N)
 Solve the eigenvalue problem for general complex matrices.
 
void PseudoInverse (kids_real *A, kids_real *invA, size_t N, kids_real e=1E-5)
 Compute the pseudo-inverse of a matrix for real numbers.
 
void MatrixInverse (kids_real *invA, kids_real *A, size_t N)
 Compute the inverse of a matrix for real numbers.
 
void ARRAY_INV_MAT (kids_complex *invA, kids_complex *A, size_t N)
 Compute the inverse of a matrix for complex numbers.
 
void ARRAY_EXP_MAT_GENERAL (kids_complex *expkA, kids_complex *A, kids_complex k, size_t N)
 
void ARRAY_CORRECT_U (kids_complex *U, size_t N)
 
void ARRAY_TRANSPOSE (kids_real *A, size_t N1, size_t N2)
 
void ARRAY_TRANSPOSE (kids_complex *A, size_t N1, size_t N2)
 
template<typename T >
kids_dtype as_enum ()
 Converts a C++ type to its corresponding kids_dtype enumeration.
 
template<typename T >
std::string as_str ()
 Converts a C++ type to its string representation.
 
 DEFINE_BIND_UTILS_FOR (kids_void)
 
 DEFINE_BIND_UTILS_FOR (kids_int)
 
 DEFINE_BIND_UTILS_FOR (kids_bool)
 
 DEFINE_BIND_UTILS_FOR (kids_real)
 
 DEFINE_BIND_UTILS_FOR (kids_complex)
 
 DEFINE_BIND_UTILS_FOR (kids_str)
 
 DEFINE_BIND_UTILS_FOR (kids_param)
 
 DEFINE_BIND_UTILS_FOR (kids_dataset)
 
std::string _subreplace (std::string resource_str, std::string sub_str, std::string new_str)
 
std::map< std::string, Kernel * > & getDictOfKernels ()
 
static void ARRAY_MATMUL_UNIVERSAL (kids_real *A, kids_real *B, kids_real *C, size_t N1, size_t N2, size_t N3, bool ad1=false, bool ad2=false)
 
static void ARRAY_MATMUL_UNIVERSAL (kids_complex *A, kids_complex *B, kids_complex *C, size_t N1, size_t N2, size_t N3, bool ad1=false, bool ad2=false)
 
static void ARRAY_MATMUL_UNIVERSAL (kids_complex *A, kids_real *B, kids_complex *C, size_t N1, size_t N2, size_t N3, bool ad1=false, bool ad2=false)
 
static void ARRAY_MATMUL_UNIVERSAL (kids_complex *A, kids_complex *B, kids_real *C, size_t N1, size_t N2, size_t N3, bool ad1=false, bool ad2=false)
 
void ARRAY_INV_MAT (kids_real *invA, kids_real *A, size_t N)
 
template<typename T , typename Tout >
void einsum_fun (EinsumHelper &EH, Expression< T > &FP, const std::vector< void * > &data_inputs, const std::vector< kids_dtype > &data_idtype, Tout *data_output)
 custumized einsum-like function operation
 
 DEFINE_POLICY (NADPolicy, EHR, BOSH, CVSH, BOSD, CVSD)
 
 DEFINE_POLICY (SQCPolicy, SQR, TRI, SPX, BIG)
 
 DEFINE_POLICY (NADForcePolicy, EHR, BO, CV, BOSD, CVSD, ELSE)
 
 DEFINE_POLICY (RepresentationPolicy, Diabatic, Adiabatic, Force, Density)
 
 DEFINE_POLICY (SpacePolicy, H, L)
 
double calc_alpha (kids_real *V, int i=0, int k=1, int F=2)
 
int calc_wrho (kids_complex *wrho, kids_complex *rho, double xi, double gamma, double alpha)
 
double calc_Ew (kids_real *E, kids_complex *wrho, int occ)
 
int calc_distforce (kids_real *f1, kids_real *E, kids_real *dE, kids_complex *wrho, kids_complex *rho, double alpha)
 the force driven from the shape of distorted-density W(\rho)
 
int hopping_impulse (kids_real *direction, kids_real *np, kids_real *nm, kids_real Efrom, kids_real Eto, int from, int to, bool reflect)
 
 DEFINE_POLICY (BathPolicy, Debye, Ohmic, Closure, HuangRhys, GFactor, ReadFormula, ReadFile, Read)
 
 DEFINE_POLICY (StrengthPolicy, Lambda, Alpha, Eta, Erg)
 
 DEFINE_POLICY (LVCMPolicy, PYR3, PYR3_SPEC, PYR4, PYR4_SPEC, PYR24, CRC2, CRC5, BEN5, BUTA5, PENTA5, CED2, CED3, PYR2CED, Read)
 
 DEFINE_POLICY (NAD1DPolicy, PURE, SAC, SAC2, SAC3, DAC, ECR, DBG, DAG, DRN, NA_I, MORSE3A, MORSE3B, MORSE3C, MORSE15, MORSE15C, MORSE15E, CL1D, JC1D, IVP1, IVP2, IVP3, IVP4)
 
 DEFINE_POLICY (SystemPolicy, SB, FMO, SF3a, SF3b, SF3c, SF5a, SF5b, FCP, AGG, CYC, Read)
 
 DEFINE_POLICY (CouplingPolicy, SB, SE, Read)
 
 DEFINE_POLICY (NSampPolicy, Wigner, Classical, QCT)
 
std::shared_ptr< KernelModelFactory (const std::string &name)
 
int mspes_SAC (double *V, double *dV, double *ddV, double *R, int flag, int rdim, int fdim)
 
int mspes_SAC2 (double *V, double *dV, double *ddV, double *R, int flag, int rdim, int fdim)
 
int mspes_SAC3 (double *V, double *dV, double *ddV, double *R, int flag, int rdim, int fdim)
 
int mspes_DAC (double *V, double *dV, double *ddV, double *R, int flag, int rdim, int fdim)
 
int mspes_ECR (double *V, double *dV, double *ddV, double *R, int flag, int rdim, int fdim)
 
int mspes_DBG (double *V, double *dV, double *ddV, double *R, int flag, int rdim, int fdim)
 
int mspes_DAG (double *V, double *dV, double *ddV, double *R, int flag, int rdim, int fdim)
 
int mspes_DRN (double *V, double *dV, double *ddV, double *R, int flag, int rdim, int fdim)
 
int mspes_MORSE3A (double *V, double *dV, double *ddV, double *R, int flag, int rdim, int fdim)
 
int mspes_MORSE3B (double *V, double *dV, double *ddV, double *R, int flag, int rdim, int fdim)
 
int mspes_MORSE3C (double *V, double *dV, double *ddV, double *R, int flag, int rdim, int fdim)
 
int mspes_MORSE15 (double *V, double *dV, double *ddV, double *R, int flag, int rdim, int fdim)
 
int mspes_MORSE15C (double *V, double *dV, double *ddV, double *R, int flag, int rdim, int fdim)
 
int mspes_MORSE15E (double *V, double *dV, double *ddV, double *R, int flag, int rdim, int fdim)
 
int mspes_CL1D (double *V, double *dV, double *ddV, double *R, int flag, int rdim, int fdim)
 
int mspes_JC1D (double *V, double *dV, double *ddV, double *R, int flag, int rdim, int fdim)
 
int mspes_NA_I (double *V, double *dV, double *ddV, double *R, int flag, int rdim, int fdim)
 
std::shared_ptr< KernelSolverFactory (const std::string &name, std::shared_ptr< Kernel > kmodel)
 
std::shared_ptr< KernelNAD_Adapt_Kernel (std::shared_ptr< Kernel > kmodel, std::string NAD_Kernel_name)
 
std::shared_ptr< KernelNAD_AdaptM_Kernel (std::shared_ptr< Kernel > kmodel, std::string NAD_Kernel_name)
 
std::shared_ptr< KernelNAD_Kernel (std::shared_ptr< Kernel > kmodel, std::string NAD_Kernel_name)
 
types_cast

Utility functions for type casting

template<class Tto , class Tfrom = void>
Tto cast (Tfrom value)
 
template<class Tto >
Tto cast_from_complex (kids_complex value)
 
template<>
kids_complex cast_from_complex (kids_complex value)
 
template<class Tto >
Tto cast (kids_complex value)
 
template<class Tto , class Tfrom >
Tto cast_at (void *data, int index=0)
 

Variables

const std::string MSG_PARAM_BAD_KEY = "bad key error : "
 
const std::string MSG_PARAM_BAD_TYPE = "bad type error : "
 
const std::string MSG_DATASET_BAD_KEY = "bad key error : "
 
const std::string MSG_DATASET_BAD_SIZE = "bad size error : "
 
const std::string MSG_DATASET_BAD_TYPE = "bad type error : "
 
const std::string MSG_DATASET_ERR_LOAD = "load error : "
 
const std::string MSG_DATASET_ERR_DUMP = "dump error : "
 
constexpr std::string OCCUPATION_PLACEHOLDER = "$OCC"
 
constexpr std::string TRJ_INDEX_PLACEHOLDER = "$TRJ"
 
constexpr std::string MPI_INDEX_PLACEHOLDER = "$MPI"
 
constexpr std::string KRULE_KKCMM = "{\"rule\":\"KKCMM<mik>(K1<m[$OCC][$OCC]>)\"}"
 
constexpr std::string KRULE_KKwMM = {"$KK_wMM", "KK"}
 
constexpr std::string KRULE_KKSQC = {"$KK_SQC", "KK"}
 
double mspes_parm [100]
 

Detailed Description

Typedef Documentation

◆ Basic_Dimen

using PROJECT_NS::Basic_Dimen = std::size_t

Definition at line 44 of file Shape.h.

◆ Basic_Shape

using PROJECT_NS::Basic_Shape = std::vector<std::size_t>

Definition at line 45 of file Shape.h.

◆ EigAX

template<class T >
using PROJECT_NS::EigAX = Eigen::Array<T, Eigen::Dynamic, Eigen::Dynamic, EigMajor>

Definition at line 23 of file linalg.cpp.

◆ EigAXc

Definition at line 30 of file linalg.cpp.

◆ EigAXr

Definition at line 29 of file linalg.cpp.

◆ EigMX

template<class T >
using PROJECT_NS::EigMX = Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic, EigMajor>

Definition at line 20 of file linalg.cpp.

◆ EigMXc

Definition at line 28 of file linalg.cpp.

◆ EigMXr

Definition at line 27 of file linalg.cpp.

◆ EigVX

template<class T >
using PROJECT_NS::EigVX = Eigen::Matrix<T, Eigen::Dynamic, 1, EigMajor>

Definition at line 17 of file linalg.cpp.

◆ EigVXc

Definition at line 26 of file linalg.cpp.

◆ EigVXr

Definition at line 25 of file linalg.cpp.

◆ kids_bint

using PROJECT_NS::kids_bint = int

Alias for integer type.

Definition at line 58 of file Types.h.

◆ kids_bool

using PROJECT_NS::kids_bool = bool

Alias for bool type.

Definition at line 56 of file Types.h.

◆ kids_complex

using PROJECT_NS::kids_complex = std::complex<double>

Alias for complex number type.

Definition at line 60 of file Types.h.

◆ kids_dataset

Alias for DataSet type (to be defined later)

Definition at line 63 of file Types.h.

◆ kids_int

using PROJECT_NS::kids_int = int

Alias for integer type.

Definition at line 57 of file Types.h.

◆ kids_param

Alias for Param type (to be defined later)

Definition at line 62 of file Types.h.

◆ kids_real

using PROJECT_NS::kids_real = double

Alias for real number type.

Definition at line 59 of file Types.h.

◆ kids_str

using PROJECT_NS::kids_str = std::string

Alias for string type.

Definition at line 61 of file Types.h.

◆ kids_void

using PROJECT_NS::kids_void = void

Alias for void type.

Definition at line 55 of file Types.h.

◆ MapAXc

typedef Eigen::Map< EigAXc > PROJECT_NS::MapAXc = Eigen::Map<EigAXc>

Definition at line 36 of file linalg.cpp.

◆ MapAXr

typedef Eigen::Map< EigAXr > PROJECT_NS::MapAXr = Eigen::Map<EigAXr>

Definition at line 35 of file linalg.cpp.

◆ MapMXc

typedef Eigen::Map< EigMXc > PROJECT_NS::MapMXc = Eigen::Map<EigMXc>

Definition at line 34 of file linalg.cpp.

◆ MapMXr

typedef Eigen::Map< EigMXr > PROJECT_NS::MapMXr = Eigen::Map<EigMXr>

Definition at line 33 of file linalg.cpp.

◆ MapVXc

typedef Eigen::Map< EigVXc > PROJECT_NS::MapVXc = Eigen::Map<EigVXc>

Definition at line 32 of file linalg.cpp.

◆ MapVXr

typedef Eigen::Map< EigVXr > PROJECT_NS::MapVXr = Eigen::Map<EigVXr>

Definition at line 31 of file linalg.cpp.

◆ MNDOKW_map

using PROJECT_NS::MNDOKW_map = std::map<std::string, std::string>

Definition at line 18 of file Model_Interf_MNDO.h.

Enumeration Type Documentation

◆ kids_dtype

Enumerator
kids_void_type 

Represents void type.

kids_bool_type 

Represents bool type.

kids_int_type 

Represents integer type.

kids_real_type 

Represents real number type.

kids_complex_type 

Represents complex number type.

kids_str_type 

Represents string type.

kids_param_type 

Represents Param type.

kids_dataset_type 

Represents DataSet type.

Definition at line 43 of file Types.h.

Function Documentation

◆ _subreplace()

std::string PROJECT_NS::_subreplace ( std::string resource_str,
std::string sub_str,
std::string new_str )
inline

Definition at line 46 of file Variable.h.

◆ ARRAY_CLEAR() [1/3]

void PROJECT_NS::ARRAY_CLEAR ( kids_complex * A,
size_t N )

Set all elements of a complex array to zero.

Parameters
APointer to the complex array.
NSize of the array.

Definition at line 54 of file linalg.cpp.

◆ ARRAY_CLEAR() [2/3]

void PROJECT_NS::ARRAY_CLEAR ( kids_int * A,
size_t N )

Set all elements of an integer array to zero.

Parameters
APointer to the integer array.
NSize of the array.

Definition at line 50 of file linalg.cpp.

◆ ARRAY_CLEAR() [3/3]

void PROJECT_NS::ARRAY_CLEAR ( kids_real * A,
size_t N )

Set all elements of a real array to zero.

Parameters
APointer to the real array.
NSize of the array.

Definition at line 52 of file linalg.cpp.

◆ ARRAY_CORRECT_U()

void PROJECT_NS::ARRAY_CORRECT_U ( kids_complex * U,
size_t N )

Definition at line 132 of file linalg_1.cpp.

References ARRAY_MATMUL3_TRANS2, and EigenSolve().

Referenced by PROJECT_NS::Kernel_GWP::impl_1().

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

◆ ARRAY_EXP_MAT_GENERAL()

void PROJECT_NS::ARRAY_EXP_MAT_GENERAL ( kids_complex * expkA,
kids_complex * A,
kids_complex k,
size_t N )

Definition at line 97 of file linalg_1.cpp.

References ARRAY_MATMUL3_TRANS2, ARRAY_MATMUL_TRANS1, ARRAY_TRANSPOSE(), and EigenSolve().

Referenced by PROJECT_NS::Kernel_GWP::impl_0().

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

◆ ARRAY_EYE() [1/2]

void PROJECT_NS::ARRAY_EYE ( kids_complex * A,
size_t n )

Generate an identity matrix of size n for complex numbers.

Parameters
APointer to the complex matrix A to store the result.
nSize of the identity matrix.

Definition at line 453 of file linalg.cpp.

◆ ARRAY_EYE() [2/2]

void PROJECT_NS::ARRAY_EYE ( kids_real * A,
size_t n )

Generate an identity matrix of size n for real numbers.

Parameters
APointer to the real matrix A to store the result.
nSize of the identity matrix.

Definition at line 448 of file linalg.cpp.

◆ ARRAY_INNER_TRANS1() [1/4]

kids_complex PROJECT_NS::ARRAY_INNER_TRANS1 ( kids_complex * B,
kids_complex * C,
size_t N1 )

Compute the inner product of the conjugate transpose of B with C for complex matrices.

Parameters
BPointer to the complex matrix B.
CPointer to the complex matrix C.
N1Number of elements in B and C (length of vectors).
Returns
The inner product of conjugate transpose(B) and C.

Definition at line 406 of file linalg.cpp.

References ARRAY_MATMUL_TRANS1.

◆ ARRAY_INNER_TRANS1() [2/4]

kids_complex PROJECT_NS::ARRAY_INNER_TRANS1 ( kids_complex * B,
kids_real * C,
size_t N1 )

Compute the inner product of the conjugate transpose of B with C for complex and real matrices.

Parameters
BPointer to the complex matrix B.
CPointer to the real matrix C.
N1Number of elements in B and C (length of vectors).
Returns
The inner product of conjugate transpose(B) and C.

Definition at line 412 of file linalg.cpp.

References ARRAY_MATMUL_TRANS1.

◆ ARRAY_INNER_TRANS1() [3/4]

kids_complex PROJECT_NS::ARRAY_INNER_TRANS1 ( kids_real * B,
kids_complex * C,
size_t N1 )

Compute the inner product of the transpose of B with C for real and complex matrices.

Parameters
BPointer to the real matrix B.
CPointer to the complex matrix C.
N1Number of elements in B and C (length of vectors).
Returns
The inner product of transpose(B) and C.

Definition at line 418 of file linalg.cpp.

References ARRAY_MATMUL_TRANS1.

◆ ARRAY_INNER_TRANS1() [4/4]

kids_real PROJECT_NS::ARRAY_INNER_TRANS1 ( kids_real * B,
kids_real * C,
size_t N1 )

Compute the inner product of the transpose of B with C for real matrices.

Parameters
BPointer to the real matrix B.
CPointer to the real matrix C.
N1Number of elements in B and C (length of vectors).
Returns
The inner product of transpose(B) and C.

Definition at line 400 of file linalg.cpp.

References ARRAY_MATMUL_TRANS1.

Referenced by PROJECT_NS::elec_utils::c_sphere(), and PROJECT_NS::Kernel_GWP::calc_dtSele().

Here is the caller graph for this function:

◆ ARRAY_INNER_VMV_TRANS1() [1/4]

kids_complex PROJECT_NS::ARRAY_INNER_VMV_TRANS1 ( kids_complex * B,
kids_complex * C,
kids_complex * D,
size_t N1,
size_t N2 )

Compute the inner product of the conjugate transpose of the complex vector B with the complex matrix C, element-wise multiplication with the complex vector D.

Parameters
BPointer to the complex vector B.
CPointer to the complex matrix C.
DPointer to the complex vector D.
N1Number of elements in B and rows in C and D.
N2Number of columns in C and elements in D.
Returns
The inner product of conjugate transpose(B) * C * D.

Definition at line 430 of file linalg.cpp.

References ARRAY_MATMUL3_TRANS1.

◆ ARRAY_INNER_VMV_TRANS1() [2/4]

kids_complex PROJECT_NS::ARRAY_INNER_VMV_TRANS1 ( kids_complex * B,
kids_real * C,
kids_complex * D,
size_t N1,
size_t N2 )

Compute the inner product of the conjugate transpose of the complex vector B with the real matrix C, element-wise multiplication with the complex vector D.

Parameters
BPointer to the complex vector B.
CPointer to the real matrix C.
DPointer to the complex vector D.
N1Number of elements in B and rows in C and D.
N2Number of columns in C and elements in D.
Returns
The inner product of conjugate transpose(B) * C * D.

Definition at line 436 of file linalg.cpp.

References ARRAY_MATMUL3_TRANS1.

◆ ARRAY_INNER_VMV_TRANS1() [3/4]

kids_complex PROJECT_NS::ARRAY_INNER_VMV_TRANS1 ( kids_real * B,
kids_complex * C,
kids_real * D,
size_t N1,
size_t N2 )

Compute the inner product of the transpose of the real vector B with the complex matrix C, element-wise multiplication with the real vector D.

Parameters
BPointer to the real vector B.
CPointer to the complex matrix C.
DPointer to the real vector D.
N1Number of elements in B and rows in C and D.
N2Number of columns in C and elements in D.
Returns
The inner product of transpose(B) * C * D.

Definition at line 442 of file linalg.cpp.

References ARRAY_MATMUL3_TRANS1.

◆ ARRAY_INNER_VMV_TRANS1() [4/4]

kids_real PROJECT_NS::ARRAY_INNER_VMV_TRANS1 ( kids_real * B,
kids_real * C,
kids_real * D,
size_t N1,
size_t N2 )

Compute the inner product of the transpose of the real vector B with the matrix C, element-wise multiplication with the real vector D.

Parameters
BPointer to the real vector B.
CPointer to the real matrix C.
DPointer to the real vector D.
N1Number of elements in B and rows in C and D.
N2Number of columns in C and elements in D.
Returns
The inner product of transpose(B) * C * D.

Definition at line 424 of file linalg.cpp.

References ARRAY_MATMUL3_TRANS1.

Referenced by PROJECT_NS::Kernel_GWP::calc_dtSele(), and PROJECT_NS::Kernel_GWP::calc_Hbasis().

Here is the caller graph for this function:

◆ ARRAY_INV_MAT() [1/2]

void PROJECT_NS::ARRAY_INV_MAT ( kids_complex * invA,
kids_complex * A,
size_t N )

Compute the inverse of a matrix for complex numbers.

Parameters
invAPointer to the matrix to store the inverse of A.
APointer to the matrix A.
NSize of the matrix (number of rows or columns in A).

Definition at line 91 of file linalg_1.cpp.

◆ ARRAY_INV_MAT() [2/2]

void PROJECT_NS::ARRAY_INV_MAT ( kids_real * invA,
kids_real * A,
size_t N )

Definition at line 85 of file linalg_1.cpp.

◆ ARRAY_ISFINITE() [1/2]

bool PROJECT_NS::ARRAY_ISFINITE ( kids_complex * A,
size_t n )

Check if all elements of a complex array are finite.

Parameters
APointer to the complex array.
nSize of the array.
Returns
True if all elements are finite, false otherwise.

Definition at line 44 of file linalg.cpp.

◆ ARRAY_ISFINITE() [2/2]

bool PROJECT_NS::ARRAY_ISFINITE ( kids_real * A,
size_t n )

Check if all elements of a real array are finite.

Parameters
APointer to the real array.
nSize of the array.
Returns
True if all elements are finite, false otherwise.

Definition at line 38 of file linalg.cpp.

◆ ARRAY_MAT_DIAG() [1/3]

void PROJECT_NS::ARRAY_MAT_DIAG ( kids_complex * A,
kids_complex * B,
size_t N1 )

Copy the diagonal elements from matrix B to matrix A for complex matrices.

Parameters
APointer to the complex matrix A.
BPointer to the complex matrix B.
N1Number of rows and columns in A and B.

Definition at line 465 of file linalg.cpp.

References ARRAY_CLEAR.

◆ ARRAY_MAT_DIAG() [2/3]

void PROJECT_NS::ARRAY_MAT_DIAG ( kids_complex * A,
kids_real * B,
size_t N1 )

Copy the diagonal elements from matrix B to matrix A for complex and real matrices.

Parameters
APointer to the complex matrix A.
BPointer to the real matrix B.
N1Number of rows and columns in A and B.

Definition at line 472 of file linalg.cpp.

References ARRAY_CLEAR.

◆ ARRAY_MAT_DIAG() [3/3]

void PROJECT_NS::ARRAY_MAT_DIAG ( kids_real * A,
kids_real * B,
size_t N1 )

Copy the diagonal elements from matrix B to matrix A for real matrices.

Parameters
APointer to the real matrix A.
BPointer to the real matrix B.
N1Number of rows and columns in A and B.

Definition at line 458 of file linalg.cpp.

References ARRAY_CLEAR.

Referenced by PROJECT_NS::Kernel_Elec_NAD::executeKernel_impl(), and PROJECT_NS::Kernel_Elec_Switch::executeKernel_impl().

Here is the caller graph for this function:

◆ ARRAY_MAT_OFFD() [1/3]

void PROJECT_NS::ARRAY_MAT_OFFD ( kids_complex * A,
kids_complex * B,
size_t N1 )

Copy the off-diagonal elements from matrix B to matrix A for complex matrices.

Parameters
APointer to the complex matrix A.
BPointer to the complex matrix B.
N1Number of rows and columns in A and B.

Definition at line 486 of file linalg.cpp.

◆ ARRAY_MAT_OFFD() [2/3]

void PROJECT_NS::ARRAY_MAT_OFFD ( kids_complex * A,
kids_real * B,
size_t N1 )

Copy the off-diagonal elements from matrix B to matrix A for complex and real matrices.

Parameters
APointer to the complex matrix A.
BPointer to the real matrix B.
N1Number of rows and columns in A and B.

Definition at line 493 of file linalg.cpp.

◆ ARRAY_MAT_OFFD() [3/3]

void PROJECT_NS::ARRAY_MAT_OFFD ( kids_real * A,
kids_real * B,
size_t N1 )

Copy the off-diagonal elements from matrix B to matrix A for real matrices.

Parameters
APointer to the real matrix A.
BPointer to the real matrix B.
N1Number of rows and columns in A and B.

Definition at line 479 of file linalg.cpp.

◆ ARRAY_MATMUL() [1/4]

void PROJECT_NS::ARRAY_MATMUL ( kids_complex * A,
kids_complex * B,
kids_complex * C,
size_t N1,
size_t N2,
size_t N3 )

Perform matrix multiplication where A = B * C for complex matrices.

Parameters
APointer to the result complex matrix.
BPointer to the first complex matrix.
CPointer to the second complex matrix.
N1Number of rows in B and A.
N2Number of columns in B and rows in C.
N3Number of columns in C and A.

Definition at line 116 of file linalg.cpp.

References ARRAY_MATMUL_UNIVERSAL().

Here is the call graph for this function:

◆ ARRAY_MATMUL() [2/4]

void PROJECT_NS::ARRAY_MATMUL ( kids_complex * A,
kids_complex * B,
kids_real * C,
size_t N1,
size_t N2,
size_t N3 )

Perform matrix multiplication where A = B * C for complex and real matrices.

Parameters
APointer to the result complex matrix.
BPointer to the first complex matrix.
CPointer to the second real matrix.
N1Number of rows in B and A.
N2Number of columns in B and rows in C.
N3Number of columns in C and A.

Definition at line 124 of file linalg.cpp.

References ARRAY_MATMUL_UNIVERSAL().

Here is the call graph for this function:

◆ ARRAY_MATMUL() [3/4]

void PROJECT_NS::ARRAY_MATMUL ( kids_complex * A,
kids_real * B,
kids_complex * C,
size_t N1,
size_t N2,
size_t N3 )

Perform matrix multiplication where A = B * C for complex and real matrices.

Parameters
APointer to the result complex matrix.
BPointer to the first complex matrix.
CPointer to the second real matrix.
N1Number of rows in B and A.
N2Number of columns in B and rows in C.
N3Number of columns in C and A.

Definition at line 120 of file linalg.cpp.

References ARRAY_MATMUL_UNIVERSAL().

Here is the call graph for this function:

◆ ARRAY_MATMUL() [4/4]

void PROJECT_NS::ARRAY_MATMUL ( kids_real * A,
kids_real * B,
kids_real * C,
size_t N1,
size_t N2,
size_t N3 )

Perform matrix multiplication where A = B * C for real matrices.

Parameters
APointer to the result real matrix.
BPointer to the first real matrix.
CPointer to the second real matrix.
N1Number of rows in B and A.
N2Number of columns in B and rows in C.
N3Number of columns in C and A.

Definition at line 112 of file linalg.cpp.

References ARRAY_MATMUL_UNIVERSAL().

Here is the call graph for this function:

◆ ARRAY_MATMUL3_TRANS1() [1/4]

void PROJECT_NS::ARRAY_MATMUL3_TRANS1 ( kids_complex * A,
kids_complex * B,
kids_complex * C,
kids_complex * D,
size_t N1,
size_t N2,
size_t N0,
size_t N3 )

Perform matrix multiplication where A = B^T * C * D for complex matrices.

Parameters
APointer to the result complex matrix.
BPointer to the first complex matrix.
CPointer to the second complex matrix.
DPointer to the third complex matrix.
N1Number of rows in A.
N2Number of columns in B^T and rows in C.
N0Number of columns in B^T and rows in D; N0==0 when C is a diagonal vector and N2 is for rows of D.
N3Number of columns in D and A.

Definition at line 186 of file linalg.cpp.

References ARRAY_MATMUL, and ARRAY_MATMUL_TRANS1.

◆ ARRAY_MATMUL3_TRANS1() [2/4]

void PROJECT_NS::ARRAY_MATMUL3_TRANS1 ( kids_complex * A,
kids_complex * B,
kids_real * C,
kids_complex * D,
size_t N1,
size_t N2,
size_t N0,
size_t N3 )

Perform matrix multiplication where A = B^T * C * D for complex and real matrices.

Parameters
APointer to the result complex matrix.
BPointer to the first complex matrix.
CPointer to the second real matrix.
DPointer to the third complex matrix.
N1Number of rows in A.
N2Number of columns in B^T and rows in C.
N0Number of columns in B^T and rows in D; N0==0 when C is a diagonal vector and N2 is for rows of D.
N3Number of columns in D and A.

Definition at line 222 of file linalg.cpp.

References ARRAY_MATMUL, and ARRAY_MATMUL_TRANS1.

◆ ARRAY_MATMUL3_TRANS1() [3/4]

void PROJECT_NS::ARRAY_MATMUL3_TRANS1 ( kids_complex * A,
kids_real * B,
kids_complex * C,
kids_real * D,
size_t N1,
size_t N2,
size_t N0,
size_t N3 )

Perform matrix multiplication where A = B^T * C * D for complex and real matrices.

Parameters
APointer to the result complex matrix.
BPointer to the first real matrix.
CPointer to the second complex matrix.
DPointer to the third real matrix.
N1Number of rows in A.
N2Number of columns in B^T and rows in C.
N0Number of columns in B^T and rows in D; N0==0 when C is a diagonal vector and N2 is for rows of D.
N3Number of columns in D and A.

Definition at line 204 of file linalg.cpp.

References ARRAY_MATMUL, and ARRAY_MATMUL_TRANS1.

◆ ARRAY_MATMUL3_TRANS1() [4/4]

void PROJECT_NS::ARRAY_MATMUL3_TRANS1 ( kids_real * A,
kids_real * B,
kids_real * C,
kids_real * D,
size_t N1,
size_t N2,
size_t N0,
size_t N3 )

Perform matrix multiplication where A = B^T * C * D for real matrices.

Parameters
APointer to the result real matrix.
BPointer to the first real matrix.
CPointer to the second real matrix.
DPointer to the third real matrix.
N1Number of rows in A.
N2Number of columns in B^T and rows in C.
N0Number of columns in B^T and rows in D; N0==0 when C is a diagonal vector and N2 is for rows of D.
N3Number of columns in D and A.

Definition at line 168 of file linalg.cpp.

References ARRAY_MATMUL, and ARRAY_MATMUL_TRANS1.

◆ ARRAY_MATMUL3_TRANS2() [1/4]

void PROJECT_NS::ARRAY_MATMUL3_TRANS2 ( kids_complex * A,
kids_complex * B,
kids_complex * C,
kids_complex * D,
size_t N1,
size_t N2,
size_t N0,
size_t N3 )

Perform matrix multiplication where A = B * C * D^T for complex matrices.

Parameters
APointer to the result complex matrix.
BPointer to the first complex matrix.
CPointer to the second complex matrix.
DPointer to the third complex matrix.
N1Number of rows in A.
N2Number of columns in B and rows in C.
N0Number of columns in C and rows in D^T; N0==0 when C is a diagonal vector and N2 is for rows of D^T.
N3Number of columns in D^T and A.

Definition at line 258 of file linalg.cpp.

References ARRAY_MATMUL, and ARRAY_MATMUL_TRANS2.

◆ ARRAY_MATMUL3_TRANS2() [2/4]

void PROJECT_NS::ARRAY_MATMUL3_TRANS2 ( kids_complex * A,
kids_complex * B,
kids_real * C,
kids_complex * D,
size_t N1,
size_t N2,
size_t N0,
size_t N3 )

Perform matrix multiplication where A = B * C * D^T for complex and real matrices.

Parameters
APointer to the result complex matrix.
BPointer to the first complex matrix.
CPointer to the second real matrix.
DPointer to the third complex matrix.
N1Number of rows in A.
N2Number of columns in B and rows in C.
N0Number of columns in C and rows in D^T; N0==0 when C is a diagonal vector and N2 is for rows of D^T.
N3Number of columns in D^T and A.

Definition at line 294 of file linalg.cpp.

References ARRAY_MATMUL, and ARRAY_MATMUL_TRANS2.

◆ ARRAY_MATMUL3_TRANS2() [3/4]

void PROJECT_NS::ARRAY_MATMUL3_TRANS2 ( kids_complex * A,
kids_real * B,
kids_complex * C,
kids_real * D,
size_t N1,
size_t N2,
size_t N0,
size_t N3 )

Perform matrix multiplication where A = B * C * D^T for complex and real matrices.

Parameters
APointer to the result complex matrix.
BPointer to the first real matrix.
CPointer to the second complex matrix.
DPointer to the third real matrix.
N1Number of rows in A.
N2Number of columns in B and rows in C.
N0Number of columns in C and rows in D^T; N0==0 when C is a diagonal vector and N2 is for rows of D^T.
N3Number of columns in D^T and A.

Definition at line 276 of file linalg.cpp.

References ARRAY_MATMUL, and ARRAY_MATMUL_TRANS2.

◆ ARRAY_MATMUL3_TRANS2() [4/4]

void PROJECT_NS::ARRAY_MATMUL3_TRANS2 ( kids_real * A,
kids_real * B,
kids_real * C,
kids_real * D,
size_t N1,
size_t N2,
size_t N0,
size_t N3 )

Perform matrix multiplication where A = B * C * D^T for real matrices.

Parameters
APointer to the result real matrix.
BPointer to the first real matrix.
CPointer to the second real matrix.
DPointer to the third real matrix.
N1Number of rows in A.
N2Number of columns in B and rows in C.
N0Number of columns in C and rows in D^T; N0==0 when C is a diagonal vector and N2 is for rows of D^T.
N3Number of columns in D^T and A.

Definition at line 240 of file linalg.cpp.

References ARRAY_MATMUL, and ARRAY_MATMUL_TRANS2.

◆ ARRAY_MATMUL_TRANS1() [1/4]

void PROJECT_NS::ARRAY_MATMUL_TRANS1 ( kids_complex * A,
kids_complex * B,
kids_complex * C,
size_t N1,
size_t N2,
size_t N3 )

Perform matrix multiplication where A = B^T * C for complex matrices.

Parameters
APointer to the result complex matrix.
BPointer to the first complex matrix.
CPointer to the second complex matrix.
N1Number of rows in B^T and A.
N2Number of columns in B^T and rows in C.
N3Number of columns in C and A.

Definition at line 132 of file linalg.cpp.

References ARRAY_MATMUL_UNIVERSAL().

Here is the call graph for this function:

◆ ARRAY_MATMUL_TRANS1() [2/4]

void PROJECT_NS::ARRAY_MATMUL_TRANS1 ( kids_complex * A,
kids_complex * B,
kids_real * C,
size_t N1,
size_t N2,
size_t N3 )

Perform matrix multiplication where A = B^T * C for complex and real matrices.

Parameters
APointer to the result complex matrix.
BPointer to the first complex matrix.
CPointer to the second real matrix.
N1Number of rows in B^T and A.
N2Number of columns in B^T and rows in C.
N3Number of columns in C and A.

Definition at line 140 of file linalg.cpp.

References ARRAY_MATMUL_UNIVERSAL().

Here is the call graph for this function:

◆ ARRAY_MATMUL_TRANS1() [3/4]

void PROJECT_NS::ARRAY_MATMUL_TRANS1 ( kids_complex * A,
kids_real * B,
kids_complex * C,
size_t N1,
size_t N2,
size_t N3 )

Perform matrix multiplication where A = B^T * C for complex and real matrices.

Parameters
APointer to the result complex matrix.
BPointer to the first real matrix.
CPointer to the second complex matrix.
N1Number of rows in B^T and A.
N2Number of columns in B^T and rows in C.
N3Number of columns in C and A.

Definition at line 136 of file linalg.cpp.

References ARRAY_MATMUL_UNIVERSAL().

Here is the call graph for this function:

◆ ARRAY_MATMUL_TRANS1() [4/4]

void PROJECT_NS::ARRAY_MATMUL_TRANS1 ( kids_real * A,
kids_real * B,
kids_real * C,
size_t N1,
size_t N2,
size_t N3 )

Perform matrix multiplication where A = B^T * C for real matrices.

Parameters
APointer to the result real matrix.
BPointer to the first real matrix.
CPointer to the second real matrix.
N1Number of rows in B^T and A.
N2Number of columns in B^T and rows in C.
N3Number of columns in C and A.

Definition at line 128 of file linalg.cpp.

References ARRAY_MATMUL_UNIVERSAL().

Here is the call graph for this function:

◆ ARRAY_MATMUL_TRANS2() [1/4]

void PROJECT_NS::ARRAY_MATMUL_TRANS2 ( kids_complex * A,
kids_complex * B,
kids_complex * C,
size_t N1,
size_t N2,
size_t N3 )

Perform matrix multiplication where A = B * C^T for complex matrices.

Parameters
APointer to the result complex matrix.
BPointer to the first complex matrix.
CPointer to the second complex matrix.
N1Number of rows in B and A.
N2Number of columns in B and A^T.
N3Number of columns in C^T and A.

Definition at line 148 of file linalg.cpp.

References ARRAY_MATMUL_UNIVERSAL().

Here is the call graph for this function:

◆ ARRAY_MATMUL_TRANS2() [2/4]

void PROJECT_NS::ARRAY_MATMUL_TRANS2 ( kids_complex * A,
kids_complex * B,
kids_real * C,
size_t N1,
size_t N2,
size_t N3 )

Perform matrix multiplication where A = B * C^T for complex and real matrices.

Parameters
APointer to the result complex matrix.
BPointer to the first complex matrix.
CPointer to the second real matrix.
N1Number of rows in B and A.
N2Number of columns in B and A^T.
N3Number of columns in C^T and A.

Definition at line 156 of file linalg.cpp.

References ARRAY_MATMUL_UNIVERSAL().

Here is the call graph for this function:

◆ ARRAY_MATMUL_TRANS2() [3/4]

void PROJECT_NS::ARRAY_MATMUL_TRANS2 ( kids_complex * A,
kids_real * B,
kids_complex * C,
size_t N1,
size_t N2,
size_t N3 )

Perform matrix multiplication where A = B * C^T for complex and real matrices.

Parameters
APointer to the result complex matrix.
BPointer to the first real matrix.
CPointer to the second complex matrix.
N1Number of rows in B and A.
N2Number of columns in B and A^T.
N3Number of columns in C^T and A.

Definition at line 152 of file linalg.cpp.

References ARRAY_MATMUL_UNIVERSAL().

Here is the call graph for this function:

◆ ARRAY_MATMUL_TRANS2() [4/4]

void PROJECT_NS::ARRAY_MATMUL_TRANS2 ( kids_real * A,
kids_real * B,
kids_real * C,
size_t N1,
size_t N2,
size_t N3 )

Perform matrix multiplication where A = B * C^T for real matrices.

Parameters
APointer to the result real matrix.
BPointer to the first real matrix.
CPointer to the second real matrix.
N1Number of rows in B and A.
N2Number of columns in B and A^T.
N3Number of columns in C^T and A.

Definition at line 144 of file linalg.cpp.

References ARRAY_MATMUL_UNIVERSAL().

Here is the call graph for this function:

◆ ARRAY_MATMUL_UNIVERSAL() [1/4]

static void PROJECT_NS::ARRAY_MATMUL_UNIVERSAL ( kids_complex * A,
kids_complex * B,
kids_complex * C,
size_t N1,
size_t N2,
size_t N3,
bool ad1 = false,
bool ad2 = false )
static

Definition at line 70 of file linalg.cpp.

◆ ARRAY_MATMUL_UNIVERSAL() [2/4]

static void PROJECT_NS::ARRAY_MATMUL_UNIVERSAL ( kids_complex * A,
kids_complex * B,
kids_real * C,
size_t N1,
size_t N2,
size_t N3,
bool ad1 = false,
bool ad2 = false )
static

Definition at line 98 of file linalg.cpp.

◆ ARRAY_MATMUL_UNIVERSAL() [3/4]

static void PROJECT_NS::ARRAY_MATMUL_UNIVERSAL ( kids_complex * A,
kids_real * B,
kids_complex * C,
size_t N1,
size_t N2,
size_t N3,
bool ad1 = false,
bool ad2 = false )
static

Definition at line 84 of file linalg.cpp.

◆ ARRAY_MATMUL_UNIVERSAL() [4/4]

static void PROJECT_NS::ARRAY_MATMUL_UNIVERSAL ( kids_real * A,
kids_real * B,
kids_real * C,
size_t N1,
size_t N2,
size_t N3,
bool ad1 = false,
bool ad2 = false )
static

◆ ARRAY_OUTER_TRANS2() [1/2]

void PROJECT_NS::ARRAY_OUTER_TRANS2 ( kids_complex * A,
kids_complex * B,
kids_complex * C,
size_t N1,
size_t N2 )

Perform outer product with transpose where A = B^T * C for complex matrices.

Parameters
APointer to the result complex matrix.
BPointer to the first complex vector.
CPointer to the second complex vector.
N1Number of rows in A.
N2Number of columns in A.

Definition at line 164 of file linalg.cpp.

References ARRAY_MATMUL_TRANS2.

◆ ARRAY_OUTER_TRANS2() [2/2]

void PROJECT_NS::ARRAY_OUTER_TRANS2 ( kids_real * A,
kids_real * B,
kids_real * C,
size_t N1,
size_t N2 )

Perform outer product with transpose where A = B^T * C for real matrices.

Parameters
APointer to the result real matrix.
BPointer to the first real vector.
CPointer to the second real vector.
N1Number of rows in A.
N2Number of columns in A.

Definition at line 160 of file linalg.cpp.

References ARRAY_MATMUL_TRANS2.

Referenced by PROJECT_NS::Kernel_Elec::ker_from_c().

Here is the caller graph for this function:

◆ ARRAY_TRACE2() [1/4]

kids_complex PROJECT_NS::ARRAY_TRACE2 ( kids_complex * B,
kids_complex * C,
size_t N1,
size_t N2 )

Compute the trace of the matrix product B * C for complex matrices.

Parameters
BPointer to the first complex matrix.
CPointer to the second complex matrix.
N1Number of rows in B and columns in C.
N2Number of columns in B and rows in C.
Returns
The trace of the matrix product B * C.

Definition at line 319 of file linalg.cpp.

◆ ARRAY_TRACE2() [2/4]

kids_complex PROJECT_NS::ARRAY_TRACE2 ( kids_complex * B,
kids_real * C,
size_t N1,
size_t N2 )

Compute the trace of the matrix product B * C for complex and real matrices.

Parameters
BPointer to the first complex matrix.
CPointer to the second real matrix.
N1Number of rows in B and columns in C.
N2Number of columns in B and rows in C.
Returns
The trace of the matrix product B * C.

Definition at line 326 of file linalg.cpp.

◆ ARRAY_TRACE2() [3/4]

kids_complex PROJECT_NS::ARRAY_TRACE2 ( kids_real * B,
kids_complex * C,
size_t N1,
size_t N2 )

Compute the trace of the matrix product B * C for real and complex matrices.

Parameters
BPointer to the first real matrix.
CPointer to the second complex matrix.
N1Number of rows in B and columns in C.
N2Number of columns in B and rows in C.
Returns
The trace of the matrix product B * C.

Definition at line 333 of file linalg.cpp.

◆ ARRAY_TRACE2() [4/4]

kids_real PROJECT_NS::ARRAY_TRACE2 ( kids_real * B,
kids_real * C,
size_t N1,
size_t N2 )

Compute the trace of the matrix product B * C for real matrices.

Parameters
BPointer to the first real matrix.
CPointer to the second real matrix.
N1Number of rows in B and columns in C.
N2Number of columns in B and rows in C.
Returns
The trace of the matrix product B * C.

Definition at line 312 of file linalg.cpp.

◆ ARRAY_TRACE2_DIAG() [1/4]

kids_complex PROJECT_NS::ARRAY_TRACE2_DIAG ( kids_complex * B,
kids_complex * C,
size_t N1,
size_t N2 )

Compute the trace of the diagonal elements of the matrix product B * C for complex matrices.

Parameters
BPointer to the first complex matrix.
CPointer to the second complex matrix.
N1Number of rows in B and columns in C.
N2Number of columns in B and rows in C.
Returns
The trace of the diagonal elements of the matrix product B * C.

Definition at line 347 of file linalg.cpp.

◆ ARRAY_TRACE2_DIAG() [2/4]

kids_complex PROJECT_NS::ARRAY_TRACE2_DIAG ( kids_complex * B,
kids_real * C,
size_t N1,
size_t N2 )

Compute the trace of the diagonal elements of the matrix product B * C for complex and real matrices.

Parameters
BPointer to the first complex matrix.
CPointer to the second real matrix.
N1Number of rows in B and columns in C.
N2Number of columns in B and rows in C.
Returns
The trace of the diagonal elements of the matrix product B * C.

Definition at line 354 of file linalg.cpp.

◆ ARRAY_TRACE2_DIAG() [3/4]

kids_complex PROJECT_NS::ARRAY_TRACE2_DIAG ( kids_real * B,
kids_complex * C,
size_t N1,
size_t N2 )

Compute the trace of the diagonal elements of the matrix product B * C for real and complex matrices.

Parameters
BPointer to the first real matrix.
CPointer to the second complex matrix.
N1Number of rows in B and columns in C.
N2Number of columns in B and rows in C.
Returns
The trace of the diagonal elements of the matrix product B * C.

Definition at line 361 of file linalg.cpp.

◆ ARRAY_TRACE2_DIAG() [4/4]

kids_real PROJECT_NS::ARRAY_TRACE2_DIAG ( kids_real * B,
kids_real * C,
size_t N1,
size_t N2 )

Compute the trace of the diagonal elements of the matrix product B * C for real matrices.

Parameters
BPointer to the first real matrix.
CPointer to the second real matrix.
N1Number of rows in B and columns in C.
N2Number of columns in B and rows in C.
Returns
The trace of the diagonal elements of the matrix product B * C.

Definition at line 340 of file linalg.cpp.

Referenced by PROJECT_NS::Kernel_NADForce::executeKernel_impl().

Here is the caller graph for this function:

◆ ARRAY_TRACE2_OFFD() [1/4]

kids_complex PROJECT_NS::ARRAY_TRACE2_OFFD ( kids_complex * B,
kids_complex * C,
size_t N1,
size_t N2 )

Compute the trace of the off-diagonal elements of the matrix product B * C for complex matrices.

Parameters
BPointer to the first complex matrix.
CPointer to the second complex matrix.
N1Number of rows in B and columns in C.
N2Number of columns in B and rows in C.
Returns
The trace of the off-diagonal elements of the matrix product B * C.

Definition at line 376 of file linalg.cpp.

◆ ARRAY_TRACE2_OFFD() [2/4]

kids_complex PROJECT_NS::ARRAY_TRACE2_OFFD ( kids_complex * B,
kids_real * C,
size_t N1,
size_t N2 )

Compute the trace of the off-diagonal elements of the matrix product B * C for complex and real matrices.

Parameters
BPointer to the first complex matrix.
CPointer to the second real matrix.
N1Number of rows in B and columns in C.
N2Number of columns in B and rows in C.
Returns
The trace of the off-diagonal elements of the matrix product B * C.

Definition at line 384 of file linalg.cpp.

◆ ARRAY_TRACE2_OFFD() [3/4]

kids_complex PROJECT_NS::ARRAY_TRACE2_OFFD ( kids_real * B,
kids_complex * C,
size_t N1,
size_t N2 )

Compute the trace of the off-diagonal elements of the matrix product B * C for real and complex matrices.

Parameters
BPointer to the first real matrix.
CPointer to the second complex matrix.
N1Number of rows in B and columns in C.
N2Number of columns in B and rows in C.
Returns
The trace of the off-diagonal elements of the matrix product B * C.

Definition at line 392 of file linalg.cpp.

◆ ARRAY_TRACE2_OFFD() [4/4]

kids_real PROJECT_NS::ARRAY_TRACE2_OFFD ( kids_real * B,
kids_real * C,
size_t N1,
size_t N2 )

Compute the trace of the off-diagonal elements of the matrix product B * C for real matrices.

Parameters
BPointer to the first real matrix.
CPointer to the second real matrix.
N1Number of rows in B and columns in C.
N2Number of columns in B and rows in C.
Returns
The trace of the off-diagonal elements of the matrix product B * C.

Definition at line 368 of file linalg.cpp.

Referenced by PROJECT_NS::Kernel_NADForce::executeKernel_impl().

Here is the caller graph for this function:

◆ ARRAY_TRANSPOSE() [1/2]

void PROJECT_NS::ARRAY_TRANSPOSE ( kids_complex * A,
size_t N1,
size_t N2 )

Definition at line 506 of file linalg.cpp.

◆ ARRAY_TRANSPOSE() [2/2]

void PROJECT_NS::ARRAY_TRANSPOSE ( kids_real * A,
size_t N1,
size_t N2 )

Definition at line 500 of file linalg.cpp.

Referenced by ARRAY_EXP_MAT_GENERAL(), and PROJECT_NS::Kernel_Representation::executeKernel_impl().

Here is the caller graph for this function:

◆ as_enum()

template<typename T >
kids_dtype PROJECT_NS::as_enum ( )

Converts a C++ type to its corresponding kids_dtype enumeration.

◆ as_str()

template<typename T >
std::string PROJECT_NS::as_str ( )

Converts a C++ type to its string representation.

◆ calc_alpha()

double PROJECT_NS::calc_alpha ( kids_real * V,
int i = 0,
int k = 1,
int F = 2 )

◆ calc_distforce()

int PROJECT_NS::calc_distforce ( kids_real * f1,
kids_real * E,
kids_real * dE,
kids_complex * wrho,
kids_complex * rho,
double alpha )

the force driven from the shape of distorted-density W(\rho)

Parameters
f1The result
Eadiabatic PES
dEThe gradients of adiabatic PES
wrhoThe distorted-density W(\rho)
rhoThe density rho
[in]xiaffine coefficient
[in]gammaaffine coefficient
[in]alphaThe distortion parameter
Returns
{ description_of_the_return_value }

Definition at line 102 of file Kernel_Elec_NAD.cpp.

References PROJECT_NS::Dimension::F, PROJECT_NS::Dimension::Fadd1, PROJECT_NS::Dimension::FF, and PROJECT_NS::Dimension::N.

Referenced by PROJECT_NS::Kernel_Elec_NAD::executeKernel_impl(), and PROJECT_NS::Kernel_Elec_Switch::executeKernel_impl().

Here is the caller graph for this function:

◆ calc_Ew()

double PROJECT_NS::calc_Ew ( kids_real * E,
kids_complex * wrho,
int occ )

◆ calc_wrho()

int PROJECT_NS::calc_wrho ( kids_complex * wrho,
kids_complex * rho,
double xi,
double gamma,
double alpha )

Definition at line 47 of file Kernel_Elec_NAD.cpp.

References PROJECT_NS::Dimension::F, and PROJECT_NS::Dimension::Fadd1.

Referenced by PROJECT_NS::Kernel_Elec_NAD::executeKernel_impl(), and PROJECT_NS::Kernel_Elec_Switch::executeKernel_impl().

Here is the caller graph for this function:

◆ cast() [1/2]

template<class Tto >
Tto PROJECT_NS::cast ( kids_complex value)
inline

Definition at line 87 of file Types.h.

References value().

Here is the call graph for this function:

◆ cast() [2/2]

template<class Tto , class Tfrom = void>
Tto PROJECT_NS::cast ( Tfrom value)
inline

Definition at line 71 of file Types.h.

References value().

Here is the call graph for this function:

◆ cast_at()

template<class Tto , class Tfrom >
Tto PROJECT_NS::cast_at ( void * data,
int index = 0 )
inline

Definition at line 93 of file Types.h.

◆ cast_from_complex() [1/2]

template<class Tto >
Tto PROJECT_NS::cast_from_complex ( kids_complex value)
inline

Definition at line 76 of file Types.h.

References value().

Here is the call graph for this function:

◆ cast_from_complex() [2/2]

template<>
kids_complex PROJECT_NS::cast_from_complex ( kids_complex value)
inline

Definition at line 81 of file Types.h.

References value().

Here is the call graph for this function:

◆ DEFINE_BIND_UTILS_FOR() [1/8]

PROJECT_NS::DEFINE_BIND_UTILS_FOR ( kids_bool )

◆ DEFINE_BIND_UTILS_FOR() [2/8]

PROJECT_NS::DEFINE_BIND_UTILS_FOR ( kids_complex )

◆ DEFINE_BIND_UTILS_FOR() [3/8]

PROJECT_NS::DEFINE_BIND_UTILS_FOR ( kids_dataset )

◆ DEFINE_BIND_UTILS_FOR() [4/8]

PROJECT_NS::DEFINE_BIND_UTILS_FOR ( kids_int )

◆ DEFINE_BIND_UTILS_FOR() [5/8]

PROJECT_NS::DEFINE_BIND_UTILS_FOR ( kids_param )

◆ DEFINE_BIND_UTILS_FOR() [6/8]

PROJECT_NS::DEFINE_BIND_UTILS_FOR ( kids_real )

◆ DEFINE_BIND_UTILS_FOR() [7/8]

PROJECT_NS::DEFINE_BIND_UTILS_FOR ( kids_str )

◆ DEFINE_BIND_UTILS_FOR() [8/8]

PROJECT_NS::DEFINE_BIND_UTILS_FOR ( kids_void )

◆ DEFINE_POLICY() [1/12]

PROJECT_NS::DEFINE_POLICY ( BathPolicy ,
Debye ,
Ohmic ,
Closure ,
HuangRhys ,
GFactor ,
ReadFormula ,
ReadFile ,
Read  )

◆ DEFINE_POLICY() [2/12]

PROJECT_NS::DEFINE_POLICY ( CouplingPolicy ,
SB ,
SE ,
Read  )

◆ DEFINE_POLICY() [3/12]

PROJECT_NS::DEFINE_POLICY ( LVCMPolicy ,
PYR3 ,
PYR3_SPEC ,
PYR4 ,
PYR4_SPEC ,
PYR24 ,
CRC2 ,
CRC5 ,
BEN5 ,
BUTA5 ,
PENTA5 ,
CED2 ,
CED3 ,
PYR2CED ,
Read  )

◆ DEFINE_POLICY() [4/12]

PROJECT_NS::DEFINE_POLICY ( NAD1DPolicy ,
PURE ,
SAC ,
SAC2 ,
SAC3 ,
DAC ,
ECR ,
DBG ,
DAG ,
DRN ,
NA_I ,
MORSE3A ,
MORSE3B ,
MORSE3C ,
MORSE15 ,
MORSE15C ,
MORSE15E ,
CL1D ,
JC1D ,
IVP1 ,
IVP2 ,
IVP3 ,
IVP4  )

◆ DEFINE_POLICY() [5/12]

PROJECT_NS::DEFINE_POLICY ( NADForcePolicy ,
EHR ,
BO ,
CV ,
BOSD ,
CVSD ,
ELSE  )

◆ DEFINE_POLICY() [6/12]

PROJECT_NS::DEFINE_POLICY ( NADPolicy ,
EHR ,
BOSH ,
CVSH ,
BOSD ,
CVSD  )

◆ DEFINE_POLICY() [7/12]

PROJECT_NS::DEFINE_POLICY ( NSampPolicy ,
Wigner ,
Classical ,
QCT  )

◆ DEFINE_POLICY() [8/12]

PROJECT_NS::DEFINE_POLICY ( RepresentationPolicy ,
Diabatic ,
Adiabatic ,
Force ,
Density  )

◆ DEFINE_POLICY() [9/12]

PROJECT_NS::DEFINE_POLICY ( SpacePolicy ,
H ,
L  )

◆ DEFINE_POLICY() [10/12]

PROJECT_NS::DEFINE_POLICY ( SQCPolicy ,
SQR ,
TRI ,
SPX ,
BIG  )

◆ DEFINE_POLICY() [11/12]

PROJECT_NS::DEFINE_POLICY ( StrengthPolicy ,
Lambda ,
Alpha ,
Eta ,
Erg  )

◆ DEFINE_POLICY() [12/12]

PROJECT_NS::DEFINE_POLICY ( SystemPolicy ,
SB ,
FMO ,
SF3a ,
SF3b ,
SF3c ,
SF5a ,
SF5b ,
FCP ,
AGG ,
CYC ,
Read  )

◆ EigenSolve() [1/3]

void PROJECT_NS::EigenSolve ( kids_complex * E,
kids_complex * T,
kids_complex * A,
size_t N )

Solve the eigenvalue problem for general complex matrices.

Parameters
EPointer to the array to store the eigenvalues.
TPointer to the temporary complex matrix.
APointer to the complex matrix for eigenvalue computation.
NSize of the matrix (number of rows or columns in A).

Definition at line 62 of file linalg_1.cpp.

◆ EigenSolve() [2/3]

void PROJECT_NS::EigenSolve ( kids_real * E,
kids_complex * T,
kids_complex * A,
size_t N )

Solve the eigenvalue problem for (hermite) complex matrices.

Parameters
EPointer to the array to store the eigenvalues.
TPointer to the temporary complex matrix.
APointer to the complex matrix for eigenvalue computation.
NSize of the matrix (number of rows or columns in A).

Definition at line 53 of file linalg_1.cpp.

◆ EigenSolve() [3/3]

void PROJECT_NS::EigenSolve ( kids_real * E,
kids_real * T,
kids_real * A,
size_t N )

Solve the eigenvalue problem for real matrices.

Parameters
EPointer to the array to store the eigenvalues.
TPointer to the temporary matrix.
APointer to the matrix for eigenvalue computation.
NSize of the matrix (number of rows or columns in A).

Definition at line 44 of file linalg_1.cpp.

Referenced by ARRAY_CORRECT_U(), ARRAY_EXP_MAT_GENERAL(), PROJECT_NS::Kernel_Representation::executeKernel_impl(), PROJECT_NS::Kernel_GWP::impl_0(), and PROJECT_NS::Kernel_GWP::impl_1().

Here is the caller graph for this function:

◆ einsum() [1/2]

template<typename T >
void PROJECT_NS::einsum ( const std::string & einsum_expression,
std::vector< T * > data_inputs,
const std::vector< std::vector< std::size_t > > & shape_inputs,
T * data_output,
const std::vector< std::size_t > & shape_output = {} )
Template Parameters
Tdata type
Parameters
[in]einsum_expressionexpression for einsum rule
[in]data_inputsvector of pointers of data of input tensors
[in]shapes_inputsvector of shapes of input tensors
[in,out]data_outputpointer stored data of output tensor
[in]shape_outputshape of the output tensor

Definition at line 267 of file Einsum.h.

◆ einsum() [2/2]

template<typename T >
void PROJECT_NS::einsum ( EinsumHelper & EH,
const std::vector< T * > & data_inputs,
T * data_output )

◆ einsum_fun()

template<typename T , typename Tout >
void PROJECT_NS::einsum_fun ( EinsumHelper & EH,
Expression< T > & FP,
const std::vector< void * > & data_inputs,
const std::vector< kids_dtype > & data_idtype,
Tout * data_output )

custumized einsum-like function operation

Template Parameters
Tdata type
Parameters
[in]EHEinsumHelper object
[in]data_inputsvector of pointers of data of input tensors
[in,out]data_outputpointer stored data of output tensor

Definition at line 21 of file RuleEvaluator.cpp.

References PROJECT_NS::EinsumHelper::count1, PROJECT_NS::EinsumHelper::count3, PROJECT_NS::EinsumHelper::dh_inputs, PROJECT_NS::EinsumHelper::dh_output, PROJECT_NS::EinsumHelper::einsum_dims, PROJECT_NS::EinsumHelper::einsum_iposes, PROJECT_NS::Expression< T >::evaluate(), PROJECT_NS::EinsumHelper::ipos_inputs, kids_complex_type, kids_int_type, kids_real_type, PROJECT_NS::DimenHelper::mapldims, PROJECT_NS::EinsumHelper::total_esidx, PROJECT_NS::EinsumHelper::total_loop, and PROJECT_NS::EinsumHelper::total_tensor.

Referenced by PROJECT_NS::RuleEvaluator::calculateResult().

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

◆ FMT_WIDTH()

constexpr int PROJECT_NS::FMT_WIDTH ( int X)
inlineconstexpr

control the io printing format

Definition at line 39 of file fmt.h.

◆ getDictOfKernels()

std::map< std::string, Kernel * > & PROJECT_NS::getDictOfKernels ( )

Definition at line 242 of file Kernel.cpp.

◆ hopping_impulse()

int PROJECT_NS::hopping_impulse ( kids_real * direction,
kids_real * np,
kids_real * nm,
kids_real Efrom,
kids_real Eto,
int from,
int to,
bool reflect )

Definition at line 133 of file Kernel_Elec_NAD.cpp.

References PROJECT_NS::Dimension::N.

Referenced by PROJECT_NS::Kernel_Elec_NAD::executeKernel_impl(), and PROJECT_NS::Kernel_Elec_Switch::executeKernel_impl().

Here is the caller graph for this function:

◆ LinearSolve()

void PROJECT_NS::LinearSolve ( kids_real * x,
kids_real * A,
kids_real * b,
size_t N )

Solve a linear system Ax = b for real matrices.

Parameters
xPointer to the solution vector x.
APointer to the coefficient matrix A.
bPointer to the right-hand side vector b.
NSize of the system (number of rows or columns in A).

Definition at line 37 of file linalg_1.cpp.

◆ MatrixInverse()

void PROJECT_NS::MatrixInverse ( kids_real * invA,
kids_real * A,
size_t N )

Compute the inverse of a matrix for real numbers.

Parameters
invAPointer to the matrix to store the inverse of A.
APointer to the matrix A.
NSize of the matrix (number of rows or columns in A).

◆ ModelFactory()

std::shared_ptr< Kernel > PROJECT_NS::ModelFactory ( const std::string & name)
extern

Definition at line 12 of file ModelFactory.cpp.

Referenced by PROJECT_NS::Handler::Handler().

Here is the caller graph for this function:

◆ mspes_CL1D()

int PROJECT_NS::mspes_CL1D ( double * V,
double * dV,
double * ddV,
double * R,
int flag,
int rdim,
int fdim )

Definition at line 402 of file Model_NAD1D.cpp.

References mspes_parm.

Referenced by PROJECT_NS::Model_NAD1D::executeKernel_impl().

Here is the caller graph for this function:

◆ mspes_DAC()

int PROJECT_NS::mspes_DAC ( double * V,
double * dV,
double * ddV,
double * R,
int flag,
int rdim,
int fdim )

Definition at line 75 of file Model_NAD1D.cpp.

Referenced by PROJECT_NS::Model_NAD1D::executeKernel_impl().

Here is the caller graph for this function:

◆ mspes_DAG()

int PROJECT_NS::mspes_DAG ( double * V,
double * dV,
double * ddV,
double * R,
int flag,
int rdim,
int fdim )

Definition at line 143 of file Model_NAD1D.cpp.

Referenced by PROJECT_NS::Model_NAD1D::executeKernel_impl().

Here is the caller graph for this function:

◆ mspes_DBG()

int PROJECT_NS::mspes_DBG ( double * V,
double * dV,
double * ddV,
double * R,
int flag,
int rdim,
int fdim )

Definition at line 113 of file Model_NAD1D.cpp.

Referenced by PROJECT_NS::Model_NAD1D::executeKernel_impl().

Here is the caller graph for this function:

◆ mspes_DRN()

int PROJECT_NS::mspes_DRN ( double * V,
double * dV,
double * ddV,
double * R,
int flag,
int rdim,
int fdim )

Definition at line 173 of file Model_NAD1D.cpp.

Referenced by PROJECT_NS::Model_NAD1D::executeKernel_impl().

Here is the caller graph for this function:

◆ mspes_ECR()

int PROJECT_NS::mspes_ECR ( double * V,
double * dV,
double * ddV,
double * R,
int flag,
int rdim,
int fdim )

Definition at line 95 of file Model_NAD1D.cpp.

Referenced by PROJECT_NS::Model_NAD1D::executeKernel_impl().

Here is the caller graph for this function:

◆ mspes_JC1D()

int PROJECT_NS::mspes_JC1D ( double * V,
double * dV,
double * ddV,
double * R,
int flag,
int rdim,
int fdim )

Definition at line 422 of file Model_NAD1D.cpp.

References mspes_parm.

Referenced by PROJECT_NS::Model_NAD1D::executeKernel_impl().

Here is the caller graph for this function:

◆ mspes_MORSE15()

int PROJECT_NS::mspes_MORSE15 ( double * V,
double * dV,
double * ddV,
double * R,
int flag,
int rdim,
int fdim )

Definition at line 315 of file Model_NAD1D.cpp.

Referenced by PROJECT_NS::Model_NAD1D::executeKernel_impl().

Here is the caller graph for this function:

◆ mspes_MORSE15C()

int PROJECT_NS::mspes_MORSE15C ( double * V,
double * dV,
double * ddV,
double * R,
int flag,
int rdim,
int fdim )

Definition at line 344 of file Model_NAD1D.cpp.

Referenced by PROJECT_NS::Model_NAD1D::executeKernel_impl().

Here is the caller graph for this function:

◆ mspes_MORSE15E()

int PROJECT_NS::mspes_MORSE15E ( double * V,
double * dV,
double * ddV,
double * R,
int flag,
int rdim,
int fdim )

Definition at line 373 of file Model_NAD1D.cpp.

Referenced by PROJECT_NS::Model_NAD1D::executeKernel_impl().

Here is the caller graph for this function:

◆ mspes_MORSE3A()

int PROJECT_NS::mspes_MORSE3A ( double * V,
double * dV,
double * ddV,
double * R,
int flag,
int rdim,
int fdim )

Definition at line 195 of file Model_NAD1D.cpp.

Referenced by PROJECT_NS::Model_NAD1D::executeKernel_impl().

Here is the caller graph for this function:

◆ mspes_MORSE3B()

int PROJECT_NS::mspes_MORSE3B ( double * V,
double * dV,
double * ddV,
double * R,
int flag,
int rdim,
int fdim )

Definition at line 234 of file Model_NAD1D.cpp.

Referenced by PROJECT_NS::Model_NAD1D::executeKernel_impl().

Here is the caller graph for this function:

◆ mspes_MORSE3C()

int PROJECT_NS::mspes_MORSE3C ( double * V,
double * dV,
double * ddV,
double * R,
int flag,
int rdim,
int fdim )

Definition at line 273 of file Model_NAD1D.cpp.

Referenced by PROJECT_NS::Model_NAD1D::executeKernel_impl().

Here is the caller graph for this function:

◆ mspes_NA_I()

int PROJECT_NS::mspes_NA_I ( double * V,
double * dV,
double * ddV,
double * R,
int flag,
int rdim,
int fdim )

Definition at line 442 of file Model_NAD1D.cpp.

References phys::au_2_amu, and mspes_parm.

Referenced by PROJECT_NS::Model_NAD1D::executeKernel_impl().

Here is the caller graph for this function:

◆ mspes_SAC()

int PROJECT_NS::mspes_SAC ( double * V,
double * dV,
double * ddV,
double * R,
int flag,
int rdim,
int fdim )

Definition at line 12 of file Model_NAD1D.cpp.

Referenced by PROJECT_NS::Model_NAD1D::executeKernel_impl().

Here is the caller graph for this function:

◆ mspes_SAC2()

int PROJECT_NS::mspes_SAC2 ( double * V,
double * dV,
double * ddV,
double * R,
int flag,
int rdim,
int fdim )

Definition at line 32 of file Model_NAD1D.cpp.

Referenced by PROJECT_NS::Model_NAD1D::executeKernel_impl().

Here is the caller graph for this function:

◆ mspes_SAC3()

int PROJECT_NS::mspes_SAC3 ( double * V,
double * dV,
double * ddV,
double * R,
int flag,
int rdim,
int fdim )

Definition at line 53 of file Model_NAD1D.cpp.

Referenced by PROJECT_NS::Model_NAD1D::executeKernel_impl().

Here is the caller graph for this function:

◆ NAD_Adapt_Kernel()

std::shared_ptr< Kernel > PROJECT_NS::NAD_Adapt_Kernel ( std::shared_ptr< Kernel > kmodel,
std::string NAD_Kernel_name )

Integrator Kernel

Result & Sampling & TCF

Definition at line 17 of file NAD_Adapt_Kernel.cpp.

Referenced by SolverFactory().

Here is the caller graph for this function:

◆ NAD_AdaptM_Kernel()

std::shared_ptr< Kernel > PROJECT_NS::NAD_AdaptM_Kernel ( std::shared_ptr< Kernel > kmodel,
std::string NAD_Kernel_name )

Integrator Kernel

Result & Sampling & TCF

Definition at line 18 of file NAD_AdaptM_Kernel.cpp.

Referenced by SolverFactory().

Here is the caller graph for this function:

◆ NAD_Kernel()

std::shared_ptr< Kernel > PROJECT_NS::NAD_Kernel ( std::shared_ptr< Kernel > kmodel,
std::string NAD_Kernel_name )

Integrator Kernel

Result & Sampling & TCF

Definition at line 17 of file NAD_Kernel.cpp.

Referenced by SolverFactory().

Here is the caller graph for this function:

◆ PseudoInverse()

void PROJECT_NS::PseudoInverse ( kids_real * A,
kids_real * invA,
size_t N,
kids_real e = 1E-5 )

Compute the pseudo-inverse of a matrix for real numbers.

Parameters
APointer to the matrix A.
invAPointer to the matrix to store the pseudo-inverse of A.
NSize of the matrix (number of rows or columns in A).
eTolerance value for singular values.

Definition at line 71 of file linalg_1.cpp.

◆ SolverFactory()

std::shared_ptr< Kernel > PROJECT_NS::SolverFactory ( const std::string & name,
std::shared_ptr< Kernel > kmodel )
extern

Definition at line 9 of file SolverFactory.cpp.

References NAD_Adapt_Kernel(), NAD_AdaptM_Kernel(), and NAD_Kernel().

Referenced by PROJECT_NS::Handler::Handler().

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

Variable Documentation

◆ KRULE_KKCMM

constexpr std::string PROJECT_NS::KRULE_KKCMM = "{\"rule\":\"KKCMM<mik>(K1<m[$OCC][$OCC]>)\"}"
constexpr

Definition at line 12 of file IntrinsicRules.h.

◆ KRULE_KKSQC

constexpr std::string PROJECT_NS::KRULE_KKSQC = {"$KK_SQC", "KK"}
constexpr

Definition at line 14 of file IntrinsicRules.h.

◆ KRULE_KKwMM

constexpr std::string PROJECT_NS::KRULE_KKwMM = {"$KK_wMM", "KK"}
constexpr

Definition at line 13 of file IntrinsicRules.h.

◆ MPI_INDEX_PLACEHOLDER

constexpr std::string PROJECT_NS::MPI_INDEX_PLACEHOLDER = "$MPI"
constexpr

Definition at line 10 of file IntrinsicRules.h.

◆ MSG_DATASET_BAD_KEY

const std::string PROJECT_NS::MSG_DATASET_BAD_KEY = "bad key error : "

Definition at line 38 of file Exception.h.

◆ MSG_DATASET_BAD_SIZE

const std::string PROJECT_NS::MSG_DATASET_BAD_SIZE = "bad size error : "

Definition at line 39 of file Exception.h.

◆ MSG_DATASET_BAD_TYPE

const std::string PROJECT_NS::MSG_DATASET_BAD_TYPE = "bad type error : "

Definition at line 40 of file Exception.h.

◆ MSG_DATASET_ERR_DUMP

const std::string PROJECT_NS::MSG_DATASET_ERR_DUMP = "dump error : "

Definition at line 42 of file Exception.h.

◆ MSG_DATASET_ERR_LOAD

const std::string PROJECT_NS::MSG_DATASET_ERR_LOAD = "load error : "

Definition at line 41 of file Exception.h.

◆ MSG_PARAM_BAD_KEY

const std::string PROJECT_NS::MSG_PARAM_BAD_KEY = "bad key error : "

Definition at line 36 of file Exception.h.

◆ MSG_PARAM_BAD_TYPE

const std::string PROJECT_NS::MSG_PARAM_BAD_TYPE = "bad type error : "

Definition at line 37 of file Exception.h.

◆ mspes_parm

◆ OCCUPATION_PLACEHOLDER

constexpr std::string PROJECT_NS::OCCUPATION_PLACEHOLDER = "$OCC"
constexpr

Definition at line 8 of file IntrinsicRules.h.

◆ TRJ_INDEX_PLACEHOLDER

constexpr std::string PROJECT_NS::TRJ_INDEX_PLACEHOLDER = "$TRJ"
constexpr

Definition at line 9 of file IntrinsicRules.h.