![]() |
GPUE
v1.0
GPU Gross-Pitaevskii Equation numerical solver for Bose-Einstein condensates
|
File to hold all operators for finding fields on the GPU. More...
#include "../include/ds.h"
#include "../include/constants.h"
#include <sys/stat.h>
#include <unordered_map>
Go to the source code of this file.
Functions | |
double * | curl2d (Grid &par, double *Ax, double *Ay) |
Finds Bz, the curl of the gauge field. More... | |
double * | curl3d_x (Grid &par, double *Ax, double *Ay, double *Az) |
Finds Bx, the curl of the gauge field. More... | |
double * | curl3d_y (Grid &par, double *Ax, double *Ay, double *Az) |
Finds By, the curl of the gauge field. More... | |
double * | curl3d_z (Grid &par, double *Ax, double *Ay, double *Az) |
Finds Bz, the curl of the gauge field. More... | |
double * | curl3d_r (Grid &par, double *Bx, double *By) |
Finds Br, the curl of the gauge field. More... | |
double * | curl3d_phi (Grid &par, double *Bx, double *By) |
Finds Bphi, the curl of the gauge field. More... | |
std::string | filecheck (std::string filename) |
Determines if file exists, requests new file if it does not. More... | |
void | file_A (std::string filename, double *A, double omega) |
Reads A from file. More... | |
void | generate_p_space (Grid &par) |
Function to generate momentum grids. More... | |
void | generate_K (Grid &par) |
This function calls the appropriate K kernel. More... | |
__global__ void | simple_K (double *xp, double *yp, double *zp, double mass, double *K) |
Simple kernel for generating K. More... | |
void | generate_gauge (Grid &par) |
Function to generate game fields. More... | |
__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 More... | |
__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. More... | |
__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. More... | |
__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. More... | |
__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. More... | |
__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. More... | |
__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. More... | |
__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. More... | |
__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. More... | |
void | generate_fields (Grid &par) |
Function to generate V. More... | |
__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. More... | |
__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) More... | |
__global__ void | kstd_wfc (double *x, double *y, double *z, double *items, double winding, double *phi, double2 *wfc) |
Kernel to generate simple gaussian wavefunction. More... | |
__global__ void | ktorus_wfc (double *x, double *y, double *z, double *items, double winding, double *phi, double2 *wfc) |
Kernel to generate toroidal wavefunction. More... | |
__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. More... | |
void | generate_grid (Grid &par) |
File to hold all operators for finding fields on the GPU.
This file holds all operators for finding fields on the GPU
Definition in file operators.h.
__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.
double* curl2d | ( | Grid & | par, |
double * | Ax, | ||
double * | Ay | ||
) |
Finds Bz, the curl of the gauge field.
Grid | simulation data |
gauge | field Ax |
gauge | field Ay |
double* curl3d_phi | ( | Grid & | par, |
double * | Bx, | ||
double * | By | ||
) |
Finds Bphi, the curl of the gauge field.
Grid | simulation data |
gauge | field Ax |
gauge | field Ay |
gauge | field Az |
double* curl3d_r | ( | Grid & | par, |
double * | Bx, | ||
double * | By | ||
) |
Finds Br, the curl of the gauge field.
Grid | simulation data |
gauge | field Ax |
gauge | field Ay |
gauge | field Az |
double* curl3d_x | ( | Grid & | par, |
double * | Ax, | ||
double * | Ay, | ||
double * | Az | ||
) |
Finds Bx, the curl of the gauge field.
Grid | simulation data |
gauge | field Ax |
gauge | field Ay |
gauge | field Az |
double* curl3d_y | ( | Grid & | par, |
double * | Ax, | ||
double * | Ay, | ||
double * | Az | ||
) |
Finds By, the curl of the gauge field.
Grid | simulation data |
gauge | field Ax |
gauge | field Ay |
gauge | field Az |
double* curl3d_z | ( | Grid & | par, |
double * | Ax, | ||
double * | Ay, | ||
double * | Az | ||
) |
Finds Bz, the curl of the gauge field.
Grid | simulation data |
gauge | field Ax |
gauge | field Ay |
gauge | field Az |
void file_A | ( | std::string | filename, |
double * | A, | ||
double | omega | ||
) |
Reads A from file.
filename | |
A | field array |
omega | multiplicative constant |
std::string filecheck | ( | std::string | filename | ) |
Determines if file exists, requests new file if it does not.
void generate_fields | ( | Grid & | par | ) |
Function to generate V.
void generate_gauge | ( | Grid & | par | ) |
Function to generate game fields.
void generate_grid | ( | Grid & | par | ) |
void generate_K | ( | Grid & | par | ) |
This function calls the appropriate K kernel.
void generate_p_space | ( | Grid & | par | ) |
Function to generate momentum grids.
__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
__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 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.
__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_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.
__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 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.
__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.
__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 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 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.
__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)
__global__ void ktorus_wfc | ( | double * | x, |
double * | y, | ||
double * | z, | ||
double * | items, | ||
double | winding, | ||
double * | phi, | ||
double2 * | wfc | ||
) |
Kernel to generate toroidal wavefunction.
__global__ void simple_K | ( | double * | xp, |
double * | yp, | ||
double * | zp, | ||
double | mass, | ||
double * | K | ||
) |
Simple kernel for generating K.