frispy.equations_of_motion

Module Contents

Classes

EOM

EOM is short for "equations of motion" is used to run the ODE solver

class frispy.equations_of_motion.EOM(area: numbers.Number, I_xx: numbers.Number, I_zz: numbers.Number, mass: numbers.Number, environment: frispy.environment.Environment = Environment(), model: frispy.model.Model = Model())[source]

EOM is short for “equations of motion” is used to run the ODE solver from scipy. It takes in a model for the disc, the trajectory object, the environment, and implements the functions for calculating forces and torques.

classmethod rotation_matrix_from_phi_theta(cls, phi: float, theta: float) numpy.ndarray[source]
static rotation_matrix(sp: float, cp: float, st: float, ct) numpy.ndarray[source]

Compute the (partial) rotation matrix that transforms from the lab frame to the disc frame. Note that because of azimuthal symmetry, the azimuthal angle (gamma) is not used.

This matrix (R) can be used to transform a vector from the lab frame (L) into the disk frame (D), i.e.: r_D = R dot r_L.

The z_hat unit vector in the disk frame (D) will always be pointing perpendicular up from the top face of the disk.

classmethod compute_angle_of_attack(cls, phi: float, theta: float, velocity: numpy.ndarray, return_all_variables: bool = False)[source]
geometric_quantities(self, phi: float, theta: float, velocity: numpy.ndarray, angular_velocity: numpy.ndarray) Dict[str, Union[float, numpy.ndarray, Dict[str, numpy.ndarray]]][source]

Compute intermediate quantities on the way to computing the time derivatives of the kinematic variables.

compute_forces(self, phi: float, theta: float, velocity: numpy.ndarray, ang_velocity: numpy.ndarray) Dict[str, Union[float, numpy.ndarray, Dict[str, numpy.ndarray]]][source]

Compute the lift, drag, and gravitational forces on the disc.

compute_torques(self, velocity: numpy.ndarray, res: Dict[str, Union[float, numpy.ndarray, Dict[str, numpy.ndarray]]]) Dict[str, Union[float, numpy.ndarray, Dict[str, numpy.ndarray]]][source]

Compute the torque around each principle axis.

compute_derivatives(self, time: float, coordinates: numpy.ndarray) numpy.ndarray[source]

Right hand side of the ordinary differential equations. This is supplied to scipy.integrate.solve_ivp(). See this page for more information about its fun argument.

Parameters
  • time (float) – instantanious time of the system

  • coordinates (np.ndarray) – kinematic variables of the disc

Returns

derivatives of all coordinates