1
0

tidy front-end up

This commit is contained in:
Thibault Barnouin
2021-11-14 00:28:45 +01:00
parent 51ca5d0c0c
commit 981b574faf
2 changed files with 28 additions and 14 deletions

View File

@@ -115,7 +115,7 @@ class System:
for body in self.bodylist: for body in self.bodylist:
body.p = body.v*body.m 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: if display:
try: try:
system("mkdir tmp") system("mkdir tmp")
@@ -141,8 +141,9 @@ class System:
d.on_running(self, step=j, label="step {0:d}/{1:d}".format(j,N)) d.on_running(self, step=j, label="step {0:d}/{1:d}".format(j,N))
if display: if display:
d.close() d.close()
if not savename is None:
system("convert -delay 5 -loop 0 tmp/??????.png tmp/temp.gif && rm tmp/??????.png") 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") system("convert tmp/temp.gif -fuzz 10% -layers Optimize plots/{0:s}_dynsyst.gif".format(savename))
if recover_param: if recover_param:
return E, L return E, L
@@ -211,7 +212,7 @@ class System:
for body in self.bodylist: for body in self.bodylist:
body.p = body.v*body.m 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: if display:
try: try:
system("mkdir tmp") system("mkdir tmp")
@@ -237,8 +238,9 @@ class System:
d.on_running(self, step=j, label="step {0:d}/{1:d}".format(j,N)) d.on_running(self, step=j, label="step {0:d}/{1:d}".format(j,N))
if display: if display:
d.close() d.close()
if not savename is None:
system("convert -delay 5 -loop 0 tmp/??????.png tmp/temp.gif && rm tmp/??????.png") 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") system("convert tmp/temp.gif -fuzz 10% -layers Optimize plots/{0:s}_dynsyst.gif".format(savename))
if recover_param: if recover_param:
return E, L return E, L

28
main.py
View File

@@ -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.]) 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]) 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 = [] bodylist = []
for i in range(3): for i in range(n_bodies):
bodylist.append(Body(m[i], q[i], v[i])) bodylist.append(Body(m[i], q[i], v[i]))
dyn_syst = System(bodylist) dyn_syst = System(bodylist)
dyn_syst.COMShift() dyn_syst.COMShift()
duration, step1, step2 = 100*yr, 1e4, 1e5 E, L = [], []
E1, L1 = dyn_syst.leapfrog(duration, step1, recover_param=True, display=True) for step0 in step:
E2, L2 = dyn_syst.leapfrog(duration, step2, recover_param=True)#, display=True) if integrator.lower() in ['leapfrog', 'frogleap', 'frog']:
#E1, L1 = dyn_syst.hermite(duration, step1, recover_param=True)#, display=True) E0, L0 = dyn_syst.leapfrog(duration, step0, recover_param=True, display=display, savename=savename)
#E2, L2 = dyn_syst.hermite(duration, step2, recover_param=True)#, display=True) elif integrator.lower() in ['hermite','herm']:
parameters = [duration, [step1, step2], dyn_syst, "leapfrog"] E0, L0 = dyn_syst.hermite(duration, step0, recover_param=True, display=display, savename=savename)
display_parameters([E1, E2], [L1, L2], parameters=parameters, savename="3bodies_mass_leapfrog") E.append(E0)
L.append(L0)
parameters = [duration, step, dyn_syst, integrator]
display_parameters(E, L, parameters=parameters, savename=savename)
return 0 return 0