Path Integral Quantum Monte Carlo
|
A derived class which performs a bisection move, which exactly samples the kinetic action. More...
#include <move.h>
Public Member Functions | |
BisectionMove (Path &, ActionBase *, MTRand &, ensemble _operateOnConfig=ANY) | |
Constructor. More... | |
~BisectionMove () | |
Destructor. | |
bool | attemptMove () |
Bisection Move : attempt Move. More... | |
string | getName () |
return the move name | |
Public Member Functions inherited from MoveBase | |
MoveBase (Path &, ActionBase *, MTRand &, ensemble _operateOnConfig=ANY, bool _varLength=false) | |
Move naming conventions: More... | |
virtual | ~MoveBase () |
Destructor. | |
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. | |
void | resetTotAccept () |
Reset the total accepted counter. | |
void | resetAccept () |
Reset the number accepted counter. | |
Static Public Attributes | |
static const string | name |
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 |
Protected Member Functions inherited from MoveBase | |
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 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. | |
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 performs a bisection move, which exactly samples the kinetic action.
BisectionMove::BisectionMove | ( | Path & | _path, |
ActionBase * | _actionPtr, | ||
MTRand & | _random, | ||
ensemble | _operateOnConfig = ANY |
||
) |
Constructor.
Initialize the number of levels and all local data structures.
Definition at line 1440 of file move.cpp.
|
virtual |
Bisection Move : attempt Move.
Here we actually perform the bisection move, which attempts to make a single large move at the midpoint between two slices, then futher bisects until all particles have been moved. The only adjustable parameter for is the number of levels, which sets the number of particles that we will try to move. The move can be fully rejected at any level, and we then go back and restore the positions of all moved particles.
For a nice description of the algorithm see: C. Chakravarty et al. J. Chem. Phys. 109, 2123 (1998).
Implements MoveBase.
Definition at line 1486 of file move.cpp.