2 * zentral.c - teilchen im zentralfeld
4 * usag: ./zentral <x_0> <y_0> <vx_0> <vy_0> <steps> <alpha>
15 int main(int argc,char **argv) {
16 double x_p,x,y_p,y,r_3; /* ortsvektor */
17 double vx_p,vx,vy_p,vy; /* geschwindigkeitsvektor */
26 printf("usage: %s <x_0> <y_0> <vx_0> <vy_0> <steps> <alpha>\n",argv[0]);
30 /* init + starting conditions */
31 x_p=atof(argv[1]); y_p=atof(argv[2]);
32 vx_p=atof(argv[3]); vy_p=atof(argv[4]);
33 steps=atoi(argv[5]); alpha=atof(argv[6]);
35 sprintf(filename,"zentral_%f_%f_%f_%f_%d_%f.plot",x_p,y_p,vx_p,vy_p,steps,alpha);
38 /* allocate memory for data buffer */
39 if((buf=(double *)malloc(5*steps*sizeof(double)))==NULL) {
40 puts("malloc failed!");
44 buf[1]=x_p; buf[2]=y_p;
45 buf[3]=vx_p; buf[4]=vy_p;
48 for(i=0;i<steps;i++) {
50 f_x=-alpha*x_p/r_3; f_y=-alpha*y_p/r_3;
51 x=x_p+vx_p*tau; y=y_p+vy_p*tau;
52 vx=vx_p+f_x*tau; vy=vy_p+f_y*tau;
56 buf[6+j]=x; buf[7+j]=y;
57 buf[8+j]=vx; buf[9+j]=vy;
64 gp_add_data(fd,buf,5,steps,TYPE_DOUBLE);