Code::Blocks Forums

User forums => Help => Topic started by: QuantumMechanic on November 27, 2011, 07:44:42 AM

Title: How to Compile this Program
Post by: QuantumMechanic on November 27, 2011, 07:44:42 AM
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);
}
Title: Re: How to Compile this Program
Post by: zabzonk on November 27, 2011, 09:07:10 AM
It's horrible code, but it does compile (as C, not C++). What error are you getting, and why do you think it is a Code::Blocks issue?
Title: Re: How to Compile this Program
Post by: Radek on November 27, 2011, 10:03:57 AM
This seems to be a standard console program. No GUI in sight, only standard C. Thus, create a "console app" project, remove the main.c added to your project by Code Blocks by default, and add your code. You should pass.
Title: Re: How to Compile this Program
Post by: Jenna on November 27, 2011, 10:36:29 AM
Could you please explain, where this question is related to Code:Blocks, which is an IDE, not a compiler ?

If it is not related, this question violates our forum rules and wil be locked !

And please use code-tags for to embed code the next time, to enhance the readability.
I wil do this for you in your opening post.