|
FEDEM Solver
R8.0
Source code of the dynamics solver
|
Module with subroutines for contact element calculations. More...
Functions/Subroutines | |
| integer function | getactivepointindex (cElem, cpIndex) |
| subroutine, public | addincontactelementstiffmat (includeStressStiff, scaleK, Nmat, cElem, sam, ierr, Rhs) |
| Calculates the stiffness matrix for each contact spring. More... | |
| subroutine, public | addincontactelementdampermat (includeStressStiff, scaleC, scaleK, Nmat, cElem, sam, ierr, Rhs) |
| Calculates the damping matrix for each contact damper. More... | |
| subroutine, public | addincontactelementforces (F, RF, cElem, sam, ierr, addSprings, addDampers, addFriction) |
| Calculates system force vector terms from a contact element. More... | |
| subroutine, public | updatecontactelements (cElems, timeStep, ierr) |
| Updates all contact elements. More... | |
| subroutine | updatecontactposition (cElem, cSurf, lpu) |
| Updates the local coordinates of the contact element follower. More... | |
| subroutine | updatecontactvelecc (cElem, CP1, CP2) |
| Updates the contact point velocities and eccentricty vectors. More... | |
| subroutine | updatecontactsprdmp (cElem, timeStep, ierr) |
| Updates the contact springs and dampers. More... | |
Variables | |
| real(dp), parameter | epszero_p = 1.0e-15_dp |
| Zero tolerance. More... | |
Module with subroutines for contact element calculations.
| subroutine, public contactelementroutinesmodule::addincontactelementdampermat | ( | logical, intent(in) | includeStressStiff, |
| real(dp), intent(in) | scaleC, | ||
| real(dp), intent(in) | scaleK, | ||
| type(sysmatrixtype), intent(inout) | Nmat, | ||
| type(contactelementtype), intent(in) | cElem, | ||
| type(samtype), intent(in) | sam, | ||
| integer, intent(out) | ierr, | ||
| real(dp), dimension(:), intent(inout), optional | Rhs | ||
| ) |
Calculates the damping matrix for each contact damper.
| [in] | includeStressStiff | If .true., geometric stiffness is included |
| [in] | scaleC | Damping scaling factor |
| [in] | scaleK | Stiffness scaling factor |
| Nmat | System matrix to add damping contributions into | |
| [in] | cElem | The contact element to calculate damping matrix for |
| [in] | sam | Data for managing system matrix assembly |
| [out] | ierr | Error flag |
| Rhs | System right-hand-side vector associated with Nmat |
The element damping matrix are added into the system Newton matrix, multiplied by the factor scaleC.


| subroutine, public contactelementroutinesmodule::addincontactelementforces | ( | real(dp), dimension(:), intent(inout) | F, |
| real(dp), dimension(:), intent(inout) | RF, | ||
| type(contactelementtype), intent(in) | cElem, | ||
| type(samtype), intent(in) | sam, | ||
| integer, intent(inout) | ierr, | ||
| logical, intent(in), optional | addSprings, | ||
| logical, intent(in), optional | addDampers, | ||
| logical, intent(in), optional | addFriction | ||
| ) |
Calculates system force vector terms from a contact element.
| F | System right-hand-side vector | |
| RF | Reaction for vector | |
| [in] | cElem | The contact element to calculate forces for |
| [in] | sam | Data for managing system matrix assembly |
| [out] | ierr | Error flag |
| [in] | addSprings | If .true., add forces from contact springs |
| [in] | addDampers | If .true., add forces from contact dampers |
| [in] | addFriction | If .true., add forces from contact friction |
The force terms are added into the system vector F and the reaction force vectos RF.


| subroutine, public contactelementroutinesmodule::addincontactelementstiffmat | ( | logical, intent(in) | includeStressStiff, |
| real(dp), intent(in) | scaleK, | ||
| type(sysmatrixtype), intent(inout) | Nmat, | ||
| type(contactelementtype), intent(in) | cElem, | ||
| type(samtype), intent(in) | sam, | ||
| integer, intent(out) | ierr, | ||
| real(dp), dimension(:), intent(inout), optional | Rhs | ||
| ) |
Calculates the stiffness matrix for each contact spring.
| [in] | includeStressStiff | If .true., geometric stiffness is included |
| [in] | scaleK | Stiffness scaling factor |
| Nmat | System matrix to add stiffness contributions into | |
| [in] | cElem | The contact element to calculate stiffness matrix for |
| [in] | sam | Data for managing system matrix assembly |
| [out] | ierr | Error flag |
| Rhs | System right-hand-side vector associated with Nmat |
The element stiffness matrix is added into the system Newton matrix, multiplied by the factor scaleK.


|
private |
| subroutine, public contactelementroutinesmodule::updatecontactelements | ( | type(contactelementtype), dimension(:), intent(inout) | cElems, |
| real(dp), intent(in) | timeStep, | ||
| integer, intent(inout) | ierr | ||
| ) |
Updates all contact elements.
| [in] | cElems | All contact elements of the model |
| [in] | timeStep | Time increment size |
| [out] | ierr | Error flag |

| subroutine contactelementroutinesmodule::updatecontactposition | ( | type(contactelementtype), intent(inout) | cElem, |
| type(glidercurvetype), intent(inout) | cSurf, | ||
| integer, intent(in) | lpu | ||
| ) |
Updates the local coordinates of the contact element follower.
| cElem | The contact element to update contact position for | |
| cSurf | Contact surface associated with cElem | |
| [in] | lpu | File unit number for res-file output |
The local coordinates are updates with respect to the contact surface. Then the associated velocities are computed.


| subroutine contactelementroutinesmodule::updatecontactsprdmp | ( | type(contactelementtype), intent(inout) | cElem, |
| real(dp), intent(in) | timeStep, | ||
| integer, intent(inout) | ierr | ||
| ) |
Updates the contact springs and dampers.
| cElem | The contact element to update | |
| [in] | timeStep | Time increment size |
| ierr | Error flag |


|
private |
Updates the contact point velocities and eccentricty vectors.
| cElem | The contact element to update velocity and eccentricity for | |
| [in] | CP1 | First point of the glider curve segment |
| [in] | CP2 | Second point of the glider curve segment |
The contact point velocity is computed from the follower triad. The eccentricity vectors are computed from the glider triad positions.

|
private |
Zero tolerance.