![]() |
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.