// program parabolic2 // // Copyright 2000 J. Makino #include "cpgplot.h" #include #include #include void initparam(double u[], int & nx, double &dx, double & dt, int & niter, int &gmode) { cerr << "Enter nx, tmax, dt:"; double tmax; cin >> nx >> tmax >> dt; dx = 1.0/nx; niter = (tmax+dt/2)/dt; cerr << "Enter graphics mode 0: no G\n" << " 1: animation\n" << " 2: no-erase)\n"; cin >> gmode; cout << "nx = " << nx<< " dt = " << dt << " niter = "<< niter<< "\n"; cout << "gmode = " << gmode << "\n"; int i; for (i=0;i<=nx; i++) u[i] = 0; u[(nx+1)/2] = nx; } void solve_tridiagonal(double ad[], double al[], double au[], double b[], int n) { int i; for(i=1;i=0;i--){ b[i] = (b[i]-au[i]*b[i+1])/ad[i]; } } void push_system(double u[], double ad[], double au[], double al[], int nx, double dx, double dt) { double delta = dt/(dx*dx); int i; for(i=0;i