Skip to content

Latest commit

 

History

History
46 lines (32 loc) · 1.93 KB

README.md

File metadata and controls

46 lines (32 loc) · 1.93 KB

VMC-1D (Under Construction)

Variational Monte Carlo implemented for the 1D Heisenberg Model and the Haldane-Shastry Model using a Gutzwiller projected wave function as the initial ansatz. (Fortran90)

---------------------- Variational Monte Carlo 1D --------------------

Author: João Augusto Sobral da Silva / Github: @joaosds

The code is commented, and each subroutine has a brief description (B.D.) of its functionality. For any discussions you can contact me at Github!

History:

v1.0 (08/27/20) - First implementation in f90

Future intended changes:

  • implementation of modern fortran (>=2008);
  • python script for plots;
  • python interface to link both the fortran file and the plots automatically;
  • spin spin correlation for long range haldane-shastry;
  • Implement automatic routine to check if input matrix is ill conditioned and employ the svd - or other method - to obtain the pseudo-inverse/inverse matrix; ---------------------- Informations ---------------------------------

File 'random.f90' - All codes responsible for random generating numbers and related quantities.

File 'vmcvariables.f90' - Global variables

File 'modelvmc.f90' - retains the lattice definition, energy and spin-spin calculation and initial wavefunction.

File 'inputpar.dat': Input parameters as following: N, seed -> Chain Length and random seed; nz, sweep -> Number of next neighbors considered in the model / values used after the thermalization for the mean calculation; thermalization -> steps for themalization of the MC algorithm; Nbin - > Bin number for calculation of the means.

File 'meanene.dat': saves the energy obtained from nonlocal+local method and only local methods (best suitable for large N).

File 'spincor.dat': saves the z component of the spin-spin correlations;

Note: One can change line 116 and 117 to inversesvd if the input matrices are ill-conditioned. This may improve a little the accuracy of the algorithm.