From 981b574faf74b96c7566921bc3abf6db08f05b74 Mon Sep 17 00:00:00 2001 From: Thibault Barnouin Date: Sun, 14 Nov 2021 00:28:45 +0100 Subject: [PATCH] tidy front-end up --- lib/objects.py | 14 ++++++++------ main.py | 28 ++++++++++++++++++++-------- 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/lib/objects.py b/lib/objects.py index 8e0af05..d981950 100755 --- a/lib/objects.py +++ b/lib/objects.py @@ -115,7 +115,7 @@ class System: for body in self.bodylist: body.p = body.v*body.m - def leapfrog(self, duration, dt, recover_param=False, display=False): + def leapfrog(self, duration, dt, recover_param=False, display=False, savename=None): if display: try: system("mkdir tmp") @@ -141,8 +141,9 @@ class System: d.on_running(self, step=j, label="step {0:d}/{1:d}".format(j,N)) if display: d.close() - system("convert -delay 5 -loop 0 tmp/??????.png tmp/temp.gif && rm tmp/??????.png") - system("convert tmp/temp.gif -fuzz 10% -layers Optimize plots/dynsyst.gif")# && rm tmp/temp.gif") + if not savename is None: + system("convert -delay 5 -loop 0 tmp/??????.png tmp/temp.gif && rm tmp/??????.png") + system("convert tmp/temp.gif -fuzz 10% -layers Optimize plots/{0:s}_dynsyst.gif".format(savename)) if recover_param: return E, L @@ -211,7 +212,7 @@ class System: for body in self.bodylist: body.p = body.v*body.m - def hermite(self, duration, dt, recover_param=False, display=False): + def hermite(self, duration, dt, recover_param=False, display=False, savename=None): if display: try: system("mkdir tmp") @@ -237,8 +238,9 @@ class System: d.on_running(self, step=j, label="step {0:d}/{1:d}".format(j,N)) if display: d.close() - system("convert -delay 5 -loop 0 tmp/??????.png tmp/temp.gif && rm tmp/??????.png") - system("convert tmp/temp.gif -fuzz 10% -layers Optimize plots/dynsyst.gif")# && rm tmp/temp.gif") + if not savename is None: + system("convert -delay 5 -loop 0 tmp/??????.png tmp/temp.gif && rm tmp/??????.png") + system("convert tmp/temp.gif -fuzz 10% -layers Optimize plots/{0:s}_dynsyst.gif".format(savename)) if recover_param: return E, L diff --git a/main.py b/main.py index 5858c22..3c145f8 100755 --- a/main.py +++ b/main.py @@ -24,19 +24,31 @@ def main(): v3 = np.array([0., np.sqrt(G*(m[0]+m[1])*(2./np.sqrt(np.sum(q[2]**2))-1./a[2])), 0.]) v = np.array([v1, v2, v3]) + #integration parameters + duration, step = 100*yr, [1e4, 1e5] + integrator = "leapfrog" + n_bodies = 2 + display = False + savename = "{0:d}bodies_{1:s}".format(n_bodies, integrator) + + #simulation start bodylist = [] - for i in range(3): + for i in range(n_bodies): bodylist.append(Body(m[i], q[i], v[i])) dyn_syst = System(bodylist) dyn_syst.COMShift() - duration, step1, step2 = 100*yr, 1e4, 1e5 - E1, L1 = dyn_syst.leapfrog(duration, step1, recover_param=True, display=True) - E2, L2 = dyn_syst.leapfrog(duration, step2, recover_param=True)#, display=True) - #E1, L1 = dyn_syst.hermite(duration, step1, recover_param=True)#, display=True) - #E2, L2 = dyn_syst.hermite(duration, step2, recover_param=True)#, display=True) - parameters = [duration, [step1, step2], dyn_syst, "leapfrog"] - display_parameters([E1, E2], [L1, L2], parameters=parameters, savename="3bodies_mass_leapfrog") + E, L = [], [] + for step0 in step: + if integrator.lower() in ['leapfrog', 'frogleap', 'frog']: + E0, L0 = dyn_syst.leapfrog(duration, step0, recover_param=True, display=display, savename=savename) + elif integrator.lower() in ['hermite','herm']: + E0, L0 = dyn_syst.hermite(duration, step0, recover_param=True, display=display, savename=savename) + E.append(E0) + L.append(L0) + + parameters = [duration, step, dyn_syst, integrator] + display_parameters(E, L, parameters=parameters, savename=savename) return 0