forked from SPARC-X/SPARC
-
Notifications
You must be signed in to change notification settings - Fork 0
/
cyclix_tools.h
94 lines (67 loc) · 2.51 KB
/
cyclix_tools.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
/**
* @file cyclix_tools.h
* @brief This file contains the functions for performing transformations related to cyclix geometry
*
* @author Abhiraj Sharma <[email protected]>
* Phanish Suryanarayana <[email protected]>
*
* Copyright (c) 2017 Material Physics & Mechanics Group at Georgia Tech.
*/
#ifndef CYCLIX_TOOLS_H
#define CYCLIX_TOOLS_H
#include "isddft.h"
void init_cyclix(SPARC_OBJ *pSPARC);
void free_cyclix(SPARC_OBJ *pSPARC);
/*
@ brief: function to calculate rotational matrices in cyclix symmetry
*/
void RotMat_cyclix(SPARC_OBJ *pSPARC, double ty, double tz);
/*
@ brief: function to determine cell typ corresponding to the given cyclix symmetry
*/
void CellTyp_cyclix(SPARC_OBJ *pSPARC);
/*
@ brief: function to determine cell parameters like vacuum, inner and outer radii
*/
void CellParm_cyclix(SPARC_OBJ *pSPARC);
/*
@ brief: function to store laplacian coefficients
*/
void LapStencil_cyclix(SPARC_OBJ *pSPARC);
/*
@ brief: function to convert non-cartesian to cartesian coordinates
*/
void nonCart2Cart_coord_cyclix(const SPARC_OBJ *pSPARC, double *x, double *y, double *z);
/*
@ brief: function to convert cartesian to non-cartesian coordinates
*/
void Cart2nonCart_coord_cyclix(const SPARC_OBJ *pSPARC, double *x, double *y, double *z);
/*
@brief: function to calculate integration weights
*/
void Integration_weights_cyclix(SPARC_OBJ *pSPARC, double *Intg_wt, int ipos_x, int Nx, int Ny, int Nz);
/*
@brief: function to calculate distance between two points
*/
void CalculateDistance_cyclix(SPARC_OBJ *pSPARC, double x, double y, double z, double xref, double yref, double zref, double *d);
/*
@ brief: function to precondition the laplacian for Poisson equation
*/
void Jacobi_preconditioner_cyclix(SPARC_OBJ *pSPARC, int N, double c, double *r, double *f, MPI_Comm comm);
/*
@ brief: function to normalize the eigenvectors for cyclix system
*/
void NormalizeEigfunc_cyclix(SPARC_OBJ *pSPARC, int spn_i);
/*
@ brief: function to normalize the eigenvectors for cyclix system
*/
void NormalizeEigfunc_kpt_cyclix(SPARC_OBJ *pSPARC, int spn_i, int kpt);
/*
@ brief: generalized eigenvalue problem solver for cyclix
*/
int generalized_eigenvalue_problem_cyclix(SPARC_OBJ *pSPARC, double *Hp_local, double *Mp_local, double *eig_val);
/*
@ brief: generalized eigenvalue problem solver for cyclix complex case
*/
int generalized_eigenvalue_problem_cyclix_kpt(SPARC_OBJ *pSPARC, double _Complex *Hp_local, double _Complex *Mp_local, double *eig_val);
#endif // CYCLIX_TOOLS_H