Path Integral Quantum Monte Carlo
|
A derived class which forms the base of a swap head and swap tail move class. More...
#include <move.h>
Public Member Functions | |
SwapMoveBase (Path &, ActionBase *, MTRand &, ensemble _operateOnConfig=OFFDIAGONAL) | |
Constructor. | |
~SwapMoveBase () | |
Destructor. | |
Public Member Functions inherited from MoveBase | |
MoveBase (Path &, ActionBase *, MTRand &, ensemble _operateOnConfig=ANY, bool _varLength=false) | |
Move naming conventions: More... | |
virtual | ~MoveBase () |
Destructor. | |
virtual string | getName () |
return the move name | |
double | getAcceptanceRatio () |
Get the acceptance ratio. | |
double | getTotAcceptanceRatio () |
Get the total acceptance ratio. | |
double | getAcceptanceRatioLevel (int n) |
Get the acceptance ratio by level. | |
int | getNumAttempted () |
Get the number of moves attempted. | |
int | getNumAccepted () |
Get the number of moves accepted. | |
int | getNumAttemptedLevel (int n) |
Get the number of moves attempted by level. | |
int | getNumAcceptedLevel (int n) |
Get the number of moves accepted by level. | |
virtual bool | attemptMove ()=0 |
Attempt the move (will be overloaded). | |
void | resetTotAccept () |
Reset the total accepted counter. | |
void | resetAccept () |
Reset the number accepted counter. | |
Protected Member Functions | |
double | getNorm (const beadLocator &, const int sign=1) |
Get the normalization constant for a swap move. More... | |
beadLocator | selectPivotBead () |
Select the pivot bead for a swap move. More... | |
beadLocator | selectPivotBead (iVec &) |
*************************************************************************//** More... | |
Protected Member Functions inherited from MoveBase | |
virtual void | keepMove () |
Keep the move. More... | |
virtual void | undoMove ()=0 |
undo the move | |
dVec | newStagingPosition (const beadLocator &, const beadLocator &, const int, const int) |
Returns a new staging position which will exactly sample the kinetic action. More... | |
dVec | newStagingPosition (const beadLocator &, const beadLocator &, const int, const int, iVec &) |
Returns a new staging position which will exactly sample the kinetic action in different winding sectors. More... | |
iVec | sampleWindingSector (const beadLocator &, const beadLocator &, const int, double &) |
Obtain a winding sector for a stage-like move. More... | |
iVec | getWindingNumber (const beadLocator &, const beadLocator &) |
Find the winding number for a path between two beads. More... | |
dVec | newFreeParticlePosition (const beadLocator &) |
Generates a new position, which exactly samples the free particle density matrix. More... | |
dVec | newBisectionPosition (const beadLocator &, const int) |
Returns a new bisection position which will exactly sample the kinetic action. More... | |
void | printMoveState (string) |
void | checkMove (int, double) |
Protected Attributes | |
int | swapLength |
The length of worldLine to be moved. | |
int | numLevels |
The number of bisection levels. | |
unsigned int | sizeCDF |
The size of the cumulative distribution function. | |
vector< double > | cumulant |
The cumulant array used in selecting a pivot. | |
beadLocator | pivot |
The pivot bead. | |
beadLocator | swap |
The swap bead. | |
double | SigmaSwap |
Probability normalization factor. | |
Protected Attributes inherited from MoveBase | |
Path & | path |
A reference to the paths. | |
ActionBase * | actionPtr |
A base pointer to the action. | |
MTRand & | random |
A reference to the RNG. | |
bool | success |
Did we sucessfully perform a move? | |
uint32 | numAccepted |
The number of accepted moves. | |
uint32 | numAttempted |
The number of attempted moves. | |
int | numToMove |
The number of particles moved. | |
int | numLevels |
Array< uint32, 1 > | numAcceptedLevel |
The number of moves accepted at each level. | |
Array< uint32, 1 > | numAttemptedLevel |
The number of moves attempted at each level. | |
Array< dVec, 1 > | originalPos |
The original particle positions. | |
Array< dVec, 1 > | newPos |
New particle positions. | |
vector< iVec > | winding |
The winding vectors | |
vector< int > | windingSector |
Used to index different winding sectors. | |
vector< double > | cumrho0 |
Used for tower-sampling winding sectors. | |
int | maxWind |
The largest winding number. | |
int | numWind |
The total number of winding vectors. | |
double | oldAction |
The original potential action. | |
double | newAction |
The new potential action. | |
double | deltaAction |
The action difference. | |
double | sqrt2LambdaTau |
sqrt(2 * Lambda * tau) | |
double | sqrtLambdaTau |
sqrt(Lambda * tau) | |
beadLocator | nBeadIndex |
Neighbor bead index. | |
dVec | neighborPos |
Staging neighbor position. | |
dVec | newRanPos |
Staing random position. | |
double | newK |
double | oldK |
The old and new kinetic action. | |
double | newV |
double | oldV |
The old and new potential action. | |
Additional Inherited Members | |
Data Fields inherited from MoveBase | |
ensemble | operateOnConfig |
What configurations do we operate on? | |
bool | variableLength |
Does the move have a variable length? | |
string | name1 |
Static Protected Attributes inherited from MoveBase | |
static uint32 | totAccepted = 0 |
The total number of moves accepted. | |
static uint32 | totAttempted = 0 |
The total number of moves attempted. | |
A derived class which forms the base of a swap head and swap tail move class.
|
protected |
Get the normalization constant for a swap move.
We compute the normalization constant used in both the pivot selection probability as well as the overall acceptance probabilty.
sign | corrects for always measuring distances forward in imaginary time |
Definition at line 3141 of file move.cpp.
|
protected |
Select the pivot bead for a swap move.
Here we select a pivot bead from a list with the probability given by Eq. (2.22) of PRE 74, 036701 (2006). We use the trick in Ceperly's lecture notes where we evaluate the cumulative distribution function then generate a uniform random variable and find where it lies in the ordered CDF list.
Definition at line 3269 of file move.cpp.
|
protected |
*************************************************************************//**
Select the pivot bead for a swap move.
Here we select a pivot bead from a list with the probability given by Eq. (2.22) of PRE 74, 036701 (2006). We use the trick in Ceperly's lecture notes where we evaluate the cumulative distribution function then generate a uniform random variable and find where it lies in the ordered CDF list.
wind | the chosen winding number sector. |
Definition at line 3233 of file move.cpp.