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;
}
Example #2
0
void ParticleSystem::TimeStep() {
    AccumulateForces();
    Verlet();
    SatisfyConstraints();
}