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 to None.

  • dv_magnitude (ArrayWUnits, optional) – The magnitude of the delta-v (units: km/s). Required if dv_unit_vector is used. Defaults to None.

  • dv_unit_vector (ArrayWUnits, optional) – The unit vector of the delta-v direction (unitless). Required if dv_magnitude is used. Defaults to None.

  • approx_int_flag (bool, optional) – Flag indicating whether the impulsive burn should be approximated using a Dirac delta function for integration purposes. Defaults to False.

  • N_dirac (int, optional) – Number of discretization steps in the Dirac delta approximation. Defaults to 30.

  • t_burn (float, optional) – The epoch at which the impulsive burn is applied. Defaults to 0.

  • base_frame (Frame) – The frame of the propagator. If base_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.

dirac_delta_approx(t)

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:

ArrayWUnits

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:

ArrayWUnits

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:
  • position (scb.ArrayWUnits) – Spacecraft position vector in the reference frame (size: 3x1, units: km).

  • current_state (dict) – Dictionary containing the current state parameters.

  • epoch (float) – Current simulation epoch (units: sec).

  • body – The celestial body associated with the simulation.

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:

ArrayWUnits

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:

ArrayWUnits

dirac_delta_approx(t: float) float#

Computes the Dirac delta function approximation using a Gaussian function.

Parameters:

t (float) – The time at which to evaluate the approximation.

Returns:

The approximated Dirac delta function value at time t.

Return type:

float