MBSVT 1.0
|
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 ![]() ![]() | |
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 ![]() ![]() | |
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 |
Generalized forces module.
This module:
1)Add forces to the model.
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.
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)
body | solid to apply the force. |
km,cm | stiffness and damping constants |
rad | radius of the contact. |
hyster | hysteresis 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.
kappac,alfac | pseudodeslizamientos crÃticos longitudinal y lateral. |
mux,muy | coeficientes 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.
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.
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.
pt1 | local points of the bodies. |
F | global force acting on the given body. |
dFdq | derivative of the force wrt the generalized coordinates of the body. |
dFdqp | derivative of the force wrt the generalized velocities of the body. |
p1,p2 | Euler parameters of the given bodies. |
K,C | elemental stiffness and damping matrices |
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.
pt | local point of the body. |
F | global force acting on the given body. |
dFdq | derivative of the force wrt the generalized coordinates of the body. |
dFdqp | derivative of the force wrt the generalized velocities of the body. |
p | Euler parameters of the given body. |
K,C | elemental stiffness and damping matrices |
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.
n | local torque acting on the given body. |
F | global force acting on the given body. |
p | Euler parameters of the given body. |
Q | Euler parameters of the given body. |
subroutine generalized_forces::ctorque_stiffdamp | ( | ) |
Subroutine to evaluate the gravity stiffness and damping of the system. It's not a user routine.
subroutine,public generalized_forces::evalgenforces | ( | REAL(8),intent(in) | t | ) |
Subroutine to evaluate the generalized forces of the system.
subroutine,public generalized_forces::evalgenstiffdamp | ( | REAL(8),intent(in) | t | ) |
Subroutine to evaluate the generalized stiffness and damping of the system.
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.
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.
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 . /param C elemental damping matrix, given by
.
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 . /param C elemental damping matrix, given by
.
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.
subroutine generalized_forces::libraryforces | ( | REAL(8),intent(in) | t | ) |
Subroutine to evaluate the library forces of the system.
subroutine generalized_forces::librarystiffdamp | ( | REAL(8),intent(in) | t | ) |
Subroutine to evaluate the library stiffness and damping of the system.
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 | ||
) |
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 |
INTEGER generalized_forces::nforce_normal = 0 |
INTEGER generalized_forces::nforce_tirebasic = 0 |
INTEGER generalized_forces::nforce_TSDA = 0 |
REAL(8),dimension(:,:),allocatable,public generalized_forces::PROTECTED |
REAL(8),dimension(:),allocatable,public generalized_forces::Qgen |
REAL(8),dimension(:),allocatable generalized_forces::Qgrav |