91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

VASP+BEEF
beef-vdW全稱為Bayesian error estimation functional with van der Waals correlation, 是DTU在2012年做出來的一個新泛函,目前和Quantum Espresso,VASP,GPAW均有接口。具體的編譯過程可以參考SUNCAT - Software和 BEEF Functional Software。
把beef編譯到VASP里,首先要編譯libbeef
1 編譯和安裝BEEF
$ cd libbeef
$ chmod +x configure
$ ./configure CC=mpicc --prefix=/opt/software/beef
$ make
$ make install
2 修改VASP makefile.include
makefile.include需要稍作修改(CPP_OPTIONS里添加-Dlibbeeef,LLIBS里添加-Lpathtolibbeef -lbeef)
CPP_OPTIONS= -DMPI -DHOST=\"IFC91_ompi\" -DIFC \
-DCACHE_SIZE=4000 -DPGF90 -Davoidalloc \
-DMPI_BLOCK=8000 -DscaLAPACK -Duse_collective \
-DnoAugXCmeta -Duse_bse_te \
-Duse_shmem -Dtbdyn -Dlibbeef
......
BEEF = -L/opt/software/beef/lib -lbeef
......
LLIBS = $(SCALAPACK) $(LAPACK) $(BLAS) $(BEEF)
......
3 編譯VASP
$ make

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
#include?

#define?nbuf?65536

static?inline?double?sq(double?x)?{return?x*x;}

void?fileerror(const?char?*filename?FILE?*file)
{
????fclose(file);
????fprintf(stderr?“error?reading?file?%s\n“?filename);
????exit(4);
}

void?openerror(const?char?*filename)
{
????fprintf(stderr?“error?opening?file?%s\n“?filename);
????exit(3);
}

FILE?*openandfindlastbeefens(const?char?*filename?char?*buf)
{
????FILE?*f;
????unsigned?long?int?ulastu;
????
????f?=?fopen(filename?“r“);
????if(!f)?openerror(filename);
????
????u?=?1;
????while(fgets(bufnbuff)?&&?!strstr(buf“BEEFens“))?u++;
????if(!strstr(buf“ensemble?energies“))?fileerror(filename?f);

????do?{
lastu?=?u;
u++;
while(fgets(bufnbuff)?&&?!strstr(buf“BEEFens“))?u++;
????}?while(strstr(buf“ensemble?energies“));
????
????if(fseek(f0SEEK_SET))?fileerror(filename?f);
????
????for(u=0;u????
????return?f;
}


int?main(int?argc?char?**argv)
{
????char?buf[nbuf];
????double?*samples;
????FILE?*dftout;
????double?de;
????int?nsamples;

????if(argc?????{
fprintf(stderr?“usage:?%s?factor1?outputfile1?...?factorN?outputfileN\n“?argv[0]);
return?1;
????}

????dftout?=?openandfindlastbeefens(argv[2]?buf);
????nsamples?=?strtol(strstr(buf“BEEFens“)+7?NULL?10);

????samples?=?(double?*)?malloc(nsamples*sizeof(double));
????if(!samples)
????{
fclose(dftout);
fputs(“not?enough?memory?for?ensemble?energies\n“?stderr);
return?2;
????}

????d?=?strtod(argv[1]?NULL);
????for(int?j=0;j????{
if(!fgets(bufnbufdftout))?fileerror(argv[2]?dftout);
samples[j]?=?d*strtod(buf?NULL);
????}
????fclose(dftout);
????for(int?i=3;i????{
d?=?strtod(argv[i]?NULL);
dftout?=?openandfindlastbeefens(argv[i+1]?buf);
for(int?j=0;j {
????if(!fgets(bufnbufdftout))?fileerror(argv[i+1]?dftout);
????samples[j]?+=?d*strtod(buf?NULL);
}
fclose(dftout);
????}

????d?=?samples[0];
????for(int?i=1;i????d?/=?(double)?nsamples;
????e?=?sq(samples[0]-d);
????for(int?i=1;i????free(samples);

????printf(“%.5g?standard?deviation\n“?sqrt(e/nsamples));

????return?0;
}

評論

共有 條評論