SolRadAndGravityDynamics

giant.ufo.dynamics:

class giant.ufo.dynamics.SolRadAndGravityDynamics(center_body, process_noise, other_bodies=None, gravity_parameters=None, load_data=False, minimum_time_step=0.001)[source]

This class adds spherical solar radiation pressure dynamics to the SpiceGravityDynamics class.

Everything is the same except the solar radiation pressure is added to the State vector and the dynamics for the solar radiation pressure are added to the appropriate methods.

The solar radiation pressure is modelled as a cannonball model

\[\mathbf{a}_{sr}=\frac{C_rA\Phi}{cmd_{sun}**2}\hat{\mathbf{s}}\]

where \(C_r\) is the radiation pressure coefficient, \(A\) is the cross sectional area in meters squared, \(\Phi\) the the solar constant at 1 AU in kW/m**2, \(c\) is the speed of light in m/s**2, \(m\) is the mass of the spacecraft in kg, \(d_{sun}\) is the distance from the sun in AU, and \(\hat{\mathbf{s}}\) is the unit vector from the sun to the spacecraft.

Because this is not intended to be a high fidelity model we combine \(\frac{C_rA}{m} into a single parameter ``cram`\) that is estimated in the filter. If you want to back out one of the parameters from this estimated value, you must hold 2 of them fixed and then perform the arithmetic to get your answer.

For more details on using this class, see the SpiceGravityDynamics documentation

Parameters:
  • center_body (str) – The center of integration (and the center of the integration frame)

  • process_noise (ndarray | Callable[[ndarray, float], ndarray]) – The process noise either as a numpy array of shape 6x6 (constant process noise) or as a callable object which takes in the current state and time (np.ndarray, float) and outputs a 6x6 numpy array containing the process noise matrix

  • other_bodies (List[str] | None) – Other bodies whose gravity should be included as a list of body/barycenter names. If None no other bodies will be considered.

  • gravity_parameters (Dict[str, float] | None) – A dictionary mapping names to GM values. If this is None or it does not provide the data for one of the bodies being considered we will try to query this from spice. The values should be in km**3/sec**2

  • load_data (bool) – A boolean flag specifying whether this class should furnsh the required datafiles. If you have already loaded files then you should leave this as False.

  • minimum_time_step (float | None) – The minimum time step to allow the integrator to take in seconds. If None (or 0) then no minimum time step is enforced.

Summary of Methods

compute_covariance_dynamics

This method computes the dynamics for the covariance matrix.

compute_dynamics

This method computes the dynamics for the state vector

compute_solar_radiation_acceleration

This computes the acceleration due to the solar radiation pressure on the spacecraft assuming a cannonball model in km/s**2.

compute_state_dynamics

This computes the dynamics for just the "state" part of the state vector (not the covariance)

get_gm

propagate

This method propagates the input state the the requested time.