#include "../math/math.h"
/* the pse, only needed here */
-static char *pse[]={
+static char *pse_name[]={
"*",
"H",
"He",
"Ar",
};
+static char *pse_col[]={
+ "*",
+ "White",
+ "He",
+ "Li",
+ "Be",
+ "B",
+ "Gray",
+ "N",
+ "Blue",
+ "F",
+ "Ne",
+ "Na",
+ "Mg",
+ "Al",
+ "Yellow",
+ "P",
+ "S",
+ "Cl",
+ "Ar",
+};
+
int visual_init(t_visual *v,char *filebase) {
char file[128+8];
strncpy(v->fb,filebase,128);
memset(file,0,128+8);
- sprintf(file,"%s.scr",v->fb);
+ //sprintf(file,"%s/visualize.scr",v->fb); // obsolete!
- v->fd=open(file,O_WRONLY|O_CREAT|O_TRUNC);
+ /* obsolete!
+ v->fd=open(file,O_WRONLY|O_CREAT|O_EXCL,S_IRUSR|S_IWUSR);
if(v->fd<0) {
perror("open visual fd");
return -1;
}
dprintf(v->fd,"set write on\n");
-
- memset(&(v->dim),0,sizeof(t_3dvec));
+ */
return 0;
}
int visual_tini(t_visual *v) {
+ /* obsolete!
if(v->fd) {
dprintf(v->fd,"quit\n");
close(v->fd);
}
+ */
return 0;
}
int i,fd;
char file[128+64];
t_3dvec dim;
+ double help;
- dim.x=10e9*v->dim.x;
- dim.y=10e9*v->dim.y;
- dim.z=10e9*v->dim.z;
+ dim.x=v->dim.x;
+ dim.y=v->dim.y;
+ dim.z=v->dim.z;
- sprintf(file,"%s-%.15f.xyz",v->fb,time);
- fd=open(file,O_WRONLY|O_CREAT|O_TRUNC);
+ help=(dim.x+dim.y);
+
+ sprintf(file,"%s/atomic_conf_%07.f.xyz",v->fb,time);
+ fd=open(file,O_WRONLY|O_CREAT|O_TRUNC,S_IRUSR|S_IWUSR);
if(fd<0) {
perror("open visual save file fd");
return -1;
}
/* script file update */
+ /* obsolete!
dprintf(v->fd,"load xyz %s\n",file);
- dprintf(v->fd,"spacefill 270\n");
+ dprintf(v->fd,"spacefill 200\n");
dprintf(v->fd,"rotate x 100\n");
dprintf(v->fd,"rotate y 10\n");
dprintf(v->fd,"set ambient 20\n");
dprintf(v->fd,"set specular on\n");
+ dprintf(v->fd,"set boundbox on\n");
//dprintf(v->fd,"label\n");
- sprintf(file,"%s-%.15f.ppm",v->fb,time);
+ sprintf(file,"%s/visualize_%07.f.ppm",v->fb,time);
dprintf(v->fd,"write ppm %s\n",file);
dprintf(v->fd,"zap\n");
+ */
/* write the actual data file */
- dprintf(fd,"%d\n",(dim.x==0)?n:n+8);
- dprintf(fd,"atoms at time %.15f\n",time);
+ //dprintf(fd,"%d\n",(dim.x==0)?n:n+8);
+ dprintf(fd,"# [P] %d %07.f <%f,%f,%f>\n",
+ n,time,help/40.0,help/40.0,-0.8*help);
for(i=0;i<n;i++)
- dprintf(fd,"%s %f %f %f\n",pse[atom[i].element],
- 10e9*atom[i].r.x,
- 10e9*atom[i].r.y,
- 10e9*atom[i].r.z);
+ dprintf(fd,"%s %f %f %f %s %f\n",pse_name[atom[i].element],
+ atom[i].r.x,
+ atom[i].r.y,
+ atom[i].r.z,
+ pse_col[atom[i].element],
+ atom[i].ekin);
if(dim.x) {
- dprintf(fd,"%s %f %f %f\n",pse[0],dim.x/2,dim.y/2,dim.z/2);
- dprintf(fd,"%s %f %f %f\n",pse[0],-dim.x/2,dim.y/2,dim.z/2);
- dprintf(fd,"%s %f %f %f\n",pse[0],dim.x/2,-dim.y/2,dim.z/2);
- dprintf(fd,"%s %f %f %f\n",pse[0],dim.x/2,dim.y/2,-dim.z/2);
- dprintf(fd,"%s %f %f %f\n",pse[0],-dim.x/2,-dim.y/2,dim.z/2);
- dprintf(fd,"%s %f %f %f\n",pse[0],dim.x/2,-dim.y/2,-dim.z/2);
- dprintf(fd,"%s %f %f %f\n",pse[0],-dim.x/2,dim.y/2,-dim.z/2);
- dprintf(fd,"%s %f %f %f\n",pse[0],-dim.x/2,-dim.y/2,-dim.z/2);
+ dprintf(fd,"# [D] %f %f %f %f %f %f\n",
+ -dim.x/2,-dim.y/2,-dim.z/2,
+ dim.x/2,-dim.y/2,-dim.z/2);
+ dprintf(fd,"# [D] %f %f %f %f %f %f\n",
+ -dim.x/2,-dim.y/2,-dim.z/2,
+ -dim.x/2,dim.y/2,-dim.z/2);
+ dprintf(fd,"# [D] %f %f %f %f %f %f\n",
+ dim.x/2,dim.y/2,-dim.z/2,
+ dim.x/2,-dim.y/2,-dim.z/2);
+ dprintf(fd,"# [D] %f %f %f %f %f %f\n",
+ -dim.x/2,dim.y/2,-dim.z/2,
+ dim.x/2,dim.y/2,-dim.z/2);
+
+ dprintf(fd,"# [D] %f %f %f %f %f %f\n",
+ -dim.x/2,-dim.y/2,dim.z/2,
+ dim.x/2,-dim.y/2,dim.z/2);
+ dprintf(fd,"# [D] %f %f %f %f %f %f\n",
+ -dim.x/2,-dim.y/2,dim.z/2,
+ -dim.x/2,dim.y/2,dim.z/2);
+ dprintf(fd,"# [D] %f %f %f %f %f %f\n",
+ dim.x/2,dim.y/2,dim.z/2,
+ dim.x/2,-dim.y/2,dim.z/2);
+ dprintf(fd,"# [D] %f %f %f %f %f %f\n",
+ -dim.x/2,dim.y/2,dim.z/2,
+ dim.x/2,dim.y/2,dim.z/2);
+
+ dprintf(fd,"# [D] %f %f %f %f %f %f\n",
+ -dim.x/2,-dim.y/2,dim.z/2,
+ -dim.x/2,-dim.y/2,-dim.z/2);
+ dprintf(fd,"# [D] %f %f %f %f %f %f\n",
+ -dim.x/2,dim.y/2,dim.z/2,
+ -dim.x/2,dim.y/2,-dim.z/2);
+ dprintf(fd,"# [D] %f %f %f %f %f %f\n",
+ dim.x/2,-dim.y/2,dim.z/2,
+ dim.x/2,-dim.y/2,-dim.z/2);
+ dprintf(fd,"# [D] %f %f %f %f %f %f\n",
+ dim.x/2,dim.y/2,dim.z/2,
+ dim.x/2,dim.y/2,-dim.z/2);
}
+
close(fd);
return 0;