Author Topic: How to Compile this Program  (Read 3918 times)

QuantumMechanic

  • Guest
How to Compile this Program
« on: November 27, 2011, 07:44:42 am »
Hello.

I was wondering why this program is not compiling. Thanks


Code
#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);
}
« Last Edit: November 27, 2011, 10:37:01 am by jens »

zabzonk

  • Guest
Re: How to Compile this Program
« Reply #1 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?
« Last Edit: November 27, 2011, 09:32:05 am by Neil Butterworth »

Offline Radek

  • Multiple posting newcomer
  • *
  • Posts: 104
Re: How to Compile this Program
« Reply #2 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.

Offline Jenna

  • Administrator
  • Lives here!
  • *****
  • Posts: 7255
Re: How to Compile this Program
« Reply #3 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.