Pendulum.c Thomas Baumgartner, Mat.nr. 0425162 Alexander Gross, Mat.nr. 0425230.

Slides:



Advertisements
Ähnliche Präsentationen
Dauermagnete Bei magnetischen Materialien unterscheidet man Eisenkerne bzw. Weicheisenstücke und Dauermagnete bzw. Hart-magnetische Materialien. Dauermagnete.
Advertisements

TAGUNG DER DEUTSCH-LUSITANISCHEN JURISTENVEREINIGUNG O processo penal português Panorâmica introdutória Der portugiesische Strafprozess ein einführender.
Ach wie gut, daß niemand weiß Der Schutz von Wissen
Herzlich Willkommen bei SIMPLE STABLE BULDING
Adjektivendungen Tabellen und Übungen.
ZWILLING Neuheiten 2008.
Das Hexenkochbuch Nicht Rattenschwänze, Spinnenbein
 Präsentation transkript:

pendulum.c Thomas Baumgartner, Mat.nr Alexander Gross, Mat.nr

Aufgabenstellung (t) durch Integration mit CVODE berechnen Phasenraumpunkte (A, ) bestimmen, für die das Pendel stehen bleibt m L

Reduktion auf 1. Ordnung N_Vector y N_Vector ydot

Rechte Seite der Gleichung static void f(integer N, real t, N_Vector y, N_Vector ydot, void *f_data) { double* v_y; double* v_ydot; v_y = N_VDATA(y); v_ydot = N_VDATA(ydot); v_ydot[0] = v_y[1]; v_ydot[1] = (1/L)*(g-A*pow(w,2)*sin(w*t))*sin(v_y[0]); }

Betriebsarten (A, ) bestimmen Parameter: A 1, A 2, 1, 2, A res, res, 0 Ausgabedatei: phasespace.dat (t) berechnen Parameter: A,, 0 Ausgabedatei: theta.dat

Ablauf: (t) berechnen Programm mit gewünschten Parametern aufrufen Integration von t = 0 bis t = 10 s mittels linearem Solver CVSPGMR und Adams- Methode Ausgabe in Datei theta.dat für jeden berechneten Zeitpunkt

Code: (t) berechnen cvode_mem = CVodeMalloc(NEQ, f, T0, y, ADAMS, FUNCTIONAL, SS, &reltol, &abstol, fdata, NULL, FALSE, NULL, NULL, NULL); if(cvode_mem == NULL) { printf("CVodeMalloc failed.\n"); return(1); } while(t <= Tend){ flag = CVode(cvode_mem, TSTEP, y, &t, ONE_STEP); if (flag != SUCCESS) { printf("CVode failed, flag = %d.\n", flag); return(1); } fprintf(fout, "%e %e %e\n", t, v_y[0], v_y[1]); ++timeSteps; }

Beispiel: (t) berechnen./pendulum Calculating Theta(t) with the following parameters: A = w = Th0 = Integration finished time steps calculated.

Beispiel: (t) berechnen

Ablauf: (A, ) bestimmen Programm mit gewünschten Parametern aufrufen Schleifen für die Wertebereiche von A und werden durchlaufen Integration von t = 0 bis t = 10 s für jedes (A, )-Wertepaar (CVSPGMR mit Adams- Methode)

Ablauf: (A, ) bestimmen Stabilitätskriterium 1: Stabilitätskriterium 2: Ausgabe in Datei phasespace.dat für jedes Wertepaar (A, ) mit stabiler Lösung

Code: (A, ) bestimmen while((t <= Tend)&&(flagStable == 1)){. if (fabs(v_y[0] - Th0) > ThTOL){ flagStable = 0; } if (flagStable == 1){. if (fabs(ThAvg - Th0) <= ThAvgTol){ printf("Stable solution found: A = %f, w = %f\n", A, w); fprintf(fout, "%e %e\n", A, w); ++stablePoints; }

Beispiel: (A, ) bestimmen./pendulum Searching phase space for stable solutions with the following parameters: A = w = Ares = wres = Th0 = Stable solution found: A = , w = Stable solution found: A = , w = Phase space analysis finished stable solutions found.

Beispiel: (A, ) bestimmen