int main(int argc, char* argv[]){ int N = 16;//Teilchenzahl double L = 1.0;//Seitenlänge des Systems double h = 0.01;//Schrittweite double Temp = 1.0;//Anfangstemperatur double rx[N];//x-Koordinate des Ortes double ry[N];//y-Koordinate des Ortes double vx[N];//x-Koordinate der Geschwindigkeit double vy[N];//y-Koordinate der Geschwindigkeit initialize(rx, ry, vx, vy, N, L, Temp); std::cout << "x\ty\tv_x\t\tv_y" << std::endl; for(int i = 0; i < 16; ++i){ std::cout << rx[i] << "\t" << ry[i] << "\t" << vx[i] << "\t" << vy[i] << std::endl; } //Test der Lennard-Jones-Funktion std::cout << "Lennard-Jones-Potential: " << Lennard_Jones(1.0, 3.0, 2.0, 4.0) << std::endl; //Test der Schwerpunktsfunktion std::cout << "Schwerpunktsgeschwindigkeit x: " << Schwerpunkt(vx, vy, N)[0] << std::endl; std::cout << "Schwerpunktsgeschwindigkeit y: " << Schwerpunkt(vx, vy, N)[1] << std::endl; //Test der potentiellen Energiefunktion std::cout << "Potentielle Energie: " << Pot(rx, ry, N) << std::endl; //Test der kintetischen Energiefunktion std::cout << "Kinetische Energie: " << Kin(vx, vy, N) << std::endl; //Test der Temperaturfunktion std::cout << "Temperatur: " << Temperatur(vx, vy, N) << std::endl; //Test der Kraftfunktion double Kraftx = 0.0; double Krafty = 0.0; int Teilchen = 13; for(int i = 0; i < N; ++i){ if(i != Teilchen) Kraftx += Kraft(rx[Teilchen], ry[Teilchen], rx[i], ry[i])[0]; if(i != Teilchen) Krafty += Kraft(rx[Teilchen], ry[Teilchen], rx[i], ry[i])[1]; } std::cout << "Kraft x: " << Kraftx << std::endl; std::cout << "Kraft y: " << Krafty << std::endl; //Test der Gesamtkraftfunktion /*double Gesamtkraftx = 0.0; double Gesamtkrafty = 0.0; int Teilchen = 0; for(int i = 0; i < N; ++i){ if(i != Teilchen) Gesamtkraftx += Gesamtkraft(rx[Teilchen], ry[Teilchen], rx[i], ry[i])[0]; if(i != Teilchen) Gesamtkrafty += Kraft(rx[Teilchen], ry[Teilchen], rx[i], ry[i])[1]; }*/ std::cout << "Gesamtkraft x: " << Gesamtkraft(rx[Teilchen], ry[Teilchen], rx, ry, L, N)[0] << std::endl; std::cout << "Gesamtkraft y: " << Gesamtkraft(rx[Teilchen], ry[Teilchen], rx, ry, L, N)[1] << std::endl; //Test des Verlet-Algorithmus //std::cout << "Verlet x: " << Verlet(rx, ry, vx, vy, h, L, N)[6] << std::endl; std::cout << "Verlet x" << std::endl; for(int i = 0; i < 16; ++i){ std::cout << Verlet(rx, ry, vx, vy, h, L, N)[i] << std::endl; } return 0; }
void ParticleSystem::TimeStep() { AccumulateForces(); Verlet(); SatisfyConstraints(); }