adrian-soto / QEdark_repo

QEdark code Github repository
GNU General Public License v2.0
4 stars 2 forks source link

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! CONTENTS

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! QEdark

Code to evaluate and integrate the form factor as in eq (3.16) in Essig et.al. -- arXiV:1509.01598 and integrals of this quantity in order to calculate the DM-electron scattering rate.

QEdark calculation modes:

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

        IMPORTANT

QEdark is an extension to the PWscf code of the Quantum ESPRESSO package. It has been written to work with QE version v.5.1.2. It may work with other versions but this is not guranteed.

We greatly acknowledge the Quantum ESPRESSO team for making their code community accessible. See the following publication for details P. Giannozzi et.al. J. Phys. Condens. Matter 21, 395502 (2009)

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

     QEdark QUICK INSTALLATION GUIDE

1) Download QuantumESPRESSO v.5.1.2 from www.qe-forge.org/gf/download/frsrelease/185/753/espresso-5.1.2.tar.gz

2) Modify pwscf.f90 by including the code line call qedark() just above the line CALL stop_run( exit_status )

3) Modify PW/src/Makefile to include dependencies on two new files. Simply add

  qedark.o \
  qedark_routines.o \
  qedark_f2.o \
  qedark_multimass.o \
  qedark_read_input.o \

directly below 
   wyckoff.o \

4) Copy the files qedark.f90, qedark_routines.f90, qedark_f2.f90 and qedark_multimass.f90 from QEdark_files into Quantum ESPRESSO's directory PW/src/

5) Run configure script in QE main directory as ./configure --disable-parallel

For OpenMP multithreaded version, run configure as
   ./configure --disable-parallel --enable-openmp

   NOTE:QEdark v1.0 does not support OpenMPI parallelization

6) Compile by typing the following command in QE main directory make pw

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

     QEdark QUICK EXECUTION GUIDELINES

1) The file dm.in must exist in the directory where the code is being run since it contains the input data to QEdark.

2) QEdark is executed within Quantum ESPRESSO's pw.x program which is copied to the bin/ directory. Execute as QEdark_dir/bin/pw.x < QEinputfile > QEoutputfile

3) In order to run the multithreaded version, the value of OMP_STACKSIZE will most likely need to be increased. For Si and Ge we have found that setting it to 512M has been enough.

In bash this can be done by entering the commmand
   export OMP_STACKSIZE=512M 

4) Users are encouraged to get familiar with the code by going through the examples in the folder QEdark_examples/, which have been chosen to introduce the user into several features of QEdark.

5) Previous knowledge of Quantum ESPRESSO is highly recommended. There are plenty of tutorials and examples at the link http://www.quantum-espresso.org/tutorials/

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

         TO-DO 

  1) Make code more modular. In particular, split into one routine
     to evaluate the form factors and another external
     routine to carry out the momentum space integrals and 
     sum over bands

  2) Eliminate all the G-vector index tables by
     understanding the G-vector sorting -- BYPASSED BY REDIFINING q-grid

  3) Make this calculation an external program to pw.x

  4) Parallelize with MPI

  5) IMPROVE CODE COMMENTS!!!! In particular explain the algorithm for 
     selecting the G-vectors, and the reason why the array index is needed

  6) Rearrange create_bins so that unnecessary variables don't need to be passed
     depending on the case. Also, put the whole binning stuff into a module, so 
     that allocatable arrays can be passed. This way we can allocate binedges(:)
     inside create_bins() instead of in formfact() (which is already too cluttered!)

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!