18 #include "../include/ds.h" 19 #include "../include/constants.h" 21 #include <unordered_map> 96 std::string
filecheck(std::string filename);
105 void file_A(std::string filename,
double *
A,
double omega);
124 __global__
void simple_K(
double *xp,
double *yp,
double *zp,
double mass,
136 double xMax,
double yMax,
double zMax,
138 double omega,
double fudge,
double *
A);
144 double xMax,
double yMax,
double zMax,
146 double omega,
double fudge,
double *
A);
152 double xMax,
double yMax,
double zMax,
154 double omega,
double fudge,
double *
A);
160 double xMax,
double yMax,
double zMax,
162 double omega,
double fudge,
double *
A);
168 double xMax,
double yMax,
double zMax,
170 double omega,
double fudge,
double *
A);
176 double xMax,
double yMax,
double zMax,
178 double omega,
double fudge,
double *
A);
184 __global__
void ktest_Ay(
double *
x,
double *
y,
double *z,
185 double xMax,
double yMax,
double zMax,
187 double omega,
double fudge,
double *
A);
192 __global__
void ktest_Ax(
double *
x,
double *
y,
double *z,
193 double xMax,
double yMax,
double zMax,
195 double omega,
double fudge,
double *
A);
200 __global__
void kring_Az(
double *
x,
double *
y,
double *z,
201 double xMax,
double yMax,
double zMax,
203 double omega,
double fudge,
double *
A);
214 __global__
void kharmonic_V(
double *
x,
double *
y,
double *z,
double *items,
215 double *Ax,
double *Ay,
double *Az,
double *
V);
220 __global__
void ktorus_V(
double *
x,
double *
y,
double *z,
double *items,
221 double *Ax,
double *Ay,
double *Az,
double *
V);
226 __global__
void kstd_wfc(
double *
x,
double *
y,
double *z,
double *items,
227 double winding,
double *phi, double2 *
wfc);
232 __global__
void ktorus_wfc(
double *
x,
double *
y,
double *z,
double *items,
233 double winding,
double *phi, double2 *
wfc);
239 __global__
void aux_fields(
double *
V,
double *
K,
double gdt,
double dt,
240 double* Ax,
double *Ay,
double* Az,
241 double *px,
double *py,
double *pz,
242 double* pAx,
double* pAy,
double* pAz,
243 double2* GV, double2* EV, double2* GK, double2* EK,
244 double2* GpAx, double2* GpAy, double2* GpAz,
245 double2* EpAx, double2* EpAy, double2* EpAz);
double * curl2d(Grid &par, double *Ax, double *Ay)
Finds Bz, the curl of the gauge field.
% % % starting wavefunction wfc
double * curl3d_r(Grid &par, double *Bx, double *By)
Finds Br, the curl of the gauge field.
void generate_K(Grid &par)
This function calls the appropriate K kernel.
double * curl3d_phi(Grid &par, double *Bx, double *By)
Finds Bphi, the curl of the gauge field.
__global__ void kring_rotation_Ay(double *x, double *y, double *z, double xMax, double yMax, double zMax, double omegaX, double omegaY, double omegaZ, double omega, double fudge, double *A)
Kernel for simple triangular lattice of rings, Ay.
double * curl3d_y(Grid &par, double *Ax, double *Ay, double *Az)
Finds By, the curl of the gauge field.
__global__ void simple_K(double *xp, double *yp, double *zp, double mass, double *K)
Simple kernel for generating K.
__global__ void kring_Az(double *x, double *y, double *z, double xMax, double yMax, double zMax, double omegaX, double omegaY, double omegaZ, double omega, double fudge, double *A)
Kernel for testing Az.
void generate_grid(Grid &par)
double * curl3d_z(Grid &par, double *Ax, double *Ay, double *Az)
Finds Bz, the curl of the gauge field.
__global__ void ktorus_V(double *x, double *y, double *z, double *items, double *Ax, double *Ay, double *Az, double *V)
Kernel to generate toroidal V (3d)
void generate_p_space(Grid &par)
Function to generate momentum grids.
__global__ void kring_rotation_Ax(double *x, double *y, double *z, double xMax, double yMax, double zMax, double omegaX, double omegaY, double omegaZ, double omega, double fudge, double *A)
Kernel for simple triangular lattice of rings, Ax.
__global__ void kring_rotation_Az(double *x, double *y, double *z, double xMax, double yMax, double zMax, double omegaX, double omegaY, double omegaZ, double omega, double fudge, double *A)
Kernel for simple triangular lattice of rings, Az.
__global__ void ktest_Ax(double *x, double *y, double *z, double xMax, double yMax, double zMax, double omegaX, double omegaY, double omegaZ, double omega, double fudge, double *A)
Kernel for testing Ax.
__global__ void ktorus_wfc(double *x, double *y, double *z, double *items, double winding, double *phi, double2 *wfc)
Kernel to generate toroidal wavefunction.
void generate_fields(Grid &par)
Function to generate V.
__global__ void kharmonic_V(double *x, double *y, double *z, double *items, double *Ax, double *Ay, double *Az, double *V)
Kernel to generate harmonic V.
__global__ void ktest_Ay(double *x, double *y, double *z, double xMax, double yMax, double zMax, double omegaX, double omegaY, double omegaZ, double omega, double fudge, double *A)
Kernel for testing Ay.
void file_A(std::string filename, double *A, double omega)
Reads A from file.
__global__ void kstd_wfc(double *x, double *y, double *z, double *items, double winding, double *phi, double2 *wfc)
Kernel to generate simple gaussian wavefunction.
__global__ void aux_fields(double *V, double *K, double gdt, double dt, double *Ax, double *Ay, double *Az, double *px, double *py, double *pz, double *pAx, double *pAy, double *pAz, double2 *GV, double2 *EV, double2 *GK, double2 *EK, double2 *GpAx, double2 *GpAy, double2 *GpAz, double2 *EpAx, double2 *EpAy, double2 *EpAz)
Kernel to generate all auxiliary fields.
void generate_gauge(Grid &par)
Function to generate game fields.
__global__ void kconstant_A(double *x, double *y, double *z, double xMax, double yMax, double zMax, double omegaX, double omegaY, double omegaZ, double omega, double fudge, double *A)
constant Kernel A
double * curl3d_x(Grid &par, double *Ax, double *Ay, double *Az)
Finds Bx, the curl of the gauge field.
__global__ void krotation_Ay(double *x, double *y, double *z, double xMax, double yMax, double zMax, double omegaX, double omegaY, double omegaZ, double omega, double fudge, double *A)
Kernel for simple rotational case, Ay.
Class to hold the variable map and grid information.
__global__ void krotation_Ax(double *x, double *y, double *z, double xMax, double yMax, double zMax, double omegaX, double omegaY, double omegaZ, double omega, double fudge, double *A)
Kernel for simple rotational case, Ax.
std::string filecheck(std::string filename)
Determines if file exists, requests new file if it does not.