-
Notifications
You must be signed in to change notification settings - Fork 0
Upgrade and Modify the Code
The code itself is very simple and structured so that it should be very easy to modify and improve it. Here there is a discussion about some modifications and upgrades that may be needed, some of them planned in the TODO. Any suggestion is very appreciated!
-
Computation of new observables: The code as it is involves only the computation of the action of the system. Any other observable can be defined and its natural place would be in the
PIMCClass
as member function, just as the providedget_Action()
. Then, in the MC loop in1d_pimc.cc
, it must be added to the print in themeas
file as new column. This modification can be viewed as an alternative to, instead, use the data inconfs
and compute the observables from scratch with other codes. -
Allow for non-hard-core particles: In this version particles are considered to be impenetrable, i.e. the program handles the case of hard-core bosons or fermions (which in the one-dimensional case behave equivalently). This is reflected in the update algorithm
PIMCClass.update()
which does not allow for crossing between the particle paths. A possible modification is hence to permit to study penetrating particles, allowing to choose if this is the case or not, without rejecting the move if the selected path crosses its neighbors (it would be nice to add a parameter in theinit
do achieve so). -
Better setting of OPENMP number of threads: This is actually a TODO. Number of threads to be used should be controlled by environmental variables which may be passed in the
make
stage. The need for modify the code just for change the number of thread used is very annoying. -
Modify the potential wrapping: This is also a TODO. Has explained in Setting Potentials section, adding a new potential require to make three modifications to the code and, no matter how it turns out to be simple, it is just abstruse. Also, there is no guard or control over the number of parameters needed by each potential (the
init
file integrity check works in this sense and makes all safe, but it is somehow ugly). Of course, the important feature that must be kept is the possibility to select the potential and modify its parameters without re-compiling the code. However, for the sake of simplicity, a new way of wrap and bind the potential is preferred. -
Fixed seeds in random number generators: In this versions, seeds in the random number generators defined in
pimclass.cc
are in turn randomly generated. This is in contrast with the principle of reproducibility of the data, so it would be better to change this behavior.