| 查看: 2135 | 回復(fù): 10 | ||
herarysara木蟲 (小有名氣)
|
[求助]
lammps計(jì)算結(jié)果xyz文件中每個(gè)數(shù)字代表的字符長(zhǎng)短。
|
| lammps計(jì)算結(jié)果xyz文件,想提出文件中的數(shù)據(jù),用c++的文件指針,可是不知道每個(gè)數(shù)據(jù)的字符長(zhǎng)短,應(yīng)該怎么確定,求賜教! |
木蟲 (小有名氣)
木蟲 (小有名氣)
新蟲 (正式寫手)
|
我試了一下得到的xyz中數(shù)據(jù)的格式如下: ITEM: TIMESTEP 0 ITEM: NUMBER OF ATOMS 10000 ITEM: BOX BOUNDS 0 22.66 0 22.66 0 22.66 ITEM: ATOMS id type xs ys zs 5943 1 0.0583092 0.053962 0.061988 412 1 0.0225291 0.0612129 0.058574 2582 1 0.0497735 0.0260711 0.0323743 這些都是數(shù)據(jù),不要把它當(dāng)成字符啊,這樣不存在長(zhǎng)短了啊,只要輸出用浮點(diǎn)型,保證幾位小數(shù)就行,我寫的小程序供你參考: struct bankdata { int num1; int num2; double x; double y; double z; }data[200000],datastation; struct boxsize_infomation { double a; double b; }boxsize[3]; void readdata() { int i=0; char line[80]; printf("Reading atoms.xyz.........\n" ;fgets(line,80,fp1); fgets(line,80,fp1); sscanf(line,"%d\n",×tep); fgets(line,80,fp1); fgets(line,80,fp1); sscanf(line,"%d\n",&atom_tol); fgets(line,80,fp1); fgets(line,80,fp1); sscanf(line,"%lf %lf\n",&boxsize[0].a,&boxsize[0].b); fgets(line,80,fp1); sscanf(line,"%lf %lf\n",&boxsize[1].a,&boxsize[1].b); fgets(line,80,fp1); sscanf(line,"%lf %lf\n",&boxsize[2].a,&boxsize[2].b); fgets(line,80,fp1); printf("step=%d,timestep=%d\n",step,timestep); while(i fgets(line,80,fp1); sscanf(line,"%d %d %lf %lf %lf\n",&datastation.num1,&datastation.num2,&datastation.x,&datastation.y,&datastation.z); data.num1=datastation.num1; data.num2=datastation.num2; data.x=datastation.x; data.y=datastation.y; data.z=datastation.z; i++; } } void writefile() { fprintf(fp,"ITEM: TIMESTEP\n" ;fprintf(fp,"%d\n",timestep); fprintf(fp,"ITEM: NUMBER OF ATOMS\n" ;fprintf(fp,"%d\n",atom_tol); fprintf(fp,"ITEM: BOX BOUNDS\n" ;fprintf(fp,"%g %g\n",boxsize[0].a,boxsize[0].b); fprintf(fp,"%g %g\n",boxsize[1].a,boxsize[1].b); fprintf(fp,"%g %g\n",boxsize[2].a,boxsize[2].b); fprintf(fp,"ITEM: ATOMS id type xs ys zs\n" ;for (i=0; i fprintf(fp,"%d %d %lf %lf %lf \n",data.num1,data.num2,data.x,data.y,data.z); } } 這個(gè)很詳細(xì)了哦,仔細(xì)看看哦,估計(jì)你能看懂,如果不行的話要去補(bǔ)習(xí)C++了。 |
木蟲 (小有名氣)
新蟲 (正式寫手)
木蟲 (小有名氣)
|
不知道你的問(wèn)題解決了沒(méi)? xyz文件內(nèi),主要就是存儲(chǔ)的是原子的坐標(biāo)信息吧? 如果把xyz軌跡文件導(dǎo)入到VMD,使用命令: set sel [atomselect top "the atoms you need"] $sel get {x y z} 就可以讀取出你所需要的原子的坐標(biāo)了 如果只需x坐標(biāo),就寫成 $sel get {x } 即可 這比自己寫那么長(zhǎng)的程序簡(jiǎn)單多了,樓主不妨試試 |
木蟲 (小有名氣)
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 085600材料與化工求調(diào)劑 +3 | 緒幸與子 2026-03-17 | 3/150 |
|
|---|---|---|---|---|
|
[考研] 301求調(diào)劑 +3 | yy要上岸呀 2026-03-17 | 3/150 |
|
|
[考研] 085601專碩,總分342求調(diào)劑,地區(qū)不限 +3 | share_joy 2026-03-16 | 3/150 |
|
|
[考研] 考研調(diào)劑 +3 | 淇ya_~ 2026-03-17 | 5/250 |
|
|
[考研] 藥學(xué)383 求調(diào)劑 +3 | 藥學(xué)chy 2026-03-15 | 4/200 |
|
|
[考研] 286求調(diào)劑 +3 | lemonzzn 2026-03-16 | 5/250 |
|
|
[考研] 化學(xué)調(diào)劑0703 +8 | 啊我我的 2026-03-11 | 8/400 |
|
|
[考研] 070305求調(diào)劑 +3 | mlpqaz03 2026-03-14 | 4/200 |
|
|
[考研] 265求調(diào)劑 +4 | 威化餅07 2026-03-12 | 4/200 |
|
|
[考研] 255求調(diào)劑 +3 | 李嘉慧, 2026-03-12 | 4/200 |
|
|
[考研] 308 085701 四六級(jí)已過(guò)求調(diào)劑 +7 | 溫喬喬喬喬 2026-03-12 | 14/700 |
|
|
[考研] 材料與化工(0856)304求B區(qū)調(diào)劑 +6 | 邱gl 2026-03-12 | 7/350 |
|
|
[考研] 材料371求調(diào)劑 +9 | 鱷魚? 2026-03-11 | 11/550 |
|
|
[考研] 材料與化工求調(diào)劑一志愿 985 總分 295 +8 | dream…… 2026-03-12 | 8/400 |
|
|
[考研] 0856材料與化工301求調(diào)劑 +5 | 奕束光 2026-03-13 | 5/250 |
|
|
[考研] 290求調(diào)劑 +9 | ADT 2026-03-11 | 9/450 |
|
|
[考研] 一志愿211化學(xué)學(xué)碩310分求調(diào)劑 +8 | 努力奮斗112 2026-03-12 | 9/450 |
|
|
[考研] 290求調(diào)劑 +7 | ADT 2026-03-12 | 7/350 |
|
|
[考研] 0856化學(xué)工程280分求調(diào)劑 +4 | shenzxsn 2026-03-11 | 4/200 |
|
|
[考研] 296求調(diào)劑 +3 | 大口吃飯 身體健 2026-03-13 | 3/150 |
|