News:

When registered with our forums, feel free to send a "here I am" post here to differ human beings from SPAM bots.

Main Menu

How to Compile this Program

Started by QuantumMechanic, November 27, 2011, 07:44:42 AM

Previous topic - Next topic

QuantumMechanic

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);
}

zabzonk

#1
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?

Radek

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.

Jenna

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.