5. ImpulsiveBurn#
- class ImpulsiveBurn(delta_v=None, dv_magnitude=None, dv_unit_vector=None, approx_dv_flag=False, N_dirac: int = 30, t_burn: float = 0, base_frame: Frame = None)#
Bases:
DynamicModel
Models an impulsive maneuver for spacecraft dynamics.
Represents an impulsive burn applied to a spacecraft as an instantaneous velocity change (DV). The burn can be defined either directly through a delta-v vector or indirectly via magnitude and direction. The model allows for an approximation using a Dirac delta function for numerical integration.
- Parameters:
delta_v (
ArrayWUnits
, optional) – The delta-v vector applied during the burn (units: km/s). Defaults toNone
.dv_magnitude (
ArrayWUnits
, optional) – The magnitude of the delta-v (units: km/s). Required if dv_unit_vector is used. Defaults toNone
.dv_unit_vector (
ArrayWUnits
, optional) – The unit vector of the delta-v direction (unitless). Required if dv_magnitude is used. Defaults toNone
.approx_int_flag (
bool
, optional) – Flag indicating whether the impulsive burn should be approximated using a Dirac delta function for integration purposes. Defaults toFalse
.N_dirac (
int
, optional) – Number of discretization steps in the Dirac delta approximation. Defaults to30
.t_burn (
float
, optional) – The epoch at which the impulsive burn is applied. Defaults to0
.base_frame (
Frame
) – The frame of the propagator. Ifbase_frame = None
, defaults to the J2000 frame.
- Raises:
ValueError – If neither delta_v nor both dv_magnitude and dv_unit_vector are provided.
See also
scarabaeus.FiniteBurn
A model for finite-duration burns.
Notes
The impulsive burn is always applied at
t_burn
.If
approx_int_flag = True
, the burn is spread over multiple integration steps using a Dirac delta function.Methods
compute_TCM_covariance_gates
([sig1, sig2, ...])Computes the covariance matrix for a Trajectory Correction Maneuver (TCM).
compute_TCM_simplified_covariance
([sig1, ...])Computes a simplified 3x3 covariance matrix for Trajectory Correction Maneuver (TCM) errors.
compute_acceleration
(position, ...)Computes the acceleration due to the impulsive burn.
compute_partial_by_dv
(position, ...)Computes the partial derivative of the acceleration with respect to the delta-v.
compute_partial_by_position
(position, ...)Computes the partial derivative of the impulsive burn acceleration with respect to position.
Computes the Dirac delta function approximation using a Gaussian function.
- compute_TCM_covariance_gates(sig1=3.3333333333333337e-06 km/sec, sig2=0.0033333333333333335 unitless, sig3=1.1666666666666666e-05 km/sec, sig4=0.0033333333333333335 unitless) ArrayWUnits #
Computes the covariance matrix for a Trajectory Correction Maneuver (TCM).
Computes the rotated covariance matrix P based on the input sigma values and the direction of the delta-v.
- Parameters:
sig1 (
ArrayWUnits
, optional) – Sigma value for velocity uncertainty. Defaults to 0.00001 km/s.sig2 (
ArrayWUnits
, optional) – Sigma value for direction uncertainty Defaults to 0.01 unitless.sig3 (
ArrayWUnits
, optional) – Additional sigma for velocity. Defaults to 0.000035 km/s.sig4 (
ArrayWUnits
, optional) – Additional sigma for direction uncertainty. Defaults to 0.01 unitless.
- Returns:
covar_rotated – The rotated 3x3 covariance matrix. Expressed in units of \(\frac{km^2}{s^2}\).
- Return type:
- compute_TCM_simplified_covariance(sig1=0.0033333333333333335 unitless, sig2=3.3333333333333335e-05 km/sec, sig34=0.011635528346628864 rad) ArrayWUnits #
Computes a simplified 3x3 covariance matrix for Trajectory Correction Maneuver (TCM) errors.
- Parameters:
sig1 (
ArrayWUnits
, optional) – Proportional error component. Defaults to (0.01 / 3) unitless.sig2 (
ArrayWUnits
, optional) – Fixed velocity error. Defaults to (10e-5 / 3) km/s.sig34 (
ArrayWUnits
, optional) – Pointing error. Defaults to 2/3 degrees in radians.
- Returns:
iso_covar – The 3x3 isotropic covariance matrix. Expressed in units of \(\frac{km^2}{s^2}\).
- Return type:
- compute_acceleration(position: ArrayWUnits, current_state: dict, epoch: float, body: CelestialBody) ArrayWUnits #
Computes the acceleration due to the impulsive burn.
This method applies an instantaneous velocity change at the specified burn time. If Dirac delta approximation is enabled, it applies a numerically approximated force.
- Parameters:
- Returns:
The acceleration due to the impulsive burn (size: 3x1, units: km/s^2).
- Return type:
scb.ArrayWUnits
- compute_partial_by_dv(position: ArrayWUnits, current_state: dict, epoch: float, body: CelestialBody) ArrayWUnits #
Computes the partial derivative of the acceleration with respect to the delta-v.
- Parameters:
position (
ArrayWUnits
) – 3x1 vector describing the spacecraft’s position. Expressed in units of kilometers.current_state (
dict
) – Dictionary containing the current state parameters.epoch (
float
) – Current simulation epoch in seconds.body (
CelestialBody
) – The celestial body associated with the simulation.
- Returns:
jacobian – The 3x3 Jacobian matrix of acceleration with respect to delta-v. Unitless.
- Return type:
- compute_partial_by_position(position: ArrayWUnits, current_state: dict, epoch: float, body) array #
Computes the partial derivative of the impulsive burn acceleration with respect to position.
Since an impulsive burn directly modifies velocity rather than position, this derivative is always zero.
- Parameters:
position (
ArrayWUnits
) – 3x1 vector describing the spacecraft’s position. Expressed in units of kilometers.current_state (
dict
) – Dictionary containing the current state parameters.epoch (
float
) – Current simulation epoch in seconds.body (
CelestialBody
) – The celestial body associated with the simulation.
- Returns:
zeros – A 3x3 matrix of zeros. Unitless.
- Return type: