GPUE  v1.0
GPU Gross-Pitaevskii Equation numerical solver for Bose-Einstein condensates
tracker.h
Go to the documentation of this file.
1 //##############################################################################
16  //##############################################################################
17 
18 #ifndef TRACKER_H
19 #define TRACKER_H
20 #ifdef __linux
21  #include<omp.h>
22 #elif __APPLE__
23 #endif
24 #include<math.h>
25 #include<vector>
26 #include<stdio.h>
27 #include<cuda.h>
28 #include<cuda_runtime.h>
29 #include "vort.h"
30 
31 //##############################################################################
32 
34 namespace Tracker {
35 
46  static const double lsq[3][4] = {{-0.5, 0.5, -0.5, 0.5},
47  {-0.5, -0.5, 0.5, 0.5},
48  {0.75, 0.25, 0.25, -0.25}};
49 
50 
62  int findVortex(int *marker, const double2* wfc, double radius, int xDim, const double *x, int timestep);
63 
72  void vortPos(const int *marker, std::vector<std::shared_ptr<Vtx::Vortex> > &vLocation, int xDim, const double2 *wfc);
73 
82  void olPos(int *marker, int2 *vLocation, int xDim);
83 
94  [[deprecated]]
95  std::shared_ptr<Vtx::Vortex> vortPosDelta(int *cMarker, int2 *pMarker, double *x, double tolerance, int xDim);
96 
104  std::shared_ptr<Vtx::Vortex> vortCentre(const std::vector<std::shared_ptr<Vtx::Vortex> > &cArray, int xDim);
105 
113  double vortAngle(const std::vector<std::shared_ptr<Vtx::Vortex>> &vortCoords, const std::shared_ptr<Vtx::Vortex> central);
114 
122  double vortSepAvg(const std::vector<std::shared_ptr<Vtx::Vortex> > &vArray, const std::shared_ptr<Vtx::Vortex> centre);
123 
124 
125  double sigVOL(const std::vector<std::shared_ptr<Vtx::Vortex> > &vArr, const int2 *opLatt, const double *x);
126 
135  int findOLMaxima(int *marker, double *V, double radius, int xDim, double *x);
136 
143  void vortArrange(std::vector<std::shared_ptr<Vtx::Vortex> > &vCoordsC, const std::vector<std::shared_ptr<Vtx::Vortex>> &vCoordsP);
144 
153  int phaseTest(int2 vLoc, double2 *wfc, int xDim);
154 
162  void lsFit(std::vector<std::shared_ptr<Vtx::Vortex>> &vortCoords, const double2 *wfc, int xDim);
163 }
164 
165 #endif
% % % starting wavefunction wfc
Definition: GPE_2d.m:52
double sigVOL(const std::vector< std::shared_ptr< Vtx::Vortex > > &vArr, const int2 *opLatt, const double *x)
vArr
Definition: VtxCorr.m:52
double vortSepAvg(const std::vector< std::shared_ptr< Vtx::Vortex > > &vArray, const std::shared_ptr< Vtx::Vortex > centre)
Determines average inter-vortex separation about the condensate centre.
double vortAngle(const std::vector< std::shared_ptr< Vtx::Vortex >> &vortCoords, const std::shared_ptr< Vtx::Vortex > central)
Determines the rotation angle of the vortex lattice.
void olPos(int *marker, int2 *vLocation, int xDim)
Accepts matrix of vortex locations as argument, returns array of x,y coordinates of locations and win...
void vortPos(const int *marker, std::vector< std::shared_ptr< Vtx::Vortex > > &vLocation, int xDim, const double2 *wfc)
Accepts matrix of vortex locations as argument, returns array of x,y coordinates of locations and win...
V
Definition: en.py:68
int phaseTest(int2 vLoc, double2 *wfc, int xDim)
Checks given coordinate for phase singularity of +ve winding.
void vortArrange(std::vector< std::shared_ptr< Vtx::Vortex > > &vCoordsC, const std::vector< std::shared_ptr< Vtx::Vortex >> &vCoordsP)
Ensures the vortices are tracked and arranged in the right order based on minimum distance between pr...
int findVortex(int *marker, const double2 *wfc, double radius, int xDim, const double *x, int timestep)
Find vortex locations in the condensate.
std::shared_ptr< Vtx::Vortex > vortPosDelta(int *cMarker, int2 *pMarker, double *x, double tolerance, int xDim)
Changes in vortex positions. Not implemented. See vort.py for current tracking.
xDim
Definition: quKineticSpec.m:14
std::shared_ptr< Vtx::Vortex > vortCentre(const std::vector< std::shared_ptr< Vtx::Vortex > > &cArray, int xDim)
Determines the most central vortex in the condensate.
void lsFit(std::vector< std::shared_ptr< Vtx::Vortex >> &vortCoords, const double2 *wfc, int xDim)
Least-squares vortex code estimation. Loosely based on c42f&#39;s vortutils code.
Class for keeping track of vortices. Implementation TBC.
Y Y range of points % radius
Definition: psi6.m:1
int findOLMaxima(int *marker, double *V, double radius, int xDim, double *x)
Finds optical lattice maxima locations. Deprecated.