| 查看: 671 | 回复: 1 | ||
xcid银虫 (小有名气)
|
[求助]
大家能不能帮我看看这个程序,我用的是DEV-C++,但是一运行就报错
|
|
#include <stdio.h> #include <stdlib.h> #include <math.h> #include <iostream.h> #include <fstream.h> #define NKPTS_MAX 10000 #define NBANDS_MAX 200 int main ( int argc, char *argv[]) { if( argc < 4) { printf("should be like: \n" ;printf("./a.out nkx nky nkz \n" ;exit(0); } int nkx, nky,nkz; nkx=atoi(argv[1]); nky=atoi(argv[2]); nkz=atoi(argv[3]); fstream fid; fid.open("OUTCAR",ios::in); if ( !fid ) { printf("cant open OUTCAR\n" ;exit(0); } char str[255], stmp[255]; //keyword1[]="NKPTS"; int NKPTS,NBANDS; do { fid.getline(str,255); if(strstr(str,"NKPTS" != NULL ){ printf("str=%s\n", str); sscanf(str,"%s%s%s%d",stmp,stmp,stmp,&NKPTS); sscanf(str,"%s%s%s%s%s%s%s%s%s%s%s%s%s%s%d",stmp,stmp,stmp,stmp,stmp,stmp,stmp,stmp,stmp,stmp,stmp,stmp,stmp,stmp,&NBANDS); printf("NKPTS: %d, NBANDS: %d\n",NKPTS,NBANDS); break; } }while( !fid.eof()) ; float A[3][3], B[3][3]; do { fid.getline(str,255); if(strstr(str,"reciprocal lattice vectors" != NULL ){ for(int i=0;i<3;i++) { fid.getline(str,255); sscanf(str,"%f%f%f%f%f%f",&A[0],&A[1],&A[2],&B[0],&B[1],&B[2]); } printf("A1: %f %f %f \n",A[0][0],A[0][1],A[0][2]); printf("A2: %f %f %f \n",A[1][0],A[1][1],A[1][2]); printf("A3: %f %f %f \n",A[2][0],A[2][1],A[2][2]); printf("B1: %f %f %f \n",B[0][0],B[0][1],B[0][2]); printf("B2: %f %f %f \n",B[1][0],B[1][1],B[1][2]); printf("B3: %f %f %f \n",B[2][0],B[2][1],B[2][2]); break; } }while( !fid.eof()); float Ef; do { fid.getline(str,255); if(strstr(str,"E-fermi" != NULL ){ printf("str=%s\n", str); sscanf(str,"%s%s%f",stmp,stmp,&Ef); printf("Ef: %f\n",Ef); break; } }while( !fid.eof()) ; fid.getline(str,255); fid.getline(str,255); float kpt[NKPTS_MAX][3]; float Egv[NKPTS_MAX][NBANDS_MAX]; for(int ik =0; ik < NKPTS; ik++) { // k-point 1: kx ky kz fid.getline(str,255); sscanf(str,"%s%s%s%f%f%f",stmp,stmp,stmp,&kpt[ik][0],&kpt[ik][1],&kpt[ik][2]); fid.getline(str,255); for(int ib=0;ib<NBANDS;ib++) { int bandno,occ; fid.getline(str,255); sscanf(str,"%d%f%f",&bandno,&Egv[ik][ib],&occ); // printf("%d %d : %f\n", ik,ib,Egv[ik][ib]); } fid.getline(str,255); } fid.close(); // find those cross Ef int Nf=0; static int nstore[NBANDS_MAX]; for( int ib =0 ; ib < NBANDS; ib ++) { float vmin=10000, vmax=-10000; for( int ik =0 ; ik < NKPTS ; ik++ ) { if ( Egv[ik][ib] < vmin) { vmin = Egv[ik][ib];} if( Egv[ik][ib] > vmax ) { vmax= Egv[ik][ib];} } if( vmax > Ef && vmin < Ef) { nstore[Nf++]=ib; } } int ib; float Egvf[NKPTS][Nf]; for(int i=0; i<Nf; i++) { ib=nstore; for( int ik=0 ; ik < NKPTS ; ik ++ ) { Egvf[ik]=Egv[ik][ib]; } } //save to bxsf FILE *fid2; fid2=fopen("FS.bsxf","w" ;if( fid2 == NULL) { printf( "can't create fout: FS.bsxf\n" ;exit(0); } fprintf(fid2,"BEGIN_INFO\n" ;fprintf(fid2," Fermi Energy: %7.5f\n",Ef); fprintf(fid2,"END_INFO\n" ;fprintf(fid2,"\n" ;fprintf(fid2,"BEGIN_BLOCK_BANDGRID_3D\n" ;fprintf(fid2," one_word_comment \n" ;fprintf(fid2," BEGIN_BANDGRID_3D\n" ;fprintf(fid2," %d \n",Nf); fprintf(fid2," %d %d %d \n",nkx,nky,nkz); fprintf(fid2," 0 0 0\n" ; // origin Gammafprintf(fid2," %f %f %f \n", B[0][0],B[0][1],B[0][2]);//Vec(1, );fprintf(fid2," %f %f %f \n", B[1][0],B[1][1],B[1][2]); fprintf(fid2," %f %f %f \n", B[2][0],B[2][1],B[2][2]); int ik = 0; for(int i=0; i < Nf; i++) { fprintf(fid2, " BAND: %d \n",nstore+1); for(int ix=0 ; ix < nkx; ix ++) { for(int iy=0 ; iy < nky; iy ++) { for(int iz=0 ; iz <nkz; iz++) { fprintf(fid2," %f ",Egvf[ik++]); } fprintf(fid2,"\n" ;} fprintf(fid2,"\n" ;} } fprintf(fid2," END_BANDGRID_3D\n" ;fprintf(fid2,"END_BLOCK_BANDGRID_3D\n" ;fclose(fid2); } |
» 猜你喜欢
拟解决的关键科学问题还要不要写
已经有7人回复
存款400万可以在学校里躺平吗
已经有19人回复
国自然申请面上模板最新2026版出了吗?
已经有19人回复
请教限项目规定
已经有3人回复
基金委咋了?2026年的指南还没有出来?
已经有10人回复
基金申报
已经有6人回复
推荐一本书
已经有13人回复
纳米粒子粒径的测量
已经有8人回复
疑惑?
已经有5人回复
计算机、0854电子信息(085401-058412)调剂
已经有5人回复
» 本主题相关价值贴推荐,对您同样有帮助:
哪位大仙帮我看下程序,我用的matlab7.1,运行提示du未定义
已经有11人回复
1stopt运行程序,总是出现字符函数错误的提示,请高手帮助
已经有5人回复
配置一台1万元以内的计算机跑linux系统,运行C语言分子动力学模拟
已经有9人回复
求助matlab一程序运行的问题,帮忙看看哪里不对
已经有4人回复
MC一个简单的程序,运行不了,哪位大侠帮看看怎么回事。多谢!
已经有7人回复
程序没报错中断,但停止运行
已经有3人回复
linux下运行python报错,不知原因
已经有12人回复
OpenGl 程序运行报错
已经有4人回复
为什么这个程序运行时有延迟,在VC++6.0中,就是点运行要过一会儿才提示输入
已经有8人回复
【求助】dev c++编译结束,运行后怎么样输出结果?
已经有6人回复
【求助】为什么我这个程序编译都没有问题,就是运行不出来?【已完结】
已经有9人回复


2楼2013-05-24 21:53:44













;
);
回复此楼