Skip to content

Commit 634a554

Browse files
committed
Fix crashes related to vessel impacts
1 parent 0db0e84 commit 634a554

File tree

2 files changed

+34
-22
lines changed

2 files changed

+34
-22
lines changed

main.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -816,7 +816,7 @@ def vessel_body_crash(v, b):
816816
for p in plots:
817817
if p.obj1 == v or p.obj2 == v:
818818
p.display()
819-
delete_plot(p.name)
819+
delete_plot(p.title)
820820

821821
# orbit projections can stay since their calculation time is known
822822

solver.py

Lines changed: 33 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
from vector3 import *
22

33
def SymplecticEuler(bodies, vessels, surface_points, maneuvers, atmospheric_drags, radiation_pressures, sim_time, delta_t, maneuver_auto_dt):
4-
vessel_accels = []
5-
body_accels = []
6-
74
# update physics
85
for rp in radiation_pressures:
96
rp.update_occultation(bodies)
@@ -54,6 +51,15 @@ def SymplecticEuler(bodies, vessels, surface_points, maneuvers, atmospheric_drag
5451
sp.update_state_vectors(delta_t)
5552

5653
def VelocityVerlet(bodies, vessels, surface_points, maneuvers, atmospheric_drags, radiation_pressures, sim_time, delta_t, maneuver_auto_dt):
54+
55+
# update masses and occultation calculations
56+
for ad in atmospheric_drags:
57+
ad.update_mass(maneuvers, sim_time, delta_t)
58+
59+
for rp in radiation_pressures:
60+
rp.update_occultation(bodies)
61+
rp.update_mass(maneuvers, sim_time, delta_t)
62+
5763
# - - - FIRST ACCELERATIONS - - -
5864
vessel_accels_1 = [vec3(0, 0, 0)] * len(vessels)
5965
body_accels_1 = [vec3(0, 0, 0)] * len(bodies)
@@ -73,21 +79,24 @@ def VelocityVerlet(bodies, vessels, surface_points, maneuvers, atmospheric_drags
7379

7480
# calculate vessel accelerations due to maneuvers
7581
for m in maneuvers:
76-
v_idx = vessels.index(m.vessel)
77-
accel_vec = m.get_accel(sim_time, delta_t)
78-
vessel_accels_1[v_idx] = vessel_accels_1[v_idx] + accel_vec
82+
if m.vessel in vessels:
83+
v_idx = vessels.index(m.vessel)
84+
accel_vec = m.get_accel(sim_time, delta_t)
85+
vessel_accels_1[v_idx] = vessel_accels_1[v_idx] + accel_vec
7986

8087
# calculate vessel accelerations due to atmospheric drag
8188
for ad in atmospheric_drags:
82-
v_idx = vessels.index(ad.vessel)
83-
accel_vec = ad.calc_accel()
84-
vessel_accels_1[v_idx] = vessel_accels_1[v_idx] + accel_vec
89+
if ad.vessel in vessels:
90+
v_idx = vessels.index(ad.vessel)
91+
accel_vec = ad.calc_accel()
92+
vessel_accels_1[v_idx] = vessel_accels_1[v_idx] + accel_vec
8593

8694
# calculate vessel accelerations due to radiation pressure
8795
for rp in radiation_pressures:
88-
v_idx = vessels.index(rp.vessel)
89-
accel_vec = rp.calc_accel()
90-
vessel_accels_1[v_idx] = vessel_accels_1[v_idx] + accel_vec
96+
if rp.vessel in vessels:
97+
v_idx = vessels.index(rp.vessel)
98+
accel_vec = rp.calc_accel()
99+
vessel_accels_1[v_idx] = vessel_accels_1[v_idx] + accel_vec
91100

92101
# - - - POSITION UPDATE - - -
93102
for b in bodies:
@@ -117,21 +126,24 @@ def VelocityVerlet(bodies, vessels, surface_points, maneuvers, atmospheric_drags
117126

118127
# calculate vessel accelerations due to maneuvers
119128
for m in maneuvers:
120-
v_idx = vessels.index(m.vessel)
121-
accel_vec = m.get_accel((sim_time + delta_t), delta_t)
122-
vessel_accels_2[v_idx] = vessel_accels_2[v_idx] + accel_vec
129+
if m.vessel in vessels:
130+
v_idx = vessels.index(m.vessel)
131+
accel_vec = m.get_accel((sim_time + delta_t), delta_t)
132+
vessel_accels_2[v_idx] = vessel_accels_2[v_idx] + accel_vec
123133

124134
# calculate vessel accelerations due to atmospheric drag
125135
for ad in atmospheric_drags:
126-
v_idx = vessels.index(ad.vessel)
127-
accel_vec = ad.calc_accel()
128-
vessel_accels_2[v_idx] = vessel_accels_2[v_idx] + accel_vec
136+
if ad.vessels in vessels:
137+
v_idx = vessels.index(ad.vessel)
138+
accel_vec = ad.calc_accel()
139+
vessel_accels_2[v_idx] = vessel_accels_2[v_idx] + accel_vec
129140

130141
# calculate vessel accelerations due to radiation pressure
131142
for rp in radiation_pressures:
132-
v_idx = vessels.index(rp.vessel)
133-
accel_vec = rp.calc_accel()
134-
vessel_accels_2[v_idx] = vessel_accels_2[v_idx] + accel_vec
143+
if rp.vessel in vessels:
144+
v_idx = vessels.index(rp.vessel)
145+
accel_vec = rp.calc_accel()
146+
vessel_accels_2[v_idx] = vessel_accels_2[v_idx] + accel_vec
135147

136148
# - - - VELOCITY UPDATE - - -
137149
for b in bodies:

0 commit comments

Comments
 (0)