void MainApplication::runApplication(int argc, char *argv[]) { double dt, T, Tbath, tau, L; int nSteps, thermostat, N, calculateStatistics, saveStates; if (argc != 11) { cout << endl << "! Usage: 'dt nSteps T(MD) thermostat#(0,1,2) Tbath(MD) tau L(SI) N calculateStatistics saveStates'" << endl; if (argc == 1) { dt = 0.005; nSteps = 200; T = 1.7; // to get 0.851 thermostat = 1; Tbath = 0.851; tau = 15; L = 5.720; N = 20; calculateStatistics = 1; saveStates = 0; cout << endl << "! Using default of: dt = " << dt << ", nSteps = " << nSteps << ", T = " << T << ", thermostat# = " << thermostat << ", Tbath = " << Tbath << ", tau = " << tau << ", L = " << L << ", N = " << N << ", statistics? = " << calculateStatistics << ", save states? = " << saveStates << endl << endl; } else exit(1); } else if (argc == 11) { dt = atof(argv[1]); nSteps = atoi(argv[2]); T = atof(argv[3]); thermostat = atoi(argv[4]); Tbath = atof(argv[5]); tau = atof(argv[6]); L = atof(argv[7]); N = atoi(argv[8]); calculateStatistics = atoi(argv[9]); saveStates = atoi(argv[10]); } double tt = 1.0/10; long seed = -1; cout << "dt : " << dt << endl; cout << "Tbath : " << Tbath << endl; CState state; state = initialize(T, L, N, &seed); CStatisticsSampler sampler(state); sampler.initialize_pairCorrelation(200, 1); ostringstream filename; // state.load("./output/states/state.1000.xyz"); for (int i = 0; i < nSteps; i++) { if (i%50==0) cout << "n = " << i << " of " << nSteps << endl; filename.str(string()); filename << "./output/states/state." << setfill('0') << setw(4) << i << ".xyz"; if (saveStates) state.save(filename.str(), 1, 1); if (calculateStatistics) sampler.sample(state, 1, dt*i); // if (i>250) sampler.pairCorrelation(); if (thermostat == 1 && calculateStatistics) state.berendsen(Tbath, sampler.T, tt); else if (thermostat == 2) state.andersen(Tbath, tt, &seed); state.move(dt, calculateStatistics); } sampler.sample(state, 1, nSteps*dt); // filename.str(string()); // filename << "./output/states/state." << setfill('0') << setw(4) << nSteps << ".xyz"; // state.save(filename.str(), 0, 0); // sampler.pairCorrelation_manual("./output/pairCorrelation_final.dat", 1, 200); }