Hello.
I was wondering why this program is not compiling. Thanks
#include <stdio.h>
#include <math.h>
#include <float.h>
#include <stdlib.h>
static double Ex(double x, double y, double z);
static double Ey(double x, double y, double z);
static double Ez(double x, double y, double z);
static double Bx(double x, double y, double z);
static double By(double x, double y, double z);
static double Bz(double x, double y, double z);
static double Fx(double x, double y, double z,
double vx, double vy, double vz);
static double Fy(double x, double y, double z,
double vx, double vy, double vz);
static double Fz(double x, double y, double z,
double vx, double vy, double vz);
main()
{
/*Declare variables*/
double t;
double x,y,z,vx,vy,vz;
double k1x,k2x,k3x,k4x;
double k1y,k2y,k3y,k4y;
double k1z,k2z,k3z,k4z;
double k1vx,k2vx,k3vx,k4vx;
double k1vy,k2vy,k3vy,k4vy;
double k1vz,k2vz,k3vz,k4vz;
double h;
double q,m;
/* I/O stuff */
FILE *f1;
f1=fopen("integration.dat", "wt");
/*Set initial conditions*/
x=1;
y=0;
z=0;
vx=0;
vy=0;
vz=0;
t=0;
q=1;
m=1;
/*Set integration stepsize*/
h=0.01;
/*Main time loop*/
while (t<10)
{
/*Calculate the k1's*/
k1x=h*vx;
k1y=h*vy;
k1z=h*vz;
k1vx=h*q/m*Fx(x,y,z,vx,vy,vz);
k1vy=h*q/m*Fy(x,y,z,vx,vy,vz);
k1vz=h*q/m*Fz(x,y,z,vx,vy,vz);
/*Calcuate the k2's*/
k2x=h*(vx+k1vx/2.);
k2y=h*(vy+k1vy/2.);
k2z=h*(vz+k1vz/2.);
k2vx=h*q/m*Fx(x+k1x/2.,y+k1y/2.,z+k1z/2.,
vx+k1vx/2.,vy+k1vy/2.,vz+k1vz/2.);
k2vy=h*q/m*Fy(x+k1x/2.,y+k1y/2.,z+k1z/2.,
vx+k1vx/2.,vy+k1vy/2.,vz+k1vz/2.);
k2vz=h*q/m*Fz(x+k1x/2.,y+k1y/2.,z+k1z/2.,
vx+k1vx/2.,vy+k1vy/2.,vz+k1vz/2.);
/*Calcuate the k3's*/
k3x=h*(vx+k2vx/2.);
k3y=h*(vy+k2vy/2.);
k3z=h*(vz+k2vz/2.);
k3vx=h*q/m*Fx(x+k2x/2.,y+k2y/2.,z+k2z/2.,
vx+k2vx/2.,vy+k2vy/2.,vz+k2vz/2.);
k3vy=h*q/m*Fy(x+k2x/2.,y+k2y/2.,z+k2z/2.,
vx+k2vx/2.,vy+k2vy/2.,vz+k2vz/2.);
k3vz=h*q/m*Fz(x+k2x/2.,y+k2y/2.,z+k2z/2.,
vx+k2vx/2.,vy+k2vy/2.,vz+k2vz/2.);
/*Calcuate the k4's*/
k4x=h*(vx+k3vx);
k4y=h*(vy+k3vy);
k4z=h*(vz+k3vz);
k4vx=h*q/m*Fx(x+k3x,y+k3y,z+k3z,
vx+k3vx,vy+k3vy,vz+k3vz);
k4vy=h*q/m*Fy(x+k3x,y+k3y,z+k3z,
vx+k3vx,vy+k3vy,vz+k3vz);
k4vz=h*q/m*Fz(x+k3x,y+k3y,z+k3z,
vx+k3vx,vy+k3vy,vz+k3vz);
/*Update all the variables*/
t+=h;
x+=1./6.*(k1x + 2.*k2x + 2.*k3x + k4x);
y+=1./6.*(k1y + 2.*k2y + 2.*k3y + k4y);
z+=1./6.*(k1z + 2.*k2z + 2.*k3z + k4z);
vx+=1./6.*(k1vx + 2.*k2vx + 2.*k3vx + k4vx);
vy+=1./6.*(k1vy + 2.*k2vy + 2.*k3vy + k4vy);
vz+=1./6.*(k1vz + 2.*k2vz + 2.*k3vz + k4vz);
/*Output data*/
fprintf(f1,"%e\t%e\t%e\n",t,x,y);
}
/*Write final position on the screen*/
printf("x: %e, y: %e, z: %e \n vx: %e, vy: %e vz: %e \n",
x,y,z,vx,vy,vz);
/* I/O stuff */
fclose(f1);
}
static double Bx(double x, double y, double z)
{
return 0.;
}
static double By(double x, double y, double z)
{
return 0.;
}
static double Bz(double x, double y, double z)
{
return 10.;
}
static double Ex(double x, double y, double z)
{
return 0.1*x;
}
static double Ey(double x, double y, double z)
{
return 0.;
}
static double Ez(double x, double y, double z)
{
return 0.;
}
static double Fx(double x, double y, double z,
double vx, double vy, double vz)
{
return Ex(x,y,z)+vy*Bz(x,y,z)-vz*By(x,y,z);
}
static double Fy(double x, double y, double z,
double vx, double vy, double vz)
{
return Ey(x,y,z)+vz*Bx(x,y,z)-vx*Bz(x,y,z);
}
static double Fz(double x, double y, double z,
double vx, double vy, double vz)
{
return Ez(x,y,z)+vx*By(x,y,z)-vy*Bx(x,y,z);
}