/***********************************************************************/ /* finite_difference.cc: main program for finite difference simulation */ /* of 1D conservation law */ /* */ /* B. Haasdonk, 22.10.2008 */ /***********************************************************************/ #include "finite_difference.hh" // main loop for finite difference simulation int main(int argc, char** argv) { if (argc!=7) { cerr << "Too few arguments. Usage: \n"; cerr << argv[0] << " a b N T K filename\n"; return(EXIT_FAILURE); } else { // read command line parameters: double a = atof(argv[1]); double b = atof(argv[2]); int N = atoi(argv[3]); double T = atof(argv[4]); int K = atoi(argv[5]); double dt = T/K; string filename(argv[6]); Model model; // initialize model Grid grid(a,b,N); // construct grid DiscreteFunction solution(grid); // allocate memory for solution DiscreteFunction update(grid); // allocate memory for update NumericalFlux numFlux(model); // initialize the numericalflux // initialize time variable: double t=0; // initialize discrete space operator: DiscreteSpaceOperator discOperator(numFlux, model, t); // initialize projection operator Projection projection; // project initial data from model and store in solution projection.apply(model, solution); while (t