|
FEDEM Solver
R8.0
Source code of the dynamics solver
|
Module with subroutines for friction calculations. More...
Data Types | |
| interface | findforceinfriction |
| Computes the total applied force in a joint dof with friction. More... | |
Functions/Subroutines | |
| subroutine, public | updatefrictions (joints, cElems, dt, iter, useRealVel, ierr) |
| Updates the friction forces in all joints and contact elements. More... | |
| subroutine | updatefriction (ierr, dt, deltaT, friction, jDof, joint, cElem) |
| Updates friction forces in the given joint or contact element. More... | |
| subroutine | updatemultidoffriction (ierr, dt, deltaT, friction, joint) |
| Updates multidof friction forces in the given joint. More... | |
| subroutine | findmaxfrictionforce (Fmax, Fequ, Fext, Vel, StickSlip, F0, Coulomb, Stribeck, Vc) |
| Calculates the maximum friction force. More... | |
| subroutine | findfrictionforce (Ffric, Kfric, Xn_1, Vn_1, Fold, dF, lStick, lInit, dT, Fmax, Fext, Ftol, X0, Xn, Vn) |
| Calculates the actual friction force. More... | |
| subroutine, public | addinfrictionforces (joint, sam, SysForce, SysReac, ierr) |
| Adds friction forces for a joint into the given system vectors. More... | |
| subroutine | findjointforceinfriction (joint, sam, RF, Q, Fs, Fd, Fi) |
| Computes the total applied force in a joint DOF with friction. More... | |
| subroutine | findcontactelmforceinfriction (cElem, sam, RF, Q, Fs, Fd, Fi) |
| Computes total applied force in a contact element DOF with friction. More... | |
Module with subroutines for friction calculations.
| subroutine, public frictionroutinesmodule::addinfrictionforces | ( | type(masterslavejointtype), intent(in) | joint, |
| type(samtype), intent(in) | sam, | ||
| real(dp), dimension(:), intent(inout) | SysForce, | ||
| real(dp), dimension(:), intent(inout) | SysReac, | ||
| integer, intent(inout) | ierr | ||
| ) |
Adds friction forces for a joint into the given system vectors.
| [in] | joint | The joint owning this friction force |
| [in] | sam | Data for managing system matrix assembly |
| SysForce | System load vector to receive the force contribution | |
| SysReac | Reaction force container | |
| ierr | Error flag |


| subroutine frictionroutinesmodule::findcontactelmforceinfriction | ( | type(contactelementtype), intent(inout) | cElem, |
| type(samtype), intent(in) | sam, | ||
| real(dp), dimension(:), intent(in) | RF, | ||
| real(dp), dimension(:), intent(in) | Q, | ||
| real(dp), dimension(:), intent(in) | Fs, | ||
| real(dp), dimension(:), intent(in), optional | Fd, | ||
| real(dp), dimension(:), intent(in), optional | Fi | ||
| ) |
Computes total applied force in a contact element DOF with friction.
| cElem | The contact element to check for friction forces. | |
| [in] | sam | Data for managing system matrix assembly |
| [in] | RF | Reaction force container |
| [in] | Q | External force system vector |
| [in] | Fs | Stiffness force system vector |
| [in] | Fd | Damping force system vector |
| [in] | Fi | Inertia force system vector |
The total applies force is equal to the sum of all force contributions to the friction DOF, except for the friction force itself.
| subroutine frictionroutinesmodule::findfrictionforce | ( | real(dp), intent(out) | Ffric, |
| real(dp), intent(inout) | Kfric, | ||
| real(dp), intent(inout) | Xn_1, | ||
| real(dp), intent(inout) | Vn_1, | ||
| real(dp), intent(inout) | Fold, | ||
| real(dp), intent(inout) | dF, | ||
| integer, intent(inout) | lStick, | ||
| integer, intent(inout) | lInit, | ||
| real(dp), intent(in) | dT, | ||
| real(dp), intent(in) | Fmax, | ||
| real(dp), intent(in) | Fext, | ||
| real(dp), intent(in) | Ftol, | ||
| real(dp), intent(in) | X0, | ||
| real(dp), intent(in) | Xn, | ||
| real(dp), intent(in) | Vn | ||
| ) |
Calculates the actual friction force.
| [out] | Ffric | Current friction force |
| Kfric | Relative change in friction force wrt. velocity | |
| Xn_1 | Position at previous iteration | |
| Vn_1 | Velocity at previous iteration | |
| Fold | Friction force at previous iteration | |
| dF | Friction force change between last two iterations | |
| lStick | Stick indicator | |
| lInit | Initialization flag | |
| [in] | dT | Time increment size |
| [in] | Fmax | The maximum friction force |
| [in] | Fext | Force that should match friction force on stick |
| [in] | Ftol | Zero tolerance for friction forces |
| [in] | X0 | Position at start of current time step |
| [in] | Xn | Current position |
| [in] | Vn | Current velocity |
See frictiontypemodule::frictiontype::linit for the interpretation of the initialization flag lInit.

| subroutine frictionroutinesmodule::findjointforceinfriction | ( | type(masterslavejointtype), intent(inout) | joint, |
| type(samtype), intent(in) | sam, | ||
| real(dp), dimension(:), intent(in) | RF, | ||
| real(dp), dimension(:), intent(in) | Q, | ||
| real(dp), dimension(:), intent(in) | Fs, | ||
| real(dp), dimension(:), intent(in), optional | Fd, | ||
| real(dp), dimension(:), intent(in), optional | Fi | ||
| ) |
Computes the total applied force in a joint DOF with friction.
| joint | The joint to check for friction forces. | |
| [in] | sam | Data for managing system matrix assembly |
| [in] | RF | Reaction force container |
| [in] | Q | External force system vector |
| [in] | Fs | Stiffness force system vector |
| [in] | Fd | Damping force system vector |
| [in] | Fi | Inertia force system vector |
The total applies force is equal to the sum of all force contributions to the friction DOF, except for the friction force itself.
| subroutine frictionroutinesmodule::findmaxfrictionforce | ( | real(dp), intent(out) | Fmax, |
| real(dp), intent(in) | Fequ, | ||
| real(dp), intent(in) | Fext, | ||
| real(dp), intent(in) | Vel, | ||
| integer, intent(inout) | StickSlip, | ||
| real(dp), intent(in) | F0, | ||
| real(dp), intent(in) | Coulomb, | ||
| real(dp), intent(in) | Stribeck, | ||
| real(dp), intent(in) | Vc | ||
| ) |
Calculates the maximum friction force.
| [out] | Fmax | The maximum friction force |
| [in] | Fequ | Equivalent normal force that creates the friction |
| [in] | Fext | Force that should match friction force on stick |
| [in] | Vel | Current velocity in the friction DOF |
| [in] | StickSlip | Stick/slip indicator |
| [in] | F0 | Prestress load |
| [in] | Coulomb | Coulomb friction coefficient |
| [in] | Stribeck | Magnitude of the Stribeck effect |
| [in] | Vc | Critical speed of the Stribeck effect |

| subroutine frictionroutinesmodule::updatefriction | ( | integer, intent(inout) | ierr, |
| real(dp), intent(in) | dt, | ||
| real(dp), intent(in) | deltaT, | ||
| type(frictiontype), intent(inout) | friction, | ||
| integer, intent(in), optional | jDof, | ||
| type(masterslavejointtype), intent(in), optional | joint, | ||
| type(contactelementtype), intent(in), optional | cElem | ||
| ) |
Updates friction forces in the given joint or contact element.
| ierr | Error Flag | |
| [in] | dt | Time increment size |
| [in] | deltaT | Time increment for finite difference velocity calculation |
| friction | The friction object to update forces for | |
| [in] | jDof | Local joint DOF of the friction |
| [in] | joint | The joint owning this friction |
| [in] | cElem | The contact element owning this friction |


| subroutine, public frictionroutinesmodule::updatefrictions | ( | type(masterslavejointtype), dimension(:), intent(inout) | joints, |
| type(contactelementtype), dimension(:), intent(inout) | cElems, | ||
| real(dp), intent(in) | dt, | ||
| integer, intent(in) | iter, | ||
| logical, intent(in) | useRealVel, | ||
| integer, intent(inout) | ierr | ||
| ) |
Updates the friction forces in all joints and contact elements.
| joints | Array of all joints in the model | |
| cElems | Array of all contact elements in the model | |
| [in] | dt | Time increment size |
| [in] | iter | Iteration counter |
| [in] | useRealVel | If .true., the actual velocity is used |
| ierr | Error Flag |


| subroutine frictionroutinesmodule::updatemultidoffriction | ( | integer, intent(inout) | ierr, |
| real(dp), intent(in) | dt, | ||
| real(dp), intent(in) | deltaT, | ||
| type(frictiontype), intent(inout) | friction, | ||
| type(masterslavejointtype), intent(inout) | joint | ||
| ) |
Updates multidof friction forces in the given joint.
| ierr | Error Flag | |
| [in] | dt | Time increment size |
| [in] | deltaT | Time increment for finite difference velocity calculation |
| friction | The friction object to update forces for | |
| [in] | joint | The joint owning this friction |

