diff --git a/lib/integrator.py b/lib/integrator.py index cc3a70b..060d07e 100755 --- a/lib/integrator.py +++ b/lib/integrator.py @@ -6,7 +6,6 @@ Implementation of the various integrators for numerical integration. Comes from the assumption that the problem is analytically defined in position-momentum (q-p) space for a given hamiltonian H. """ from os import system -import time import numpy as np from lib.plots import DynamicUpdate @@ -74,7 +73,7 @@ def frogleap(duration, step, dyn_syst, recover_param=False, display=False): d.on_running(q_array[0], q_array[1], q_array[2], step=j, label="step {0:d}/{1:d}".format(j,N)) else: d.on_running(q_array[:,0], q_array[:,1], q_array[:,2], step=j, label="step {0:d}/{1:d}".format(j,N)) - time.sleep(1e-5) + if display: system("convert -delay 5 -loop 0 tmp/?????.png tmp/temp.gif && rm tmp/?????.png") system("convert tmp/temp.gif -fuzz 30% -layers Optimize plots/dynsyst.gif && rm tmp/temp.gif") diff --git a/lib/objects.py b/lib/objects.py index 73fca7d..50df1f2 100755 --- a/lib/objects.py +++ b/lib/objects.py @@ -163,7 +163,7 @@ class System: for body in self.bodylist: body.p = body.v*body.m - def hermite(self, duration, dt, display=False): + def hermite(self, duration, dt, recover_param=False, display=False): if display: try: system("mkdir tmp") @@ -173,9 +173,14 @@ class System: d.on_launch() N = np.ceil(duration/dt).astype(int) + E = np.zeros(N) + L = np.zeros((N,3)) for j in range(N): self.HPC(dt) + E[j] = self.Eval() + L[j] = self.Lval() + if display: # display progression q_array = self.get_positions() @@ -183,7 +188,7 @@ class System: d.on_running(q_array[0], q_array[1], q_array[2], step=j, label="step {0:d}/{1:d}".format(j,N)) else: d.on_running(q_array[:,0], q_array[:,1], q_array[:,2], step=j, label="step {0:d}/{1:d}".format(j,N)) - #time.sleep(1e-5) - - return 1 + + if recover_param: + return E, L diff --git a/main.py b/main.py index ccbec49..2ea9c9e 100755 --- a/main.py +++ b/main.py @@ -35,7 +35,7 @@ def main(): duration, step = 100*3e7, 1e4 E, L = frogleap(duration, step, dyn_syst, recover_param=True)#, display=True) - #dyn_syst.hermite(duration,step, display=True) + E, L = dyn_syst.hermite(duration,step, recover_param=True, display=True) fig1 = plt.figure(figsize=(30,15)) ax1 = fig1.add_subplot(111)