Skip to content

Commit ec2f6f3

Browse files
committed
Implemented dense_output in python engines.
Added quadratic interpolators to `BaseTrajData` and `TrajectoryData`. Moved all `TrajectoryData` instantiators to trajectory_data.py. Rewrote `TrajectoryDataFilter` to interpolate for all requested points, and to generate multiple `TrajectoryData` points in a single call when required.
1 parent db1bd51 commit ec2f6f3

17 files changed

Lines changed: 631 additions & 432 deletions

File tree

examples/Examples.ipynb

Lines changed: 24 additions & 24 deletions
Large diffs are not rendered by default.

examples/ExtremeExamples.ipynb

Lines changed: 204 additions & 139 deletions
Large diffs are not rendered by default.

examples/integrators/euler_inline_op.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ def _integrate(self, shot_info: Shot, maximum_range: float, record_step: float,
115115
if filter_flags: # require check before call to improve performance
116116

117117
# Record TrajectoryData row
118-
if (data := data_filter.should_record(range_vector, velocity_vector, mach, time)) is not None:
118+
if (data := data_filter.record(range_vector, velocity_vector, mach, time)) is not None:
119119
ranges.append(create_trajectory_row(data.time, data.position, data.velocity,
120120
data.velocity.magnitude(), data.mach,
121121
self.spin_drift(data.time), self.look_angle_rad,

examples/integrators/leapfrog.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ def _integrate(self, shot_info: Shot, maximum_range: float, record_step: float,
143143
# region Check whether to record TrajectoryData row at current point
144144
if filter_flags: # require check before call to improve performance
145145
# Record TrajectoryData row
146-
if (data := data_filter.should_record(range_vector, velocity_vector, mach, time)) is not None:
146+
if (data := data_filter.record(range_vector, velocity_vector, mach, time)) is not None:
147147
ranges.append(create_trajectory_row(data.time, data.position, data.velocity,
148148
data.velocity.magnitude(), data.mach,
149149
self.spin_drift(data.time), self.look_angle_rad,

examples/integrators/leapfrog2.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ def _integrate(self, shot_info: Shot, maximum_range: float, record_step: float,
151151
# region Check whether to record TrajectoryData row at current point
152152
if filter_flags: # require check before call to improve performance
153153
# Record TrajectoryData row
154-
if (data := data_filter.should_record(range_vector, velocity_vector, mach, time)) is not None:
154+
if (data := data_filter.record(range_vector, velocity_vector, mach, time)) is not None:
155155
ranges.append(create_trajectory_row(data.time, data.position, data.velocity,
156156
data.velocity.magnitude(), data.mach,
157157
self.spin_drift(data.time), self.look_angle_rad,

examples/integrators/leapfrog3_time_step.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ def _integrate(self, shot_info: Shot, maximum_range: float, record_step: float,
150150
# region Check whether to record TrajectoryData row at current point
151151
if filter_flags: # require check before call to improve performance
152152
# Record TrajectoryData row
153-
if (data := data_filter.should_record(range_vector, velocity_vector, mach, time)) is not None:
153+
if (data := data_filter.record(range_vector, velocity_vector, mach, time)) is not None:
154154
ranges.append(create_trajectory_row(data.time, data.position, data.velocity,
155155
data.velocity.magnitude(), data.mach,
156156
self.spin_drift(data.time), self.look_angle_rad,

examples/integrators/rk4_inline_op.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ def _integrate(self, shot_info: Shot, maximum_range: float, record_step: float,
111111
# region Check whether to record TrajectoryData row at current point
112112
if filter_flags: # require check before call to improve performance
113113
# Record TrajectoryData row
114-
if (data := data_filter.should_record(range_vector, velocity_vector, mach, time)) is not None:
114+
if (data := data_filter.record(range_vector, velocity_vector, mach, time)) is not None:
115115
ranges.append(create_trajectory_row(data.time, data.position, data.velocity,
116116
data.velocity.magnitude(), data.mach,
117117
self.spin_drift(data.time), self.look_angle_rad,

examples/integrators/verlet3.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ def _integrate(self, shot_info: Shot, maximum_range: float, record_step: float,
127127
# region Check whether to record TrajectoryData row at current point
128128
if filter_flags: # require check before call to improve performance
129129
# Record TrajectoryData row
130-
if (data := data_filter.should_record(range_vector, velocity_vector, mach, time)) is not None:
130+
if (data := data_filter.record(range_vector, velocity_vector, mach, time)) is not None:
131131
ranges.append(create_trajectory_row(data.time, data.position, data.velocity,
132132
data.velocity.magnitude(), data.mach,
133133
self.spin_drift(data.time), self.look_angle_rad,

py_ballisticcalc.exts/py_ballisticcalc_exts/base_engine.pyx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ cdef class CythonizedBaseIntegrationEngine:
267267
self._free_trajectory()
268268
props = ShotProps.from_shot(shot_info)
269269
props.filter_flags = filter_flags
270-
return HitResult(props, object[0], filter_flags > 0, object[1])
270+
return HitResult(props, object[0], None, filter_flags > 0, object[1])
271271

272272
cdef void _free_trajectory(CythonizedBaseIntegrationEngine self):
273273
if self._wind_sock is not NULL:

py_ballisticcalc/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,6 @@ def _load_mixed_units():
178178
'calculate_ogw',
179179
'get_correction',
180180
'create_trajectory_row',
181-
'make_trajectory_row',
182181
'calculate_curve',
183182
'CurvePoint',
184183
'exceptions',

0 commit comments

Comments
 (0)