PAWpySeed: /home/kyle/Research/projects/pawpyseed/pawpyseed/core/momentum.h Source File

PAWpySeed Parallel C/Python package for numerical analysis of PAW DFT wavefunctions

- Main Page
- Classes
- Files

- File List
- File Members

momentum.h
Go to the documentation of this file.
1
5 #ifndef MOMENTUM_H
6 #define MOMENTUM_H
7 #include <complex.h>
8 #include <math.h>
9
10 typedef struct transform_spline {
11 double* transform;
12 double** spline;
13 } transform_spline_t;
14
15 typedef struct density_ft {
16 int n1;
17 int l1;
18 int m1;
19 int n2;
20 int l2;
21 int m2;
22 int size;
23 double* ks;
24 transform_spline_t* transforms; // size: sum(l1,l2)-diff(l1,l2)
25 } density_ft_t;
26
27 typedef struct density_ft_elem {
28 int num_densities;
29 int total_projs;
30 density_ft_t* densities;
31 } density_ft_elem_t;
32
33 void free_transform_spline_list(transform_spline_t* transforms, int num_transforms);
34
35 void free_density_ft_list(density_ft_t* densities, int total_projs);
36
37 void free_density_ft_elem_list(density_ft_elem_t* elems, int num_elems);
38
39 float complex pseudo_momentum(int* GP, int* G_bounds, double* lattice,
40 int* G1s, float complex* C1s, int num_waves1,
41 int* G2s, float complex* C2s, int num_waves2, int* fftg);
42
43 void mul_partial_waves(double* product, int size, double* r, double* f1, double* f2);
44
45 void make_rho(double* rho, int size, double* grid, double* aewave1, double* pswave1, double* aewave2, double* pswave2);
46
47 density_ft_t spher_transforms(int size, double* r, double* f, int l1, int m1, int l2, int m2, double encut);
48
49 double complex spher_momentum(density_ft_t densities, double* G);
50
51 density_ft_elem_t get_transforms(ppot_t pp, double encut);
52
53 density_ft_elem_t* get_all_transforms(pswf_t* wf, double encut);
54
55 double complex get_momentum_matrix_element(pswf_t* wf, int* labels, double* coords,
56 int b1, int k1, int s1,
57 int b2, int k2, int s2,
58 int* GP, density_ft_elem_t* elems);
59
60 void get_momentum_matrix(double complex* matrix, int numg, int* igall,
61 pswf_t* wf, int* labels, double* coords,
62 int band1, int kpt1, int spin1,
63 int band2, int kpt2, int spin2,
64 density_ft_elem_t* transforms_list,
65 double encut);
66
67 void momentum_grid_size(pswf_t* wf, double* nb1max, double* nb2max, double* nb3max,
68 int* npmax, double encut);
69
70 int get_momentum_grid(int* igall, pswf_t* wf, double nb1max, double nb2max, double nb3max, double encut);
71
72 void grid_bounds(int* G_bounds, int* gdim, int* igall, int num_waves);
73
74 void list_to_grid_map(int* grid, int* G_bounds, int* gdim, int* igall, int num_waves);
75
76 void fill_grid(float complex* x, int* Gs, float complex* Cs, int* fftg, int numg);
77
78 void fullwf_reciprocal(double complex* Cs, int* igall, pswf_t* wf, int numg,
79 int band_num, int kpt_num, int* labels, double* coords);
80
81 double complex kwave_value(double* x, double* wave, double** spline, int size,
82 int l, int m, double* pos);
83
84 double complex quick_overlap(int* dG, double complex* C1s, double complex* C2s, int numg,
85 int* Gs, int* gmap, int* G_bounds, int* gdim);
86
87 #endif
density_ft_elem::total_projs
int total_projs
Definition: momentum.h:29
fill_grid
void fill_grid(float complex *x, int *Gs, float complex *Cs, int *fftg, int numg)
transform_spline_t
struct transform_spline transform_spline_t
pawpyseed.core.rayleigh.grid
grid
Definition: rayleigh.py:30
momentum_grid_size
void momentum_grid_size(pswf_t *wf, double *nb1max, double *nb2max, double *nb3max, int *npmax, double encut)
mul_partial_waves
void mul_partial_waves(double *product, int size, double *r, double *f1, double *f2)
transform_spline
Definition: momentum.h:10
get_transforms
density_ft_elem_t get_transforms(ppot_t pp, double encut)
get_momentum_matrix
void get_momentum_matrix(double complex *matrix, int numg, int *igall, pswf_t *wf, int *labels, double *coords, int band1, int kpt1, int spin1, int band2, int kpt2, int spin2, density_ft_elem_t *transforms_list, double encut)
fullwf_reciprocal
void fullwf_reciprocal(double complex *Cs, int *igall, pswf_t *wf, int numg, int band_num, int kpt_num, int *labels, double *coords)
density_ft_elem
Definition: momentum.h:27
ppot
Definition: utils.h:48
free_density_ft_elem_list
void free_density_ft_elem_list(density_ft_elem_t *elems, int num_elems)
density_ft::n1
int n1
Definition: momentum.h:16
pawpyseed.core.gaunt.f
f
Definition: gaunt.py:29
density_ft::transforms
transform_spline_t * transforms
Definition: momentum.h:24
free_transform_spline_list
void free_transform_spline_list(transform_spline_t *transforms, int num_transforms)
pseudo_momentum
float complex pseudo_momentum(int *GP, int *G_bounds, double *lattice, int *G1s, float complex *C1s, int num_waves1, int *G2s, float complex *C2s, int num_waves2, int *fftg)
transform_spline::spline
double ** spline
Definition: momentum.h:12
pawpyseed.core.quadrature.x
list x
Definition: quadrature.py:9
density_ft::m2
int m2
Definition: momentum.h:21
get_all_transforms
density_ft_elem_t * get_all_transforms(pswf_t *wf, double encut)
get_momentum_matrix_element
double complex get_momentum_matrix_element(pswf_t *wf, int *labels, double *coords, int b1, int k1, int s1, int b2, int k2, int s2, int *GP, density_ft_elem_t *elems)
free_density_ft_list
void free_density_ft_list(density_ft_t *densities, int total_projs)
grid_bounds
void grid_bounds(int *G_bounds, int *gdim, int *igall, int num_waves)
density_ft_t
struct density_ft density_ft_t
density_ft_elem_t
struct density_ft_elem density_ft_elem_t
density_ft::size
int size
Definition: momentum.h:22
density_ft_elem::densities
density_ft_t * densities
Definition: momentum.h:30
pswf
Definition: utils.h:113
density_ft::n2
int n2
Definition: momentum.h:19
transform_spline::transform
double * transform
Definition: momentum.h:11
spher_momentum
double complex spher_momentum(density_ft_t densities, double *G)
density_ft
Definition: momentum.h:15
density_ft::l2
int l2
Definition: momentum.h:20
pawpyseed.core.rayleigh.r
r
Definition: rayleigh.py:38
density_ft::l1
int l1
Definition: momentum.h:17
list_to_grid_map
void list_to_grid_map(int *grid, int *G_bounds, int *gdim, int *igall, int num_waves)
density_ft::m1
int m1
Definition: momentum.h:18
density_ft::ks
double * ks
Definition: momentum.h:23
spher_transforms
density_ft_t spher_transforms(int size, double *r, double *f, int l1, int m1, int l2, int m2, double encut)
density_ft_elem::num_densities
int num_densities
Definition: momentum.h:28
quick_overlap
double complex quick_overlap(int *dG, double complex *C1s, double complex *C2s, int numg, int *Gs, int *gmap, int *G_bounds, int *gdim)
make_rho
void make_rho(double *rho, int size, double *grid, double *aewave1, double *pswave1, double *aewave2, double *pswave2)
kwave_value
double complex kwave_value(double *x, double *wave, double **spline, int size, int l, int m, double *pos)
get_momentum_grid
int get_momentum_grid(int *igall, pswf_t *wf, double nb1max, double nb2max, double nb3max, double encut)