/* ************************************************************************ * wave.c: Solution of wave equation using with finite differences * * du/dt+c*du/dx (c>0) * 1: FTCS * 2: Lax * 3: Lax-Wendroff * 4: 1st-order up-wind (kazakami) ************************************************************************ */ #include #include #include #define nx 51 /* grid size */ main() { int imode, i, j, nstep; double c, nu, x, dx, t, dt, u[nx], du[nx]; FILE *output; /* save data in file wave.dat */ output = fopen("wave.dat","w"); printf("wave equation\n"); printf("du/dt+c*du/dx (c>0)\n"); printf("1: FTCS\n"); printf("2: Lax\n"); printf("3: Lax-Wendroff\n"); printf("4: 1st-order up-wind (kazakami)\n"); printf("Input: imode ?\n"); scanf("%d", &imode); printf("Input: nu ?\n"); scanf("%lf", &nu); printf("Input: step number ?\n"); scanf("%d", &nstep); c=1.0; dx=1.0/nx; dt=nu*dx/c; t=0.0; for(j=0; j