quantum-espresso/XClib
fabrizio22 7f257f9199 Vxc_acc - LDA cleanup 2021-11-30 11:13:04 +01:00
..
Ford Ford-PHonon - Ford config. files renamed 2021-09-09 18:17:50 +02:00
test_input_files XClib_test - gen+exe test restored 2021-11-24 22:03:52 +01:00
CMakeLists.txt Replace COPY with symlink. 2021-11-24 16:48:21 -06:00
Makefile Vxc_acc - some Libxc-mgga side fixes and small improvements 2021-11-16 13:12:01 +01:00
README.BEEF Doc: one misspell fixed, reference to github repository added 2021-01-22 12:55:33 +00:00
README.TEST XClib - various adjustments 2021-10-13 22:24:39 +02:00
beefleg.h XClib - some trailing whitespaces removed 2021-11-15 18:45:52 +01:00
beefun.c XClib - some trailing whitespaces removed 2021-11-15 18:45:52 +01:00
dft_setting_params.f90 XClib - Libxc flags check improved 2021-10-13 22:24:39 +02:00
dft_setting_routines.f90 XClib - few minor fixes 2021-11-24 14:31:49 +01:00
pbecor.c beef_acc - beeflocalcorrspin_ works now 2021-11-11 10:04:11 +01:00
pbecor.h beef_acc - beeflocalcorrspin_ works now 2021-11-11 10:04:11 +01:00
qe_constants.f90 Aligned gpu-develop branch with develop from QEF/q-e. 2021-01-19 22:16:25 +00:00
qe_dft_list.f90 Fix comments and tests 2021-11-05 13:43:13 -04:00
qe_dft_refs.f90 XClib - few minor fixes 2021-11-24 14:31:49 +01:00
qe_drivers_d_gga.f90 Vxc_acc - partial porting of xc derivatives 2021-11-14 20:36:12 +01:00
qe_drivers_d_lda_lsda.f90 Vxc_acc - partial porting of xc derivatives 2021-11-14 20:36:12 +01:00
qe_drivers_gga.f90 Vxc_acc - mgga xc on openacc 2021-11-14 15:41:41 +01:00
qe_drivers_lda_lsda.f90 Vxc_acc - lda-lsda xc interface 2021-11-11 11:41:06 +01:00
qe_drivers_mgga.f90 XClib - fix for mgga+nonMgga case 2021-11-24 16:27:52 +01:00
qe_funct_corr_gga.f90 XClib - some cleanup and libxc gga threshold 2021-10-13 22:24:39 +02:00
qe_funct_corr_lda_lsda.f90 XClib-acc - LDA unpol 2021-07-05 16:46:48 +02:00
qe_funct_exch_gga.f90 XClib - some cleanup and libxc gga threshold 2021-10-13 22:24:39 +02:00
qe_funct_exch_lda_lsda.f90 XClib-acc - LDA unpol 2021-07-05 16:46:48 +02:00
qe_funct_mgga.f90 Vxc_acc - mgga xc on openacc 2021-11-14 15:41:41 +01:00
qe_kind.f90 Aligned gpu-develop branch with develop from QEF/q-e. 2021-01-19 22:16:25 +00:00
xc_beef_interface.f90 beef_acc - beeflocalcorrspin_ works now 2021-11-11 10:04:11 +01:00
xc_infos.f90 XClib - few minor fixes 2021-11-24 14:31:49 +01:00
xc_lib.f90 XClib - some trailing whitespaces removed 2021-11-15 18:45:52 +01:00
xc_wrapper_d_gga.f90 XClib - some trailing whitespaces removed 2021-11-15 18:45:52 +01:00
xc_wrapper_d_lda_lsda.f90 XClib - libxc gga thresholds again 2021-10-13 22:24:39 +02:00
xc_wrapper_gga.f90 Vxc_acc - Libxc-side cleanup and optimization 2021-11-17 12:54:26 +01:00
xc_wrapper_lda_lsda.f90 Vxc_acc - LDA cleanup 2021-11-30 11:13:04 +01:00
xc_wrapper_mgga.f90 Vxc_acc - Libxc-side cleanup and optimization 2021-11-17 12:54:26 +01:00
xclib_error.f90 XClib - output unit fix 2021-02-15 20:23:10 +01:00
xclib_test.f90 XClib - Libxc index notation works 2021-11-24 12:01:10 +01:00
xclib_utils_and_para.f90 XClib - management of unusable Libxc dfts 2021-10-13 22:24:39 +02:00

README.TEST

                 --------------------------
                 - XClib TESTING PROGRAMS -
                 --------------------------

To compile the following side programs, once you have properly 
configured QE, just type:

	make test
	
in the XClib directory. With CMake they will be compiled automati-
cally if 'QE_ENABLE_TEST' is set to true (default).


---------------------- XC_INFO -----------------------------------

xc_info is a small serial program that provides infos on XC 
functionals, both the ones from internal QE library and the ones
from Libxc. Just run the command:

	./xc_info.x

then type the functional name (or any allowed combination). It
will show a brief description, the list of the external parameters, 
and all the available references. For Libxc functionals it will also
tell if they are currently usable in QE or not.


--------------------- XCLIB_TEST ---------------------------------

xclib_test is a testing program for the XClib library routines.
Due to the high number of available dfts (including those from
the external library Libxc) and the different parallelization 
schemes available already or in experimental phase, this program
is intended to be a tool that helps developers to maintain and
develop XClib by keeping an overview on all the available options
(which cannot be covered by test-suite only).
The program generates an xml file with a set of XC-output data 
produced according to the input options and use it for later
comparison with other differently generated sets of XC-output data.
It first calculates averages of the XC-output data over a large
arbitrary grid (the number of points can be modified by changing the
'npoints' parameter in the code) -this is a 'naive' way to compare
outputs over a large number of points without storing a large amount
of data, however more sophisticated estimates than the arithmetic
averages can be replaced in a second time with minimal effort (and
the grid itself too). Then the same program calculates the XC output
data over a selected number of grid points, including threshold 
points, and perform the comparison between xml data and current ones.

You can run the program by using commands like:

	./xclib_test.x < input_file                [ serial ]
        mpirun -np XX xclib_test.x < input_file    [parallel]

Different options are available and the program can be used for
different purposes.
An example of input file content is the following:

        &INPUT_NAMELIST
                 test='generate'
                 filename_xml='xctest_data.xml'
                 dft='all_terms'
                 family=''
                 polarization='both'
                 xc_derivative=.FALSE.
        /

This input generates an xml file 'xctest_data.xml' whith a set of XC
output data (both polarized and unpolarized) for each single dft term
in the QE internal library. If 'execute' was present instead of 'generate'
it would span all the dft terms and compare the outputs with the data in
the xml file.
Another example:

        &INPUT_NAMELIST
                 test='execute'
                 filename_xml='xctest_data.xml'
                 dft='pbe'
                 family='GGA'
                 polarization='unpolarized'
                 xc_derivative=.FALSE.
                 show_time = .TRUE.
        /

This input reads data from the xml file and compare the output for the pbe
functional only. It also shows an estimate of the XClib execution wall time.

In general, the following input options have to be set (capital or 
lowercase is the same):

- test: The 'GENERATE' option generates the xml file with the benchmark set
        of XClib output data. The 'EXECUTE' option calculates a set of
        XClib output data and compares it with the one previously stored
        in the xml file.

- filename_xml: the name of the xml file.

- dft: the input functional. Besides the specific functionals, three
       other options are available:
       - 'ALL_TERMS' spans all the available single term functionals
         of QE (e.g. LDA exchange, LDA correlation, GGA exchange, ...);
       - 'ALL_SHORT' spans all the full dfts (identified by the 'shortnames')
         available in XClib, e.g. LDA, PBESOL, PW86PBE, etc.
       - 'ALL_LIBXC' spans all the available Libxc functionals. Those
         that are not usable in the current QE version will be skipped
         with a notice.  

- family: the dft family (needed in order to distinguish those few cases
          where LDA terms have the same name of the GGA ones, e.g. B3LP).
          If dft='ALL_...' then input family will be ignored.
          
- polarization: 'UNPOLARIZED', 'POLARIZED', 'BOTH'.

- xc_derivative: if .TRUE. calculates the derivative terms (needed,
                 for example, by linear response code) instead of
                 the ordinary energy&potential output.

- show_time: if .TRUE. stores WALL time spent by xc-routines during
             'GENERATE' test and shows increment (in percentage) during
             'EXECUTE' test.

Obviously the program can be used to compare QE and Libxc functionals,
to check differences from one version to another or to check differences
in the output by changing external parameters or other stuff.