                                 QUEST V1.0
                                ============

1. Introduction.

   QUEST is a reversion of the legacy DQMC code (developed and maintained by 
   Professor Richard Scalettar), which implements the Determinant Quantum 
   Monte Carlo (DQMC) simulation for Hubbard model in Fortran 90/95. 
   It modulizes the legacy code, and improves its performance and 
   configurability. The name is acronym of QUantum Electron Simulation
   Toolbox.

   The current version has only been tested on limited platforms. For bug
   report, please email cherung@gmail.com. General use of QUEST can be found
   in the users' guide.
   

2. Configuration and compilation

   QUEST contains the following files and directories.

   QUEST1_0/README    this file
   QUEST1_0/make.inc  configurations for compilation
   QUEST1_0/Makefile  top level makefile
   QUEST1_0/SRC       source code 
   QUEST1_0/EXAMPLE   example programs and its input/output
   QUEST1_0/DOC       user's guide

   The make.inc file defines system dependent settings. Before 
   compilation, one should examine and edit this file.
   Three major changes should be made.

   (a) The Fortran 90 compiler and its flags. 

   (b) The BLAS and LAPACK library. The reference implementation can be 
       downloaded from http://www.netlib.org

   (c) The archiver and its flags, which is usually 'ar' for unix system.

   After the configuration, one can just type 'make' to compile the 
   library and the test programs.  The command 'make lib' complies and 
   archives the library; and 'make test' compiles the test program.
   A successful compilation of library will generate 'dqmclib.a',
   as well as some corresponding module files. The compiled 
   test programs are in the EXAMPLE directory.
 
   To clean up the compiled library and program, one can execute 
   'make clean'.

3. Example program

   Two example programs are provided in the EXAMPLE directory. Program
   'verify' checks the correctness of compilation; program 'test'
   for performance testing. The execution of 'verify' is as follows

       cd EXAMPLE
       ./verify
   
   A sample output file, 'verify.out', is in the same directory.
   It should be noted that results will be different for every execution.
   The importance is the computed values are in the acceptable range,
   as specified by the error bar. An execution is regarded "correct" if
   there are 63.2% of results within 1 error bar and 86.5% within 2 error
   bars.
    
   The 'test' program need be executed with an input file

       cd EXAMPLE
       ./test < small.in

   There are four test cases: small.in, median.in, large.in and 
   extra_large.in, whose parameters and sampled execution time are
   listed below.

     Test case          Geometry(nx)    Time slice(l)   Running time
    ===================================================================
           small.in      4x4 periodic        12           1.964 second
          median.in      8x8 periodic        48         301.723 second
           large.in    16x16 periodic        96       40012.960 second
     extra_large.in    32x32 periodic        96          (unknown) 
    ===================================================================

    *** The machine used in the test is Intel dual processor (2.4GHZ each) 
        with 2G memory. The compiler used is ifort (Intel Fortran Compiler),
        and the BLAS/LAPACK library is Intel MLK.