1
0

modify frogleap output

This commit is contained in:
Thibault Barnouin
2021-10-22 16:52:33 +02:00
parent 340088ee2b
commit ec0cf2fd19
2 changed files with 8 additions and 5 deletions

View File

@@ -24,7 +24,7 @@ def dp_dt(m_array, q_array):
dp_array[np.isnan(dp_array)] = 0.
return dp_array
def frogleap(duration, step, dyn_syst, display=False):
def frogleap(duration, step, dyn_syst, recover_param=False, display=False):
"""
Leapfrog integrator for first order partial differential equations.
iteration : half-step drift -> full-step kick -> half-step drift
@@ -34,6 +34,7 @@ def frogleap(duration, step, dyn_syst, display=False):
q_array = dyn_syst.get_positions()
p_array = dyn_syst.get_momenta()
if display:
d = DynamicUpdate()
d.min_x, d.max_x = -1.5*np.abs(q_array).max(), +1.5*np.abs(q_array).max()
@@ -57,6 +58,7 @@ def frogleap(duration, step, dyn_syst, display=False):
for i, body in enumerate(dyn_syst.bodylist):
body.q = q_array[i]
body.p = p_array[i]
if body.m != 0.:
body.v = body.p/body.m
if recover_param:
return dyn_syst

View File

@@ -24,7 +24,8 @@ def main():
bodylist.append(Body(m[i], q[i], v[i]))
dyn_syst = System(bodylist)
new_dyn_syst = frogleap(10, 0.01, dyn_syst, display=True)
new_dyn_syst = frogleap(10, 0.1, dyn_syst, display=False)
print(np.all(new_dyn_syst.get_positions() == dyn_syst.get_positions()))
return 0
if __name__ == '__main__':