在这篇文章中,我将首先介绍Partial Charge的概念,以及如何用VASP具体的计算Partial Charge。首先,所谓的Partial Charge是针对与Total Charge来说的,指的是某个能量范围、某个K点或者某个特定的态所对应的电荷密度。在文献中最常见的是价带顶部,导带底部,表面态或者局域态所对应的Partial Charge。通过分析这些态所对应的Partial Charge,可以得到体系的一些性质,比如局域态具体的是局域在哪个原子上等。我将通过具体的例子说明如何用VASP进行Partial Charge Analysis。 进行Partial Charge Analysis的第一步是进行自洽的计算,得到体系的电子结构。这一步的计算采用通常的INCAR和KPOINTS文件。在自洽计算结束后,我们需要保存WAVECAR文件。(通过在INCAR文件中设置LWAVE=TRUE实现)在这个例子中,假设我们需要计算一个硅纳米线的导带和价带的Partial Charge。硅纳米线的结构如下: http://www.quantumchemistry.net/Experience/UploadFiles_6872/200603/20060331155154521.jpg 第二步是画出能带结构,以决定你需要画哪条能带的那个K点的态所对应的Partial Charge。关于具体如何用VASP画能带,请参见用VASP4.6计算晶体硅能带实例一文。我们得到硅纳米线的能带结构如下: 画能带时有些小技巧。你可以用一些支持列模块的编辑器,如UltraEdit,将OUTCAR里的各个K点所对应的本征值粘贴到Origin中。这一步完成后,在Origin中做一个矩阵转置,然后将K点坐标贴到第一列,并将其设为X坐标。如此画出来的基本上就是能带图了。在Origin中可以通过设置纵轴范围来更加清楚的区分费米能级附近的各条能带。如上的硅纳米线所对应的能带结构图如下: http://www.quantumchemistry.net/Experience/UploadFiles_6872/200603/20060331155540648.jpg 决定画哪条能带,或者那些感兴趣的K点之后,有如下几种方法计算不同的Partial Charge。如果你希望计算价带顶端的Partial Charge,则需要首先通过能带结构图确定价带的能带标号。需要注意,进行Partial Charge分析必须要保留有自洽计算的WAVECAR才可以。 第一种Partial Charge分析的INCAR ISTART = 1 job : 0-new 1-cont 2-samecut ICHARG = 1 charge: 1-file 2-atom 10-const LPARD=.TRUE. IBAND= 20 21 22 23 KPUSE= 1 2 3 4 LSEPB=.TRUE. LSEPK=.TRUE. 这样的INCAR给出的是指定能带,指定K点所对应的Partial Charge。分析导带、价带等的Partial Charge特性,通常采用的都是这种模式。 第二种Partial Charge分析的INCAR ISTART = 1 job : 0-new 1-cont 2-samecut ICHARG = 1 charge: 1-file 2-atom 10-const LPARD=.TRUE. EINT = -10.3 -5.1 LSEPB=.FALSE. LSEPK=.FALSE. 这样的INCAR给出的是在 能量之间的Partial Charge。这种模式适合于分析某个能量区间内的波函数的性质。 第三种Partial Charge分析的INCAR ISTART = 1 job : 0-new 1-cont 2-samecut ICHARG = 1 charge: 1-file 2-atom 10-const LPARD=.TRUE. NBMOD=-3 EINT = -1 LSEPB=.FALSE. LSEPK=.FALSE. 这样的INCAR给出的是从 能量之间的Partial Charge。这种模式最利于分析费米面附近的波函数的性质。 用第一种方法,我们可以得到硅纳米线价带顶部和导带底部的Partial Charge如下: http://www.quantumchemistry.net/Experience/UploadFiles_6872/200603/20060331155753136.jpg • LPARD: Evaluate partial (band and/or k-point) decomposed charge density. We want to stress again, that the wavefunctions read from WAVECAR must be converged in a separate prior run. If only LPARD is set (and none of the tags discussed below), the total charge density is evaluated from the wavefunctions and written to CHGCAR. • There are several ways how to specify for which bands the charge density is evaluated: In general the input lines with IBAND, EINT and NBMOD control this respect of the routine: • IBAND: Calculate the partial charge density for all bands specified in the array IBAND. If IBAND is specified in the INCAR file and NBMOD is not given, NBMOD is set automatically to the size of the array. If IBAND is for instance IBAND= 20 21 22 23 the charge density will be calculated for bands 20 to 23. • EINT: Specifies the energy range of the bands that are used for the evaluation of the partial charge density. Two real values should be given, if only one value is specified, the second one is set to ǫf . If EINT is given and NBMOD is not specified, NBMOD is set automatically to -2. • NBMOD: This integer variable can take the following values 0 Number of values in the array IBAND. If IBAND is specified, NBMOD is set automatically to the correct value (in that case NBMOD should not be set manually in the INCAR file) 0 Take all bands to calculate the charge density, even unoccupied bands are taken into account. -1 Calculate the total charge density as usual. This is the default value if nothing else is given. -2 Calculate the partial charge density for electrons with there eigenvalues in the range specified by EINT. -3 The same as before, but the energy range is given vs. the Fermi energy. • KPUSE: KPUSE specifies which k-points are used in the evaluation of the partial dos. KPUSE is an array of integer values. KPUSE= 1 2 3 4 means that the charge density is evaluated and summed for the first four k-points. Be careful: VASP changes the kpoint weights if KPUSE is specified. • LSEPB: Specifies whether the charge density is calculated for every band separately and written to a file PARCHG.nb.⋆ (TRUE) or whether charge density is merged for all selected bands and write to the file PARCHG.ALLB.⋆ or PARCHG. Default is FALSE. • LSEPK: Specifies whether the charge density of every k-point is write to the files PARCHG.⋆.nk (TRUE) or whether it is merged (FALSE) to a single file. If the merged file is written, then the weight of each k-point is determined from the KPOINTS file, otherwise the kpoints weights of one are chosen.
转自: http://cms.mpi.univie.ac.at/vasp/vasp/vdW_DF_functional_Langreth_Lundqvist_et_al.html vdW-DF functional of Langreth and Lundqvist et al.The vdW-DF proposed by Dion et al. is a non-local correlation functional that approximately accounts for dispersion interactions . In VASP the method is implemented using the algorithm of Roman-Perez and Soler which transforms the double real space integral to reciprocal space and reduces the computational effort. Several propsed versions of the method can be used : the original vdW-DF , vdW-DF with exchange functionals optimised for the correlation part , and the vdW-DF2 of Langreth and Lundqvist groups . N.B. : This feature has been implemented by J. Klimeš. If you make use of the vdW-DF functionals presented in this section, we ask that you cite the following paper: J. Klimeš, D. R. Bowler, and A. Michaelides, Phys. Rev. B 83 , 195131 (2011). Correlation functionals The method is invoked by setting LUSE_VDW = .TRUE. Moreover, the PBE correlation correction needs to be removed since only LDA correlation is used in the functionals. This is done by setting AGGAC = 0.0000 The two tags above need to be used for all the following functionals. Exchange functionals To use the different exchange functionals, the GGA tag needs to be set appropriately. The original version of Dion et al uses revPBE which can be set by GGA = RE More accurate exchange functionals for the vdW correlation functional have been proposed in and . They can be used by setting GGA = OR for optPBE, GGA = BO PARAM1 = 0.1833333333 PARAM2 = 0.2200000000 for the optB88 functional , or GGA = MK PARAM1 = 0.1234 PARAM2 = 1.0000 for the optB86b functional . For the vdW-DF2 functional the rPW86 exchange functional is used: GGA = ML moreover, the vdW functional needs to be changed to the vdW2 correlation which requires only a change of a parameter: Zab_vdW = -1.8867 An overview of the performance of the different approaches can be found for example in for gas phase clusters and in for solids. Important remarks : The method needs a precalculated kernel which is distributed via the VASP download portal ( VASP - src - vdw_kernel.bindat ) and on the ftp server ( vasp5/src/vdw_kernel.bindat ). If VASP does not find this file, the kernel will be calculated. This, however, is rather demanding calculation. The kernel needs to be either copied to the VASP run directory for each calculation or can be stored in a central location and read from there. The location needs to be set in routine PHI_GENERATE. This does not work on some clusters and the kernel needs to be copied into the run directory in such cases. Currently the evaluation of the vdW energy term is not done fully within the PAW method but the sum of the pseudo-valence density and partial core density is used. This approximation works rather well, as is discussed in , and the accuracy generally increases when the number of valence electrons is increased or when harder PAW datasets are used . For example, for adsorption it is recommended to compare the adsorption energy obtained with standard PAW datasets and more-electron POTCARs for both PBE calculation and vdW-DF calculation to asses the quality of the results. The optimisation of the cell (ISIF=3 and higher) is currently not possible. The spin polarised calculations are possible, but strictly speaking the non-local vdW correlation is not defined for spin-polarised systems. For spin-polarised calculation the non-local vdW correlation energy is evaluated on the sum of the spin-up and spin-down densities. The evaluation of the vdW energy requires some additional time. Most of it is spent on performing FFTs to evaluate the energy and potential. Thus the additional time is determined by the number of FFT grid points in the calculation, basically size of the simulation cell. It is almost independent on the number of the atoms in the cell. Thus the relative cost of the vdW-DF method depends on the ``filling" of the cell and increases with the amount of vacuum in the cell. The relative increase is high for isolated molecules in large cells, but small for solids in smaller cells with many k-points. This feature has been implemented by J. Klimeš. If you make use of the vdW-DF functionals presented in this section, we ask that you cite the following paper: J. Klimeš, D. R. Bowler, and A. Michaelides, Phys. Rev. B 83 , 195131 (2011). http://cms.mpi.univie.ac.at/vasp/vasp/DFT_D2_method_Grimme.html#tab:grimme DFT-D2 method of Grimme LVDW= .TRUE. | .FALSE. (Available as of VASP.5.2.11) Default: LVDW=.FALSE. Popular density functionals are unable to describe correctly van der Waals interactions resulting from dynamical correlations between fluctuating charge distributions. A pragmatic method to work around this problem has been given by the DFT-D approach , which consists in adding a semi-empirical dispersion potential to the conventional Kohn-Sham DFT energy: (90) In the DFT-D2 method of Grimme , the van der Waals interactions are described via a simple pair-wise force field, which is optimized for several popular DFT functionals. The dispersion energy for periodic systems is defined as (91) where the summations are over all atoms and all translations of the unit cell , the prime indicates that for , is a global scaling factor, denotes the dispersion coefficient for the atom pair , is a position vector of atom after performing translations of the unit cell along lattice vectors. In practice, terms corresponding to interactions over distances longer than a certain suitably chosen cutoff radius contribute only negligibly to and can be ignored. The term is a damping function (92) whose role is to scale the force field such as to minimize contributions from interactions within typical bonding distances. Combination rules for dispersion coefficients and vdW radii are (93) and (94) respectively. The global scaling parameter has been optimized for several different DFT functionals such as PBE ( ), BLYP ( ), and B3LYP ( ). The DFT-D2 method can be activated by setting LVDW=.TRUE. Optionally, the forcefield parameters can be controlled using the following flags (the default values are listed): VDW_RADIUS = 30.0 cutoff radius () for pair interactions VDW_SCALING = 0.75 global scaling factor VDW_D = 20.0 damping parameter VDW_C6 = ,... parameters ( ) for each species defined in POSCAR VDW_R0 = ,... parameters () for each species defined in POSCAR The default values for VDW_C6 and VDW_R0 are compiled in Tab. 2 . As the potential energy, interatomic forces as well as stress tensor are corrected by adding contribution from the forcefield, simulations such as the atomic and lattice relaxations, molecular dynamics, and vibrational analysis can be performed. The number of atomic pairs contributing to and the estimated vdW energy are written in OUTCAR (check lines following the expression 'Grimme's potential'). The forces and stresses written in OUTCAR contain the vdW correction but the corrected energy should be read from OSZICAR (energies in OUTCAR do not contain the vdW term). IMPORTANT NOTE: The defaults for VDW_C6 and VDW_R0 are defined only for the first five rows of periodic table of elements (see Tab. 2 ) - if the system contains other elements the user must provide the corresponding parameters. Table 2: Parameters used in the empirical force-field of Grimme . Element C R Element C R Jnm mol Jnm mol H 0.14 1.001 K 10.80 1.485 He 0.08 1.012 Ca 10.80 1.474 Li 1.61 0.825 Sc-Zn 10.80 1.562 Be 1.61 1.408 Ga 16.99 1.650 B 3.13 1.485 Ge 17.10 1.727 C 1.75 1.452 As 16.37 1.760 N 1.23 1.397 Se 12.64 1.771 O 0.70 1.342 Br 12.47 1.749 F 0.75 1.287 Kr 12.01 1.727 Ne 0.63 1.243 Rb 24.67 1.628 Na 5.71 1.144 Sr 24.67 1.606 Mg 5.71 1.364 Y-Cd 24.67 1.639 Al 10.79 1.716 In 37.32 1.672 Si 9.23 1.716 Sn 38.71 1.804 P 7.84 1.705 Sb 38.44 1.881 S 5.57 1.683 Te 31.74 1.892 Cl 5.07 1.639 I 31.50 1.892 Ar 4.61 1.595 Xe 29.99 1.881
Platform: Dell T7500 workstation; vasp 4.638; Ubuntu 12.04 (also ubuntu 11.04) software for compilation: gcc; gfortran(maybe necessary); ifort MKL (l_fcompxe_intel64_2011.9.293); openmpi-1.60 for parallelization version Procedures as follows 1. install ifort + mkl 2. make libintel64 3. install openmpi 4. make vasp.4.lib 5. make vasp Please reference to attachment file for detailed procedures and Makefiles both for series and parallel version compilaton process series.zip ; parallelization.zip
I successfully installed VASP 5.2.12 on my DELL desktop, 2 Intel Xeon Quad cores, 8 CPUs in total. I spend a lot of time for it, I'd like to share the experience and I wish you to spend less. :) System: Ubuntu 11.04, 64 bit C compiler: gcc (you can also use icc, i installed Intel C++ Composer XE) Fortran compiler: Intel Fortran Composer XE 2011 GotoBLAS2-1.13 ( http://www.tacc.utexas.edu/tacc-projects/gotoblas2/downloads) FFTW 3.2.2 ( http://www.fftw.org/) , you can use newer if available Openmpi 1.4.3 ( http://www.open-mpi.org/) , you can use newer if available Since I use ubuntu I almost always use sudo command like sudo make TARGET=CORE2 USE_THREAD=0 I don't write sudo thing further in this post since it's feature of ubuntu. Parallel version 1) installation of GotoBLAS2 Basically it's suggested to type just make but this does not always work. I advise to build like make TARGET=CORE2 USE_THREAD=0 be careful with TARGET flag, don't use default or at list check, you could have problems because of that. Second one has to specify USE_THREAD=0 to have not threaded version, it's faster when used with OpenMPI. You can also specify the compiler: make CC=gcc (or icc) FC=ifort TARGET=CORE2 USE_THREAD=0 I had problems to compile with icc, so I used gcc + ifort 2) Installation of FFTW To compile read supported readme files. ./configure --prefix=/folder/for/fftw make make install I didn't specify any CC=gcc for ./configure, so I used default for me gcc compiler . 3) Installation of OpenMPI To compile OpenMPI read supported readme files. ./configure CC=icc CXX=icc F77=ifort F90=ifort --prefix=/folder/for/openmpi make all install Again I had problems with icc, so I compiled it with gcc, again I used gcc + ifort 4) VASP lib I used makefile.linux_ifc_P4 file the only change you need, it's FC=ifort 5) Compilation of VASP Again I started from makefile.linux_ifc_P4 file. Things I changed: 1) FFLAGS = -FR -names lowercase -assume byterecl 2) If you use GotoBLAS BLAS= /home/alex/VASP/GotoBLAS2/libgoto2.so or you can use MKL, but MKL is slow for parallel version for my case BLAS=-L/opt/intel/composerxe-2011.4.191/mkl/lib/intel64 -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread 3) LAPACK LAPACK= ../vasp.5.lib/lapack_double.o 4) fortran compiler/linker for mpi FC=/home/alex/VASP/openmpi/bin/mpif77 5) FFTW for mpi FFT3D = fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o /home/alex/VASP/fft/lib/libfftw3.a INCS = -I/home/alex/VASP/fft/include 6) I tried to set -O3 optimization flag in line OFLAG=-O2 -ip -ftz but I didn't find any advantage and I left it as it is. 7) Probably I forgot something but anyway you can see the makefile. Makefile itself: .SUFFIXES: .inc .f .f90 .F #----------------------------------------------------------------------- # Makefile for Intel Fortran compiler for Pentium/Athlon/Opteron # bases systems # we recommend this makefile for both Intel as well as AMD systems # for AMD based systems appropriate BLAS and fftw libraries are # however mandatory (whereas they are optional for Intel platforms) # # The makefile was tested only under Linux on Intel and AMD platforms # the following compiler versions have been tested: # - ifc.7.1 works stable somewhat slow but reliably # - ifc.8.1 fails to compile the code properly # - ifc.9.1 recommended (both for 32 and 64 bit) # - ifc.10.1 partially recommended (both for 32 and 64 bit) # tested build 20080312 Package ID: l_fc_p_10.1.015 # the gamma only mpi version can not be compiles # using ifc.10.1 # # it might be required to change some of library pathes, since # LINUX installation vary a lot # Hence check ***ALL*** options in this makefile very carefully #----------------------------------------------------------------------- # # BLAS must be installed on the machine # there are several options: # 1) very slow but works: # retrieve the lapackage from ftp.netlib.org # and compile the blas routines (BLAS/SRC directory) # please use g77 or f77 for the compilation. When I tried to # use pgf77 or pgf90 for BLAS, VASP hang up when calling # ZHEEV (however this was with lapack 1.1 now I use lapack 2.0) # 2) more desirable: get an optimized BLAS # # the two most reliable packages around are presently: # 2a) Intels own optimised BLAS (PIII, P4, PD, PC2, Itanium) # http://developer.intel.com/software/products/mkl/ # this is really excellent, if you use Intel CPU's # # 2b) probably fastest SSE2 (4 GFlops on P4, 2.53 GHz, 16 GFlops PD, # around 30 GFlops on Quad core) # Kazushige Goto's BLAS # http://www.cs.utexas.edu/users/kgoto/signup_first.html # http://www.tacc.utexas.edu/resources/software/ # #----------------------------------------------------------------------- # all CPP processed fortran files have the extension .f90 SUFFIX=.f90 #----------------------------------------------------------------------- # fortran compiler and linker #----------------------------------------------------------------------- #FC=ifc # fortran linker #FCL=$(FC) #----------------------------------------------------------------------- # whereis CPP ?? (I need CPP, can't use gcc with proper options) # that's the location of gcc for SUSE 5.3 # # CPP_ = /usr/lib/gcc-lib/i486-linux/2.7.2/cpp -P -C # # that's probably the right line for some Red Hat distribution: # # CPP_ = /usr/lib/gcc-lib/i386-redhat-linux/2.7.2.3/cpp -P -C # # SUSE X.X, maybe some Red Hat distributions: CPP_ = ./preprocess $*.F | /usr/bin/cpp -P -C -traditional $*$(SUFFIX) #----------------------------------------------------------------------- # possible options for CPP: # NGXhalf charge density reduced in X direction # wNGXhalf gamma point only reduced in X direction # avoidalloc avoid ALLOCATE if possible # PGF90 work around some for some PGF90 / IFC bugs # CACHE_SIZE 1000 for PII,PIII, 5000 for Athlon, 8000-12000 P4, PD # RPROMU_DGEMV use DGEMV instead of DGEMM in RPRO (depends on used BLAS) # RACCMU_DGEMV use DGEMV instead of DGEMM in RACC (depends on used BLAS) # tbdyn MD package of Tomas Bucko #----------------------------------------------------------------------- CPP = $(CPP_) -DHOST=\"LinuxIFC\" \ -DCACHE_SIZE=12000 -DPGF90 -Davoidalloc -DNGXhalf \ # -DRPROMU_DGEMV -DRACCMU_DGEMV #----------------------------------------------------------------------- # general fortran flags (there must a trailing blank on this line) # byterecl is strictly required for ifc, since otherwise # the WAVECAR file becomes huge #----------------------------------------------------------------------- FFLAGS = -FR -names lowercase -assume byterecl #----------------------------------------------------------------------- # optimization # we have tested whether higher optimisation improves performance # -axK SSE1 optimization, but also generate code executable on all mach. # xK improves performance somewhat on XP, and a is required in order # to run the code on older Athlons as well # -xW SSE2 optimization # -axW SSE2 optimization, but also generate code executable on all mach. # -tpp6 P3 optimization # -tpp7 P4 optimization #----------------------------------------------------------------------- # ifc.9.1, ifc.10.1 recommended OFLAG=-O2 -ip -ftz OFLAG_HIGH = $(OFLAG) OBJ_HIGH = OBJ_NOOPT = DEBUG = -FR -O0 INLINE = $(OFLAG) #----------------------------------------------------------------------- # the following lines specify the position of BLAS and LAPACK # VASP works fastest with the libgoto library # so that's what we recommend #----------------------------------------------------------------------- # mkl.10.0 # set -DRPROMU_DGEMV -DRACCMU_DGEMV in the CPP lines #BLAS=-L/opt/intel/mkl100/lib/em64t -lmkl -lpthread # even faster for VASP Kazushige Goto's BLAS # http://www.cs.utexas.edu/users/kgoto/signup_first.html # parallel goto version requires sometimes -libverbs BLAS= /home/alex/VASP/GotoBLAS2-1.13_bsd/GotoBLAS2/libgoto2.so # LAPACK, simplest use vasp.5.lib/lapack_double LAPACK= ../vasp.5.lib/lapack_double.o # use the mkl Intel lapack #LAPACK= -lmkl_lapack #----------------------------------------------------------------------- LIB = -L../vasp.5.lib -ldmy \ ../vasp.5.lib/linpack_double.o $(LAPACK) \ $(BLAS) # options for linking, nothing is required (usually) LINK = #----------------------------------------------------------------------- # fft libraries: # VASP.5.2 can use fftw.3.1.X ( http://www.fftw.org) # since this version is faster on P4 machines, we recommend to use it #----------------------------------------------------------------------- #FFT3D = fft3dfurth.o fft3dlib.o # alternatively: fftw.3.1.X is slighly faster and should be used if available #FFT3D = fftw3d.o fft3dlib.o /opt/libs/fftw-3.1.2/lib/libfftw3.a #======================================================================= # MPI section, uncomment the following lines until # general rules and compile lines # presently we recommend OPENMPI, since it seems to offer better # performance than lam or mpich # # !!! Please do not send me any queries on how to install MPI, I will # certainly not answer them !!!! #======================================================================= #----------------------------------------------------------------------- # fortran linker for mpi #----------------------------------------------------------------------- FC=/home/alex/VASP/openmpi/bin/mpif77 FCL=$(FC) #----------------------------------------------------------------------- # additional options for CPP in parallel version (see also above): # NGZhalf charge density reduced in Z direction # wNGZhalf gamma point only reduced in Z direction # scaLAPACK use scaLAPACK (usually slower on 100 Mbit Net) # avoidalloc avoid ALLOCATE if possible # PGF90 work around some for some PGF90 / IFC bugs # CACHE_SIZE 1000 for PII,PIII, 5000 for Athlon, 8000-12000 P4, PD # RPROMU_DGEMV use DGEMV instead of DGEMM in RPRO (depends on used BLAS) # RACCMU_DGEMV use DGEMV instead of DGEMM in RACC (depends on used BLAS) # tbdyn MD package of Tomas Bucko #----------------------------------------------------------------------- #----------------------------------------------------------------------- CPP = $(CPP_) -DMPI -DHOST=\"LinuxIFC\" -DIFC \ -DCACHE_SIZE=4000 -DPGF90 -Davoidalloc -DNGZhalf \ -DMPI_BLOCK=8000 # -DRPROMU_DGEMV -DRACCMU_DGEMV #----------------------------------------------------------------------- # location of SCALAPACK # if you do not use SCALAPACK simply leave that section commented out #----------------------------------------------------------------------- #BLACS=$(HOME)/archives/SCALAPACK/BLACS/ #SCA_=$(HOME)/archives/SCALAPACK/SCALAPACK #SCA= $(SCA_)/libscalapack.a \ # $(BLACS)/LIB/blacsF77init_MPI-LINUX-0.a $(BLACS)/LIB/blacs_MPI-LINUX-0.a $(BLACS)/LIB/blacsF77init_MPI-LINUX-0.a SCA= #----------------------------------------------------------------------- # libraries for mpi #----------------------------------------------------------------------- #LIB = -L../vasp.5.lib -ldmy \ # ../vasp.5.lib/linpack_double.o $(LAPACK) \ # $(SCA) $(BLAS) # FFT: fftmpi.o with fft3dlib of Juergen Furthmueller #FFT3D = fftmpi.o fftmpi_map.o fft3dfurth.o fft3dlib.o # alternatively: fftw.3.1.X is slighly faster and should be used if available FFT3D = fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o /home/alex/VASP/fft/lib/libfftw3.a INCS = -I/home/alex/VASP/fft/include #----------------------------------------------------------------------- # general rules and compile lines #----------------------------------------------------------------------- BASIC= symmetry.o symlib.o lattlib.o random.o SOURCE= base.o mpi.o smart_allocate.o xml.o \ constant.o jacobi.o main_mpi.o scala.o \ asa.o lattice.o poscar.o ini.o mgrid.o xclib.o vdw_nl.o xclib_grad.o \ radial.o pseudo.o gridq.o ebs.o \ mkpoints.o wave.o wave_mpi.o wave_high.o \ $(BASIC) nonl.o nonlr.o nonl_high.o dfast.o choleski2.o \ mix.o hamil.o xcgrad.o xcspin.o potex1.o potex2.o \ constrmag.o cl_shift.o relativistic.o LDApU.o \ paw_base.o metagga.o egrad.o pawsym.o pawfock.o pawlhf.o rhfatm.o paw.o \ mkpoints_full.o charge.o Lebedev-Laikov.o stockholder.o dipol.o pot.o \ dos.o elf.o tet.o tetweight.o hamil_rot.o \ steep.o chain.o dyna.o sphpro.o us.o core_rel.o \ aedens.o wavpre.o wavpre_noio.o broyden.o \ dynbr.o rmm-diis.o reader.o writer.o tutor.o xml_writer.o \ brent.o stufak.o fileio.o opergrid.o stepver.o \ chgloc.o fast_aug.o fock.o mkpoints_change.o sym_grad.o \ mymath.o internals.o dynconstr.o dimer_heyden.o dvvtrajectory.o vdwforcefield.o \ hamil_high.o nmr.o pead.o mlwf.o subrot.o subrot_scf.o \ force.o pwlhf.o gw_model.o optreal.o davidson.o david_inner.o \ electron.o rot.o electron_all.o shm.o pardens.o paircorrection.o \ optics.o constr_cell_relax.o stm.o finite_diff.o elpol.o \ hamil_lr.o rmm-diis_lr.o subrot_cluster.o subrot_lr.o \ lr_helper.o hamil_lrf.o elinear_response.o ilinear_response.o \ linear_optics.o linear_response.o \ setlocalpp.o wannier.o electron_OEP.o electron_lhf.o twoelectron4o.o \ ratpol.o screened_2e.o wave_cacher.o chi_base.o wpot.o local_field.o \ ump2.o bse_te.o bse.o acfdt.o chi.o sydmat.o dmft.o \ rmm-diis_mlr.o linear_response_NMR.o vasp: $(SOURCE) $(FFT3D) $(INC) main.o rm -f vasp $(FCL) -o vasp main.o $(SOURCE) $(FFT3D) $(LIB) $(LINK) makeparam: $(SOURCE) $(FFT3D) makeparam.o main.F $(INC) $(FCL) -o makeparam $(LINK) makeparam.o $(SOURCE) $(FFT3D) $(LIB) zgemmtest: zgemmtest.o base.o random.o $(INC) $(FCL) -o zgemmtest $(LINK) zgemmtest.o random.o base.o $(LIB) dgemmtest: dgemmtest.o base.o random.o $(INC) $(FCL) -o dgemmtest $(LINK) dgemmtest.o random.o base.o $(LIB) ffttest: base.o smart_allocate.o mpi.o mgrid.o random.o ffttest.o $(FFT3D) $(INC) $(FCL) -o ffttest $(LINK) ffttest.o mpi.o mgrid.o random.o smart_allocate.o base.o $(FFT3D) $(LIB) kpoints: $(SOURCE) $(FFT3D) makekpoints.o main.F $(INC) $(FCL) -o kpoints $(LINK) makekpoints.o $(SOURCE) $(FFT3D) $(LIB) clean: -rm -f *.g *.f90 *.o *.L *.mod ; touch *.F main.o: main$(SUFFIX) $(FC) $(FFLAGS)$(DEBUG) $(INCS) -c main$(SUFFIX) xcgrad.o: xcgrad$(SUFFIX) $(FC) $(FFLAGS) $(INLINE) $(INCS) -c xcgrad$(SUFFIX) xcspin.o: xcspin$(SUFFIX) $(FC) $(FFLAGS) $(INLINE) $(INCS) -c xcspin$(SUFFIX) makeparam.o: makeparam$(SUFFIX) $(FC) $(FFLAGS)$(DEBUG) $(INCS) -c makeparam$(SUFFIX) makeparam$(SUFFIX): makeparam.F main.F # # MIND: I do not have a full dependency list for the include # and MODULES: here are only the minimal basic dependencies # if one strucuture is changed then touch_dep must be called # with the corresponding name of the structure # base.o: base.inc base.F mgrid.o: mgrid.inc mgrid.F constant.o: constant.inc constant.F lattice.o: lattice.inc lattice.F setex.o: setexm.inc setex.F pseudo.o: pseudo.inc pseudo.F poscar.o: poscar.inc poscar.F mkpoints.o: mkpoints.inc mkpoints.F wave.o: wave.F nonl.o: nonl.inc nonl.F nonlr.o: nonlr.inc nonlr.F $(OBJ_HIGH): $(CPP) $(FC) $(FFLAGS) $(OFLAG_HIGH) $(INCS) -c $*$(SUFFIX) $(OBJ_NOOPT): $(CPP) $(FC) $(FFLAGS) $(INCS) -c $*$(SUFFIX) fft3dlib_f77.o: fft3dlib_f77.F $(CPP) $(F77) $(FFLAGS_F77) -c $*$(SUFFIX) .F.o: $(CPP) $(FC) $(FFLAGS) $(OFLAG) $(INCS) -c $*$(SUFFIX) .F$(SUFFIX): $(CPP) $(SUFFIX).o: $(FC) $(FFLAGS) $(OFLAG) $(INCS) -c $*$(SUFFIX) # special rules #----------------------------------------------------------------------- # these special rules are cummulative (that is once failed # in one compiler version, stays in the list forever) # -tpp5|6|7 P, PII-PIII, PIV # -xW use SIMD (does not pay of on PII, since fft3d uses double prec) # all other options do no affect the code performance since -O1 is used fft3dlib.o : fft3dlib.F $(CPP) $(FC) -FR -names lowercase -O2 -c $*$(SUFFIX) fft3dfurth.o : fft3dfurth.F $(CPP) $(FC) -FR -names lowercase -O1 -c $*$(SUFFIX) fftw3d.o : fftw3d.F $(CPP) $(FC) -FR -names lowercase -O1 $(INCS) -c $*$(SUFFIX) wave_high.o : wave_high.F $(CPP) $(FC) -FR -names lowercase -O1 -c $*$(SUFFIX) radial.o : radial.F $(CPP) $(FC) -FR -names lowercase -O1 -c $*$(SUFFIX) symlib.o : symlib.F $(CPP) $(FC) -FR -names lowercase -O1 -c $*$(SUFFIX) symmetry.o : symmetry.F $(CPP) $(FC) -FR -names lowercase -O1 -c $*$(SUFFIX) wave_mpi.o : wave_mpi.F $(CPP) $(FC) -FR -names lowercase -O1 -c $*$(SUFFIX) wave.o : wave.F $(CPP) $(FC) -FR -names lowercase -O1 -c $*$(SUFFIX) dynbr.o : dynbr.F $(CPP) $(FC) -FR -names lowercase -O1 -c $*$(SUFFIX) asa.o : asa.F $(CPP) $(FC) -FR -names lowercase -O1 -c $*$(SUFFIX) broyden.o : broyden.F $(CPP) $(FC) -FR -names lowercase -O2 -c $*$(SUFFIX) us.o : us.F $(CPP) $(FC) -FR -names lowercase -O1 -c $*$(SUFFIX) LDApU.o : LDApU.F $(CPP) $(FC) -FR -names lowercase -O2 -c $*$(SUFFIX)
内容:什么是VASP、优点、主要输入文件 一 VASP is acomplex package for performing ab-initio quantum-mechanical molecular dynamics (MD) simulations using pseudopotentials or the projector-augmented wave method and aplane wave basis set. The approach imple-mentedin VASP is based on the (?nite-temperature) local-density approximation with the free energy as variationa l quantity and anexact evaluationof the instantaneous electronic ground state at each MD time step. (译文:) 二 计算的体系十余第一行元素和过渡金属;体系计算快;基于Linux/Unix等平行计算;自动对称分析;加速收敛 三 一个最简单的VASP计算体系,应该包括四个输入文件: INCAR(计算细节);POSCAR(体系坐标);POTCAR(赝势);KPONITS(k空间描述)。 吉宗威