DUECA/DUSIME
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | List of all members
PulsedBody Class Reference

This is an example, using the RigidBody class as basis for implementation of equations of motion. More...

#include <PulsedBody.hxx>

Inheritance diagram for PulsedBody:
Inheritance graph
[legend]
Collaboration diagram for PulsedBody:
Collaboration graph
[legend]

Public Member Functions

 PulsedBody (double dt)
 Constructor.
 
 ~PulsedBody ()
 Destructor.
 
void derivative (VectorE &xd, double dt_offset)
 Function needed for integration.
 
void step ()
 Function that does an integration step.
 
- Public Member Functions inherited from RigidBody
 RigidBody (double mass, double Jxx, double Jyy, double Jzz, double Jxy, double Jxz, double Jyz, int extrastates=0)
 Simple constructor for a rigid body dynamics module.
 
 ~RigidBody ()
 Destructor.
 
void initialize (double x, double y, double z, double u, double v, double w, double phi, double theta, double psi, double p, double q, double r)
 Initialize a state vector x.
 
void derivative (VectorE &xd, double unused=0.0)
 Obtain and calculate the derivative, given sum of forces and moments and the gravitational field acting on the body.
 
template<class V >
void derivative (V &xd, double unused=0.0)
 Obtain and calculate the derivative, given sum of forces and moments and the gravitational field acting on the body.
 
void specific (Vector &sp)
 Calculate specific forces and moments, forces stored in elements 0, 1, and 2, moments in elements 3, 4 and 6.
 
void zeroForces ()
 Initialize sum of forces on the body to zero.
 
void applyBodyForce (const Vector3 &Fb, const Vector3 &point)
 Apply a force expressed in body coordinates.
 
void applyInertialForce (const Vector &Fi, const Vector &point)
 Apply a force expressed in inertial coordinates, at a specific body point, give in body coordinates.
 
void applyBodyMoment (const Vector &M)
 Apply a moment expressed in body coordinates.
 
void changeState (const Vector &dx)
 Change the state vector by a quantity dx.
 
void addInertialGravity (const Vector &g)
 Add a gravitational field; 3 element vector, gravitation expressed in the inertial system.
 
void setState (const Vector &newx)
 Put in a new state vector.
 
void changeMass (const double dm)
 Add to the mass of the body.
 
void setMass (const double newm)
 Set a new mass.
 
void output ()
 Calculate auxiliary outputs, V, \(\alpha\), \(\beta\), \(\phi\), \(\theta\) and \(\Psi\).
 
const VectorX () const
 Obtain the state, 13 elements.
 
const double V () const
 Obtain speed.
 
const double alpha () const
 Obtain alpha.
 
const double beta () const
 Obtain beta.
 
const double getMass () const
 Get current mass.
 
const double phi () const
 Get euler angle phi.
 
const double theta () const
 Get euler angle theta.
 
const double psi () const
 Get euler angle psi.
 
const Matrix3A ()
 Get the transformation matrix, for transforming a vector in earth coordinates to one in the body's coordinate system.
 

Public Attributes

double tau_e
 Time constant simulating the "engine" dynamics.
 
double dt
 Size of time steps.
 
Vector force
 For efficiency, auxiliary variable that represents a force vector.
 
Vector fpoint
 Auxiliary variable, vector giving the point where the force is applied.
 
Vector gravity
 Auxiliary variable, vector giving gravity.
 
RungeKuttaWorkspace workspace
 Workspace for the RungeKutta integration.
 

Additional Inherited Members

- Protected Attributes inherited from RigidBody
Vector x
 State vector.
 

Detailed Description

This is an example, using the RigidBody class as basis for implementation of equations of motion.

The PulsedBody class derives from RigidBody, and applies forces on the RigidBody object. Using a Runge Kutta integration, the states of the RigidBody object are integrated numerically.

Examples
PulsedBody.cxx, and PulsedBody.hxx.

Constructor & Destructor Documentation

◆ PulsedBody()

PulsedBody::PulsedBody ( double dt)

Constructor.

Parameters
dtTime step of the update.
Examples
PulsedBody.cxx, and PulsedBody.hxx.

Member Function Documentation

◆ derivative()

void PulsedBody::derivative ( VectorE & xd,
double dt_offset )

Function needed for integration.

This function will be called by the integrate_rungekutta() function. It calculates the derivative of the state vector.

Parameters
xdDerivative of the state vector
dt_offsetTime offset for calculating the derivative. The integration routine might need the derivative of the state for time steps that are a fraction of the integration time step, e.g. for 0dt, 0.5dt and dt after the previous integration step.
Examples
PulsedBody.cxx, and PulsedBody.hxx.

Member Data Documentation

◆ force

Vector PulsedBody::force

For efficiency, auxiliary variable that represents a force vector.

Note that RigidBody uses eigen3 http://eigen.tuxfamily.org/ for matrix and vector operations. Vector is a typedef in the RigidBody header file, and defines a shortcut to the vector class used here.

Examples
PulsedBody.cxx, and PulsedBody.hxx.

The documentation for this class was generated from the following file: