59 return beads(slice,ptcl); }
63 return beads(slice,ptcl); }
67 return beads(beadIndex); }
71 return beads(beadIndex); }
80 template<
class Tstream>
void printLinks(Tstream &);
159 Array<beadLocator,2> prevLink, nextLink;
175 sep = (*this)(bead1) - (*
this)(bead2);
186 if (all(beadIndex==
XXX) || all(
next(beadIndex)==
XXX)) {
192 vel = beads(
next(beadIndex)) - beads(beadIndex);
202 PIMC_ASSERT(slice>=0 && slice<numTimeSlices && ptcl>=0);
205 for (
int m = 0; m < numLinks; m++)
217 for (
int m = 0; m < numLinks; m++)
226 PIMC_ASSERT(slice>=0 && slice<numTimeSlices && ptcl>=0);
229 for (
int m = 0; m < numLinks; m++)
241 for (
int m = 0; m < numLinks; m++)
249 template<
class Tstream>
254 for (
int n = 0; n < numParticles; n++) {
256 outStream << setw(2) << prevLink(beadIndex)[1] <<
" ";
260 for (
int n = 0; n < numParticles; n++) {
262 outStream << setw(2) << nextLink(beadIndex)[1] <<
" ";
The base class which holds details on the generalized box that our system will be simulated inside of...
void putInBC(dVec &r) const
Place a vector in boundary conditions.
The particle (bead) lookup table.
The main driver class for the entire path integral monte carlo program.
The space-time trajectories.
const beadLocator & prev(const beadLocator &beadIndex) const
Move one link backward in imaginary time.
bool inSubregionA(const beadLocator &) const
Checks to see if bead is in subregion A/B at break slice + 1.
int getNumParticles() const
Get the size of the worldline array.
beadLocator delBeadGetNext(const beadLocator &)
Delete a bead and move forwards.
Path(const Container *, LookupTable &, int, const Array< dVec, 1 > &, int numberBroken=0)
Constructor.
void resetBrokenClosedVecs()
Reset broken/closed worldline vectors.
void leftPack()
Initialize any loaded state by left packing the array.
beadLocator delBeadGetPrev(const beadLocator &)
Delete a bead and move backwards.
void outputConfig(int) const
Output the world-line configurations in a generic format.
dVec getVelocity(const beadLocator &) const
Return the velocity between two time slices of a given particle as a ndim-vector.
vector< int > closedWorldlines
A list of particles with closed worldlines on left of break.
vector< int > brokenWorldlinesR
A list of particles with broken worldlines on right of break.
beadLocator & next(const beadLocator &beadIndex)
Move one link forward in imaginary time.
bool checkSubregionLinks() const
Check if only subregion worldlines are broken, for debugging.
void delBead(const beadLocator &)
Remove a bead from the world-line configuration.
void printWormConfig(Array< beadLocator, 1 > &)
Used when debugging worm configurations.
bool isBroken(const beadLocator &) const
Checks to see if worldline is broken.
const dVec & operator()(int slice, int ptcl) const
Operator Overloading to skip having to specifically grab .beads
void makeLink(const beadLocator &, const beadLocator &)
Make a link between beads.
dVec getSeparation(const beadLocator &, const beadLocator &) const
Return the separation vector between two particles in the same timeslice.
vector< int > brokenWorldlinesL
A list of particles with broken worldlines on left of break.
void removeCenterLink(const beadLocator &)
Break the link to right of bead t center slice AND update lists.
double breakFactor(const beadLocator &, const beadLocator &) const
Returns factor for broken worldines.
const int numTimeSlices
A local constant copy of the number of time slices.
const beadLocator & next(const beadLocator &beadIndex) const
Move one link forward in imaginary time.
beadLocator addPrevBead(const beadLocator &, const dVec &)
Add a bead at the previous time slice.
Array< int, 1 > numBeadsAtSlice
The number of active beads at a given time slice.
int breakSlice
The location of the break in the path (0=>no break)
beadLocator addBead(const int, const dVec &)
Add a bead to the worldline configuration at a given slice.
void addCenterLink(const beadLocator &, const beadLocator &)
Make a link between beads at center slice AND update lists.
bool inSubregionB(const beadLocator &) const
Check if bead is in subregion B.
void printLinks(Tstream &)
Output bead-link info, used for debugging.
void updateBead(const beadLocator &, const dVec &)
Update the position of a bead in the worldine configuration.
beadLocator & next(int slice, int ptcl)
Move one link forward in imaginary time.
const beadLocator & prev(int slice, int ptcl) const
Move one link backward in imaginary time.
const Container * boxPtr
A constant reference to the container class.
Worm worm
Details on the worm.
beadLocator & prev(int slice, int ptcl)
Move one link backward in imaginary time.
beadLocator addNextBead(const beadLocator &, const dVec &)
Add a bead at the next time slice.
LookupTable & lookup
A reference to the nearest neighbor lookup table.
void breakLink(const beadLocator &)
Break the link to right of bead.
int getTrueNumParticles() const
The number of active particles.
const beadLocator & next(int slice, int ptcl) const
Move one link forward in imaginary time.
beadLocator & prev(const beadLocator &beadIndex)
Move one link backward in imaginary time.
Contains information on the worm.
int getNumBeadsOn() const
Return the number of active beads.
Global common header with shared dependencies and methods.
TinyVector< int, 2 > beadLocator
time-slice,bead-number world line index
TinyVector< double, NDIM > dVec
A NDIM-vector of type double.
#define PIMC_ASSERT(X)
Rename assert method.
#define XXX
Used to refer to a nonsense beadIndex.
ConstantParameters class definition.