28 #include<cuda_runtime.h> 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}};
72 void vortPos(
const int *marker, std::vector<std::shared_ptr<Vtx::Vortex> > &vLocation,
int xDim,
const double2 *
wfc);
82 void olPos(
int *marker, int2 *vLocation,
int xDim);
95 std::shared_ptr<Vtx::Vortex>
vortPosDelta(
int *cMarker, int2 *pMarker,
double *
x,
double tolerance,
int xDim);
104 std::shared_ptr<Vtx::Vortex>
vortCentre(
const std::vector<std::shared_ptr<Vtx::Vortex> > &cArray,
int xDim);
113 double vortAngle(
const std::vector<std::shared_ptr<Vtx::Vortex>> &vortCoords,
const std::shared_ptr<Vtx::Vortex> central);
122 double vortSepAvg(
const std::vector<std::shared_ptr<Vtx::Vortex> > &vArray,
const std::shared_ptr<Vtx::Vortex> centre);
125 double sigVOL(
const std::vector<std::shared_ptr<Vtx::Vortex> > &
vArr,
const int2 *opLatt,
const double *
x);
143 void vortArrange(std::vector<std::shared_ptr<Vtx::Vortex> > &vCoordsC,
const std::vector<std::shared_ptr<Vtx::Vortex>> &vCoordsP);
162 void lsFit(std::vector<std::shared_ptr<Vtx::Vortex>> &vortCoords,
const double2 *
wfc,
int xDim);
% % % starting wavefunction wfc
double sigVOL(const std::vector< std::shared_ptr< Vtx::Vortex > > &vArr, const int2 *opLatt, const double *x)
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...
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.
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's vortutils code.
Class for keeping track of vortices. Implementation TBC.
Y Y range of points % radius
int findOLMaxima(int *marker, double *V, double radius, int xDim, double *x)
Finds optical lattice maxima locations. Deprecated.