1#ifndef GLOBAL_FUNCTION_H
2#define GLOBAL_FUNCTION_H
26void NOTE(
const std::string& words);
27void NEW_PART(
const std::string& words);
35void OUT(std::ofstream& ofs,
const std::string& name);
38void OUT(std::ofstream& ofs,
const std::string& name,
const T& a)
40 std::stringstream name2;
42 ofs <<
" " << std::setw(40) << name2.str() <<
" = " << a << std::endl;
48void OUT(std::ofstream& ofs,
const std::string& name,
const T& x,
const T& y)
50 ofs <<
" " << std::setw(40) << name <<
" = [ " << x <<
", " << y <<
" ]" << std::endl;
56void OUT(std::ofstream& ofs,
const std::string& name,
const T& x,
const T& y,
const T& z)
58 ofs <<
" " << std::setw(40) << name <<
" = [ " << x <<
", " << y <<
", " << z <<
" ]" << std::endl;
64void OUTP(std::ofstream& ofs,
const std::string& name,
const T& a,
const std::string& explanation =
"")
66 ofs << std::setw(30) << name <<
" " << a <<
" #" << explanation << std::endl;
70void OUT(
const std::string& name,
const T& a)
72 std::cout <<
" " << std::setw(40) << name <<
" = " << a << std::endl;
77void OUT_TIME(
const std::string& name, time_t&
start, time_t& end);
101void DONE(std::ofstream& ofs,
const std::string& description,
bool only_rank0 =
false);
108template <
class T,
class TI>
109inline void ZEROS(std::complex<T>* u,
const TI n)
112 for (TI i = 0; i < n; i++)
114 u[i] = std::complex<T>(0.0, 0.0);
119template <
class T,
class TI>
123 for (TI i = 0; i < n; i++)
140static void READ_VALUE(std::ifstream& ifs,
T& v)
153 const std::string& TargetName,
154 const bool restart =
true,
155 const bool ifwarn =
true);
163 const std::string& TargetName,
164 const bool restart =
true,
165 const bool ifwarn =
true);
167void SCAN_END(std::ifstream& ifs,
const std::string& TargetName,
const bool ifwarn =
true);
170static inline void DCOPY(
const T& a,
T& b,
const int& dim)
172 for (
int i = 0; i < dim; ++i) {
178inline void DCOPY(
const T* a,
T* b,
const int& dim) {
179 for (
int i = 0; i < dim; ++i) {
188inline void COPYARRAY(
const std::complex<double>* a, std::complex<double>* b,
const long dim)
191 zcopy_(&dim, a, &one, b, &one);
195inline void COPYARRAY(
const double* a,
double* b,
const long dim)
198 dcopy_(&dim, a, &one, b, &one);
201void BLOCK_HERE(
const std::string& description);
210static inline T* VECTOR_TO_PTR(std::vector<T>& v)
215static inline T* VECTOR_TO_PTR(std::valarray<T>& v)
221static inline const T* VECTOR_TO_PTR(
const std::vector<T>& v)
226static inline const T* VECTOR_TO_PTR(
const std::valarray<T>& v)
241 std::stringstream newstr;
242 newstr << std::setprecision(n) << t;
254template <
typename T_map,
typename T_key1>
257 auto ms1 = ms.find(key1);
258 if (ms1 == ms.end()) {
261 return static_cast<void*
>(&ms1->second);
264template <
typename T_map,
typename T_key1,
typename... T_key_tail>
265inline void*
MAP_EXIST(T_map& ms,
const T_key1& key1,
const T_key_tail&... key_tail)
267 auto ms1 = ms.find(key1);
268 if (ms1 == ms.end()) {
271 return MAP_EXIST(ms1->second, key_tail...);
274template <
typename T_map,
typename T_key1>
275inline const void*
MAP_EXIST(
const T_map& ms,
const T_key1& key1)
277 auto ms1 = ms.find(key1);
278 if (ms1 == ms.end()) {
281 return static_cast<const void*
>(&ms1->second);
284template <
typename T_map,
typename T_key1,
typename... T_key_tail>
285inline const void*
MAP_EXIST(
const T_map& ms,
const T_key1& key1,
const T_key_tail&... key_tail)
287 auto ms1 = ms.find(key1);
288 if (ms1 == ms.end()) {
291 return MAP_EXIST(ms1->second, key_tail...);
317template <
typename T_element>
318static inline void DELETE_MUL_PTR(T_element* v)
323template <
typename T_element,
typename T_N_first,
typename... T_N_tail>
324static inline void DELETE_MUL_PTR(T_element* v,
const T_N_first N_first,
const T_N_tail... N_tail)
326 for (T_N_first i = 0; i < N_first; ++i) {
327 DELETE_MUL_PTR(v[i], N_tail...);
347template <
typename T_element>
348static inline void FREE_MUL_PTR(T_element* v)
353template <
typename T_element,
typename T_N_first,
typename... T_N_tail>
354static inline void FREE_MUL_PTR(T_element* v,
const T_N_first N_first,
const T_N_tail... N_tail)
356 for (T_N_first i = 0;
i < N_first; ++
i) {
357 FREE_MUL_PTR(v[i], N_tail...);
364T ddot_real(
const int& dim,
const std::complex<T>* psi_L,
const std::complex<T>* psi_R,
const bool reduce =
true);
371static inline bool IS_COLUMN_MAJOR_KS_SOLVER(std::string ks_solver)
373 return ks_solver ==
"genelpa" || ks_solver ==
"elpa" || ks_solver ==
"scalapack_gvx" || ks_solver ==
"cusolver"
374 || ks_solver ==
"cusolvermp" || ks_solver ==
"cg_in_lcao" || ks_solver ==
"pexsi" || ks_solver ==
"lapack";
void zcopy_(long const *n, const std::complex< double > *a, int const *incx, std::complex< double > *b, int const *incy)
void dcopy_(long const *n, const double *a, int const *incx, double *b, int const *incy)
#define T
Definition exp.cpp:237
std::ofstream ofs_warning
Definition global_variable.cpp:39
void MAKE_DIR(const std::string &fn)
Definition global_function.cpp:61
void OUTP(std::ofstream &ofs, const std::string &name, const T &a, const std::string &explanation="")
Definition global_function.h:64
void NOTE(const std::string &words)
Definition global_function.cpp:24
bool SCAN_LINE_BEGIN(std::ifstream &ifs, const std::string &TargetName, const bool restart, const bool ifwarn)
Definition global_function.cpp:140
void DONE(std::ofstream &ofs, const std::string &description, const bool only_rank0)
Definition global_function.cpp:81
bool SCAN_BEGIN(std::ifstream &ifs, const std::string &TargetName, const bool restart, const bool ifwarn)
Definition global_function.cpp:110
void OUT_TIME(const std::string &name, time_t &start, time_t &end)
Definition global_function.cpp:226
void SCAN_END(std::ifstream &ifs, const std::string &TargetName, const bool ifwarn)
Definition global_function.cpp:184
void * MAP_EXIST(T_map &ms, const T_key1 &key1)
Definition global_function.h:255
void COPYARRAY(const T *a, T *b, const long dim)
void TEST_LEVEL(const std::string &name, bool disable)
T ddot_real(const int &dim, const std::complex< T > *psi_L, const std::complex< T > *psi_R, const bool reduce=true)
Definition global_function_ddotreal.cpp:20
std::string TO_STRING(const T &t, const int n=20)
Definition global_function.h:239
void ZEROS(std::complex< T > *u, const TI n)
Definition global_function.h:109
size_t MemAvailable()
Definition global_function.cpp:244
void NEW_PART(const std::string &words)
Definition global_function.cpp:39
void AUTO_SET(const std::string &name, const T &a)
Definition global_function.h:90
void OUT(std::ofstream &ofs, const std::string &name)
Definition global_function.cpp:51
void BLOCK_HERE(const std::string &description)
Definition global_function.cpp:195
int4 i[880]
Definition sincos.cpp:28
Definition array_pool.h:6
file(GLOB ATen_CORE_SRCS "*.cpp") set(ATen_CPU_SRCS $
Definition CMakeLists.txt:1
iclock::time_point start
Definition test_partition.cpp:22