24小时热门版块排行榜    

Znn3bq.jpeg
查看: 2179  |  回复: 10
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

herarysara

木虫 (小有名气)

[求助] lammps计算结果xyz文件中每个数字代表的字符长短。

lammps计算结果xyz文件,想提出文件中的数据,用c++的文件指针,可是不知道每个数据的字符长短,应该怎么确定,求赐教!
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jiangtao9571

新虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
herarysara: 金币+5 2012-12-06 17:07:58
zh1987hs: 金币+3, 谢谢 2012-12-09 14:59:30
我试了一下得到的xyz中数据的格式如下:
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

这些都是数据,不要把它当成字符啊,这样不存在长短了啊,只要输出用浮点型,保证几位小数就行,我写的小程序供你参考:
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);
                }
}

这个很详细了哦,仔细看看哦,估计你能看懂,如果不行的话要去补习C++了。
5楼2012-12-06 16:38:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 11 个回答

jiaoyixiong

荣誉版主 (职业作家)

【答案】应助回帖

★ ★
感谢参与,应助指数 +1
zh1987hs: 金币+2, 谢谢 2012-12-05 08:13:34
1、lammps是开源软件,你为什么不去看看源程序呢?

2、你为什么不试试用lammps输出那么一小段xyz格式的结果,查看一下呢?
2楼2012-12-04 22:12:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

herarysara

木虫 (小有名气)

引用回帖:
2楼: Originally posted by jiaoyixiong at 2012-12-04 22:12:40
1、lammps是开源软件,你为什么不去看看源程序呢?

2、你为什么不试试用lammps输出那么一小段xyz格式的结果,查看一下呢?

谢谢你的回复,其实我就是想知道他的输出文件每一行所占的字符数,单纯从文件上看到的字节数是不一样的。
3楼2012-12-05 09:49:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

herarysara

木虫 (小有名气)

既是从xyz文件中,用fgets命令取走每个坐标如fgets(str,20,from)中间的20指每个坐标的字符长度,我想知道的就是这个数字应该怎么确定。xyz文件每行对应多少个字符。
4楼2012-12-05 11:47:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 0854求调剂 +10 门路摸摸 2026-04-15 10/500 2026-04-15 21:46 by lbsjt
[考研] 药学求调剂 +11 RussHu 2026-04-12 13/650 2026-04-15 19:07 by zhuwenxu
[考研] 310求调剂 +16 666真好 2026-04-11 18/900 2026-04-15 13:28 by 黑科技矿业
[考研] 一志愿鲁东大学071000生物学学硕初试分数276求调剂 +26 慕绝cc 2026-04-09 30/1500 2026-04-14 18:50 by 蔡苏阳
[考研] 272分材料子求调剂 +41 Loy0361 2026-04-10 54/2700 2026-04-14 18:00 by lhj2009
[考研] 各位老师好,求调剂,本科211,一志愿天津大学生物与医药学硕,差两名录取。 +11 路六六jjj 2026-04-13 11/550 2026-04-14 16:01 by zs92450
[考研] 求调剂,985材料与化工348分 +9 涵竹刘 2026-04-11 14/700 2026-04-13 22:26 by 涵竹刘
[考研] 0854调剂 +10 长弓傲 2026-04-11 11/550 2026-04-13 10:38 by wp06
[考研] 一志愿浙大生物325分求调剂 +9 zysheng 2026-04-12 9/450 2026-04-12 22:31 by yuyin1233
[考研] 0854调剂 +12 长弓傲 2026-04-09 13/650 2026-04-12 09:56 by 逆水乘风
[考研] 一志愿厦大0856,306求调剂 +15 Bblinging 2026-04-11 15/750 2026-04-11 22:53 by 314126402
[考研] 农学0904 312求调剂 +6 Say Never 2026-04-10 6/300 2026-04-11 10:33 by wwj2530616
[考研] 297求调剂 +9 Kwgyz 2026-04-09 9/450 2026-04-11 10:09 by zhq0425
[考研] 中药学调剂 初试324 +4 洋甘菊、 2026-04-10 6/300 2026-04-11 09:41 by gong120082
[考研] 282,求调剂 +12 jggshjkkm 2026-04-09 14/700 2026-04-11 09:39 by 猪会飞
[考研] 22408 366分,本科211,一志愿西工大 +4 Rubt 2026-04-09 4/200 2026-04-10 19:51 by chemisry
[考研] 一志愿京区985,085401电子信息,本科电子信息 +3 阳光开朗的男孩 2026-04-10 3/150 2026-04-10 16:29 by sophia_93
[考研] 调剂申请086000一志愿西北农林科技大学生物与医药320分-本科齐鲁工业大学 +3 美美女士 2026-04-09 3/150 2026-04-10 10:31 by liuhuiying09
[考研] 292求调剂 +9 笑笑袁 2026-04-09 9/450 2026-04-10 10:05 by LHGeng
[考研] 初试分332,一志愿报考西北工业大学, +11 故人?? 2026-04-09 11/550 2026-04-09 21:54 by JineShine
信息提示
请填处理意见