MBSVT 1.0
Functions/Subroutines | Variables
generalized_forces Module Reference

Generalized forces module. More...

Functions/Subroutines

subroutine, public ADDforce_TSD (body1, body2, pt1, pt2, k, c, s0, handle)
 Adds a linear TSD force to the model /param body1,body2 bodies between which the force acts. /param pt1,pt2 end points in the bodies for the TSD, expresed in the local reference frames of the bodies. /param k,c stiffness and damping coefficients of the TSD. /param s0 natural lenght of the TSD.
subroutine, public ADDforce_Bump (body1, body2, pt1, pt2, k, c, s0, handle)
 Adds a linear Bump Stop force to the model. It is equivalent to a TSD force with only compression. /param body1,body2 bodies between which the force acts. /param pt1,pt2 end points in the bodies for the Bump, expresed in the local reference frames of the bodies. /param k,c stiffness and damping coefficients of the Bump. /param s0 natural lenght of the Bump.
subroutine, public ADDforce_TSDA (body1, body2, pt1, pt2, TSDA, TSDAs, TSDAsp, handle)
 Adds a user provided TSDA force to the model /param body1,body2 bodies between which the force acts. /param pt1,pt2 end points in the bodies for the TSD, expresed in the local reference frames of the bodies. /param k,c stiffness and damping coefficients of the TSD. /param s0 natural lenght of the TSD.
subroutine ADDforce_genericTSDA (body1, body2, pt1, pt2, k, c, s0, kind, TSDA, TSDAs, TSDAsp, handle)
 Adds a linear generic TSD/bump/TSDA force to the model. It's not a user subroutine, it is intended for the solver /param body1,body2 bodies between which the force acts. /param pt1,pt2 end points in the bodies for the TSD, expresed in the local reference frames of the bodies. /param k,c stiffness and damping coefficients of the TSD. /param s0 natural lenght of the TSD. /param kind kind of TSD, (TSD=1,BUMP=2,TSDA=3). /param TSDA,TSDAs,TSDAsp pointers to the TSDA subroutine and derivatives. The TSDA provices the force over the distance.
subroutine, public ADDforce_normal (body, pt_loc, km, cm, rad, hyster, handle)
 Adds a linear normal contact force (Taken from MBSLIM)
subroutine, public ADDforce_tireBasic (kappac, alfac, mux, muy, handle)
 Adds tire to a normal contact over a wheel: linear model with saturation ellipse. The rotation axis of the wheel is assumed to be coincident with the local vector (/0.d0,1.d0,0.d0/). Completely taken from MBSLIM: http://lim.ii.udc.es.
subroutine, public Modifyforce_TSDA (handle, k, c, s0)
subroutine, public GETforce_TSDA (handle, fs, F2)
 Returns the longitudinal and vectorial forces exerted by a linear generic TSD/bump/TSDA in the current time. /param handle handle to the TSDA force, returned by ADDforce_TSD, ADDforce_Bump or ADDforce_TSDA. /param fs longitudinal force exerted by the TSDA. /param F2 vectorial force exerted by the TSDA on the body2. The force exerted on the body1 is F1=-F2.
subroutine, public GETforce_normal (handle, mfn, Fn)
 Returns the normal force exerted by normal force element in the current time. /param handle handle to the normal force, returned by ADDforce_normal. /param mfn longitudinal force exerted. /param Fn vectorial force exerted.
subroutine, public GETforce_tireBasic (handle, Ftire)
 Returns the normal and lateral force exerted by tireBasic element in the current time. The normal component corresponds to the force_normal element associated to the tire. /param handle handle to the tire force, returned by ADDforce_tireBasic. /param Ftire vectorial force exerted.
subroutine, public genForce_1body (body, pt_loc, F)
 Introduces a generic force acting over one body of the model. /param body body over which the force acts. /param pt_loc local point in the body. /param F applied force in global coordinates.
subroutine genStiffDamp_1body (body, pt_loc, F, dFdr, dFdrp)
 Introduces a generic stiffness damping term over one body of the model. /param body body over which the force acts. /param pt_loc local point in the body. /param F applied force in global coordinates. /param K elemental stiffness matrix, given by ${\bf K} = -\frac{\partial{\bf F}}{\partial {\bf q}}$. /param C elemental damping matrix, given by ${\bf C} = -\frac{\partial{\bf F}}{\partial \dot{\bf q}}$.
subroutine genForce_2body (body1, body2, pt1_loc, pt2_loc, F2)
 Introduces a generic action/reaction force acting over two bodies of the model. /param body1,body2 bodies between which the force acts. /param pt1_loc,pt2_loc end points in the bodies given in local coordinates of body1 and body2 respectively. /param F1 value of the force over the body1, -F1 acts over body2.
subroutine genStiffDamp_2body (body1, body2, pt1_loc, pt2_loc, F2, dF2dr1, dF2dr2, dF2dr1p, dF2dr2p)
 Introduces a generic stiffness damping term over over two bodies of the model.one body of the model. /param body body over which the force acts. /param pt_loc local point in the body. /param F applied force in global coordinates. /param K elemental stiffness matrix, given by ${\bf K} = -\frac{\partial{\bf F}}{\partial {\bf q}}$. /param C elemental damping matrix, given by ${\bf C} = -\frac{\partial{\bf F}}{\partial \dot{\bf q}}$.
subroutine, public evalgenforces (t)
 Subroutine to evaluate the generalized forces of the system.
subroutine, public evalgenstiffdamp (t)
 Subroutine to evaluate the generalized stiffness and damping of the system.
subroutine gravity_ctorque_forces
 Subroutine to evaluate the gravity forces of the system. It's not a user routine.
subroutine ctorque_stiffdamp
 Subroutine to evaluate the gravity stiffness and damping of the system. It's not a user routine.
subroutine libraryforces (t)
 Subroutine to evaluate the library forces of the system.
subroutine librarystiffdamp (t)
 Subroutine to evaluate the library stiffness and damping of the system.
subroutine AssembleQbody (n, F, p, Q)
 Subroutine to form the local generalized force over one body Function to get the generalized force of one body when torque, force and Euler parameters of this body are given.
subroutine AssembleKCbody (pt, p, F, dFdq, dFdqp, K, C)
 Subroutine to form the local generalized stiffness and damping over one body.
subroutine AssembleKC2body (pt1, pt2, p1, p2, F2, dF2dq1, dF2dq2, dF2dqp1, dF2dqp2, K, C)
 Subroutine to form the local generalized stiffness and damping over two bodies.
subroutine, public generalized_forces_Setup
 Generalized forces module setup.

Variables

REAL(8), dimension(:),
allocatable, public 
Qgen
REAL(8), dimension(:,:),
allocatable, public 
PROTECTED
REAL(8), dimension(:,:),
allocatable, public 
Kgen
REAL(8), dimension(:,:),
allocatable, public 
Cgen
REAL(8), dimension(:), allocatable Qgrav
REAL(8), dimension(:,:),
allocatable 
Kgrav
REAL(8), dimension(:,:),
allocatable 
Cgrav
INTEGER nforce_TSDA = 0
INTEGER nforce_normal = 0
INTEGER nforce_tirebasic = 0
TYPE(typeforce_TSDA),
dimension(:), allocatable 
force_TSDA
TYPE(typeforce_normal),
dimension(:), allocatable 
force_normal
TYPE(typeforce_tirebasic),
dimension(:), allocatable 
force_tirebasic
INTEGER, parameter kindTSD = 1
INTEGER, parameter kindBUMP = 2
INTEGER, parameter kindTSDA = 3

Detailed Description

Generalized forces module.

This module:

1)Add forces to the model.


Function/Subroutine Documentation

subroutine,public generalized_forces::ADDforce_Bump ( INTEGER,intent(in)  body1,
INTEGER,intent(in)  body2,
REAL(8),dimension(3),intent(in)  pt1,
REAL(8),dimension(3),intent(in)  pt2,
REAL(8),intent(in)  k,
REAL(8),intent(in)  c,
REAL(8),intent(in)  s0,
INTEGER,intent(out),optional  handle 
)

Adds a linear Bump Stop force to the model. It is equivalent to a TSD force with only compression. /param body1,body2 bodies between which the force acts. /param pt1,pt2 end points in the bodies for the Bump, expresed in the local reference frames of the bodies. /param k,c stiffness and damping coefficients of the Bump. /param s0 natural lenght of the Bump.

Here is the call graph for this function:

subroutine generalized_forces::ADDforce_genericTSDA ( INTEGER,intent(in)  body1,
INTEGER,intent(in)  body2,
REAL(8),dimension(3),intent(in)  pt1,
REAL(8),dimension(3),intent(in)  pt2,
REAL(8),intent(in)  k,
REAL(8),intent(in)  c,
REAL(8),intent(in)  s0,
INTEGER,intent(in)  kind,
PROCEDURE(callback_TSDA),optional  TSDA,
PROCEDURE(callback_TSDA),optional  TSDAs,
PROCEDURE(callback_TSDA),optional  TSDAsp,
INTEGER,intent(out),optional  handle 
)

Adds a linear generic TSD/bump/TSDA force to the model. It's not a user subroutine, it is intended for the solver /param body1,body2 bodies between which the force acts. /param pt1,pt2 end points in the bodies for the TSD, expresed in the local reference frames of the bodies. /param k,c stiffness and damping coefficients of the TSD. /param s0 natural lenght of the TSD. /param kind kind of TSD, (TSD=1,BUMP=2,TSDA=3). /param TSDA,TSDAs,TSDAsp pointers to the TSDA subroutine and derivatives. The TSDA provices the force over the distance.

subroutine,public generalized_forces::ADDforce_normal ( INTEGER,intent(in)  body,
REAL(8),dimension(3),intent(in)  pt_loc,
REAL(8),intent(in)  km,
REAL(8),intent(in)  cm,
REAL(8),intent(in)  rad,
REAL(8),intent(in)  hyster,
INTEGER,intent(out),optional  handle 
)

Adds a linear normal contact force (Taken from MBSLIM)

Parameters:
bodysolid to apply the force.
km,cmstiffness and damping constants
radradius of the contact.
hysterhysteresis parameter. It varies between 0 (no dissipation at return) and 1 (100% disipation at return).
subroutine,public generalized_forces::ADDforce_tireBasic ( REAL(8),intent(in)  kappac,
REAL(8),intent(in)  alfac,
REAL(8),intent(in)  mux,
REAL(8),intent(in)  muy,
INTEGER,intent(out),optional  handle 
)

Adds tire to a normal contact over a wheel: linear model with saturation ellipse. The rotation axis of the wheel is assumed to be coincident with the local vector (/0.d0,1.d0,0.d0/). Completely taken from MBSLIM: http://lim.ii.udc.es.

Parameters:
kappac,alfacpseudodeslizamientos críticos longitudinal y lateral.
mux,muycoeficientes de fricción máximos en "x" e "y" que nos definen la elipse de adherencia del modelo.
subroutine,public generalized_forces::ADDforce_TSD ( INTEGER,intent(in)  body1,
INTEGER,intent(in)  body2,
REAL(8),dimension(3),intent(in)  pt1,
REAL(8),dimension(3),intent(in)  pt2,
REAL(8),intent(in)  k,
REAL(8),intent(in)  c,
REAL(8),intent(in)  s0,
INTEGER,intent(out),optional  handle 
)

Adds a linear TSD force to the model /param body1,body2 bodies between which the force acts. /param pt1,pt2 end points in the bodies for the TSD, expresed in the local reference frames of the bodies. /param k,c stiffness and damping coefficients of the TSD. /param s0 natural lenght of the TSD.

Here is the call graph for this function:

subroutine,public generalized_forces::ADDforce_TSDA ( INTEGER,intent(in)  body1,
INTEGER,intent(in)  body2,
REAL(8),dimension(3),intent(in)  pt1,
REAL(8),dimension(3),intent(in)  pt2,
PROCEDURE(callback_TSDA)  TSDA,
PROCEDURE(callback_TSDA),optional  TSDAs,
PROCEDURE(callback_TSDA),optional  TSDAsp,
INTEGER,intent(out),optional  handle 
)

Adds a user provided TSDA force to the model /param body1,body2 bodies between which the force acts. /param pt1,pt2 end points in the bodies for the TSD, expresed in the local reference frames of the bodies. /param k,c stiffness and damping coefficients of the TSD. /param s0 natural lenght of the TSD.

Here is the call graph for this function:

subroutine generalized_forces::AssembleKC2body ( REAL(8),dimension(3),intent(in)  pt1,
REAL(8),dimension(3),intent(in)  pt2,
REAL(8),dimension(4),intent(in)  p1,
REAL(8),dimension(4),intent(in)  p2,
REAL(8),dimension(3),intent(in)  F2,
REAL(8),dimension(3,7),intent(in)  dF2dq1,
REAL(8),dimension(3,7),intent(in)  dF2dq2,
REAL(8),dimension(3,7),intent(in)  dF2dqp1,
REAL(8),dimension(3,7),intent(in)  dF2dqp2,
REAL(8),dimension(14,14),intent(out)  K,
REAL(8),dimension(14,14),intent(out)  C 
)

Subroutine to form the local generalized stiffness and damping over two bodies.

Parameters:
pt1local points of the bodies.
Fglobal force acting on the given body.
dFdqderivative of the force wrt the generalized coordinates of the body.
dFdqpderivative of the force wrt the generalized velocities of the body.
p1,p2Euler parameters of the given bodies.
K,Celemental stiffness and damping matrices

Here is the call graph for this function:

subroutine generalized_forces::AssembleKCbody ( REAL(8),dimension(3),intent(in)  pt,
REAL(8),dimension(4),intent(in)  p,
REAL(8),dimension(3),intent(in)  F,
REAL(8),dimension(3,7),dimension(3,7),intent(in)  dFdq,
REAL(8),dimension(3,7),dimension(3,7),intent(in)  dFdqp,
REAL(8),dimension(7,7),intent(out)  K,
REAL(8),dimension(7,7),intent(out)  C 
)

Subroutine to form the local generalized stiffness and damping over one body.

Parameters:
ptlocal point of the body.
Fglobal force acting on the given body.
dFdqderivative of the force wrt the generalized coordinates of the body.
dFdqpderivative of the force wrt the generalized velocities of the body.
pEuler parameters of the given body.
K,Celemental stiffness and damping matrices

Here is the call graph for this function:

subroutine generalized_forces::AssembleQbody ( REAL(8),dimension(3),intent(in)  n,
REAL(8),dimension(3),intent(in)  F,
REAL(8),dimension(4),intent(in)  p,
REAL(8),dimension(7),intent(out)  Q 
)

Subroutine to form the local generalized force over one body Function to get the generalized force of one body when torque, force and Euler parameters of this body are given.

Parameters:
nlocal torque acting on the given body.
Fglobal force acting on the given body.
pEuler parameters of the given body.
QEuler parameters of the given body.

Here is the call graph for this function:

subroutine generalized_forces::ctorque_stiffdamp ( )

Subroutine to evaluate the gravity stiffness and damping of the system. It's not a user routine.

Here is the call graph for this function:

subroutine,public generalized_forces::evalgenforces ( REAL(8),intent(in)  t)

Subroutine to evaluate the generalized forces of the system.

Here is the call graph for this function:

subroutine,public generalized_forces::evalgenstiffdamp ( REAL(8),intent(in)  t)

Subroutine to evaluate the generalized stiffness and damping of the system.

Here is the call graph for this function:

subroutine,public generalized_forces::generalized_forces_Setup ( )

Generalized forces module setup.

subroutine,public generalized_forces::genForce_1body ( INTEGER,intent(in)  body,
REAL(8),dimension(3),intent(in)  pt_loc,
REAL(8),dimension(3),intent(in)  F 
)

Introduces a generic force acting over one body of the model. /param body body over which the force acts. /param pt_loc local point in the body. /param F applied force in global coordinates.

Here is the call graph for this function:

subroutine generalized_forces::genForce_2body ( INTEGER,intent(in)  body1,
INTEGER,intent(in)  body2,
REAL(8),dimension(3),intent(in)  pt1_loc,
REAL(8),dimension(3),intent(in)  pt2_loc,
REAL(8),dimension(3),intent(in)  F2 
)

Introduces a generic action/reaction force acting over two bodies of the model. /param body1,body2 bodies between which the force acts. /param pt1_loc,pt2_loc end points in the bodies given in local coordinates of body1 and body2 respectively. /param F1 value of the force over the body1, -F1 acts over body2.

Here is the call graph for this function:

subroutine generalized_forces::genStiffDamp_1body ( INTEGER,intent(in)  body,
REAL(8),dimension(3),intent(in)  pt_loc,
REAL(8),dimension(3),intent(in)  F,
REAL(8),dimension(3,3),intent(in)  dFdr,
REAL(8),dimension(3,3),intent(in)  dFdrp 
)

Introduces a generic stiffness damping term over one body of the model. /param body body over which the force acts. /param pt_loc local point in the body. /param F applied force in global coordinates. /param K elemental stiffness matrix, given by ${\bf K} = -\frac{\partial{\bf F}}{\partial {\bf q}}$. /param C elemental damping matrix, given by ${\bf C} = -\frac{\partial{\bf F}}{\partial \dot{\bf q}}$.

Here is the call graph for this function:

subroutine generalized_forces::genStiffDamp_2body ( INTEGER,intent(in)  body1,
INTEGER,intent(in)  body2,
REAL(8),dimension(3),intent(in)  pt1_loc,
REAL(8),dimension(3),intent(in)  pt2_loc,
REAL(8),dimension(3),intent(in)  F2,
REAL(8),dimension(3,3),intent(in)  dF2dr1,
REAL(8),dimension(3,3),intent(in)  dF2dr2,
REAL(8),dimension(3,3),intent(in)  dF2dr1p,
REAL(8),dimension(3,3),intent(in)  dF2dr2p 
)

Introduces a generic stiffness damping term over over two bodies of the model.one body of the model. /param body body over which the force acts. /param pt_loc local point in the body. /param F applied force in global coordinates. /param K elemental stiffness matrix, given by ${\bf K} = -\frac{\partial{\bf F}}{\partial {\bf q}}$. /param C elemental damping matrix, given by ${\bf C} = -\frac{\partial{\bf F}}{\partial \dot{\bf q}}$.

Here is the call graph for this function:

subroutine,public generalized_forces::GETforce_normal ( INTEGER,intent(in)  handle,
REAL(8),intent(out),optional  mfn,
REAL(8),dimension(3),intent(out),optional  Fn 
)

Returns the normal force exerted by normal force element in the current time. /param handle handle to the normal force, returned by ADDforce_normal. /param mfn longitudinal force exerted. /param Fn vectorial force exerted.

subroutine,public generalized_forces::GETforce_tireBasic ( INTEGER,intent(in)  handle,
REAL(8),dimension(3),intent(out)  Ftire 
)

Returns the normal and lateral force exerted by tireBasic element in the current time. The normal component corresponds to the force_normal element associated to the tire. /param handle handle to the tire force, returned by ADDforce_tireBasic. /param Ftire vectorial force exerted.

subroutine,public generalized_forces::GETforce_TSDA ( INTEGER,intent(in)  handle,
REAL(8),intent(out),optional  fs,
REAL(8),dimension(3),intent(out),optional  F2 
)

Returns the longitudinal and vectorial forces exerted by a linear generic TSD/bump/TSDA in the current time. /param handle handle to the TSDA force, returned by ADDforce_TSD, ADDforce_Bump or ADDforce_TSDA. /param fs longitudinal force exerted by the TSDA. /param F2 vectorial force exerted by the TSDA on the body2. The force exerted on the body1 is F1=-F2.

subroutine generalized_forces::gravity_ctorque_forces ( )

Subroutine to evaluate the gravity forces of the system. It's not a user routine.

Here is the call graph for this function:

subroutine generalized_forces::libraryforces ( REAL(8),intent(in)  t)

Subroutine to evaluate the library forces of the system.

Here is the call graph for this function:

subroutine generalized_forces::librarystiffdamp ( REAL(8),intent(in)  t)

Subroutine to evaluate the library stiffness and damping of the system.

Here is the call graph for this function:

subroutine,public generalized_forces::Modifyforce_TSDA ( INTEGER,intent(in)  handle,
REAL(8),intent(in),optional  k,
REAL(8),intent(in),optional  c,
REAL(8),intent(in),optional  s0 
)

Variable Documentation

REAL(8),dimension(:,:),allocatable,public generalized_forces::Cgen
REAL(8),dimension(:,:),allocatable generalized_forces::Cgrav
TYPE(typeforce_normal),dimension(:),allocatable generalized_forces::force_normal
TYPE(typeforce_tirebasic),dimension(:),allocatable generalized_forces::force_tirebasic
TYPE(typeforce_TSDA),dimension(:),allocatable generalized_forces::force_TSDA
REAL(8),dimension(:,:),allocatable,public generalized_forces::Kgen
REAL(8),dimension(:,:),allocatable generalized_forces::Kgrav
INTEGER,parameter generalized_forces::kindBUMP = 2
INTEGER,parameter generalized_forces::kindTSD = 1
INTEGER,parameter generalized_forces::kindTSDA = 3
REAL(8),dimension(:,:),allocatable,public generalized_forces::PROTECTED
REAL(8),dimension(:),allocatable,public generalized_forces::Qgen
REAL(8),dimension(:),allocatable generalized_forces::Qgrav