FEDEM Solver  R8.0
Source code of the dynamics solver
Functions/Subroutines | Variables
contactelementroutinesmodule Module Reference

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...
 

Detailed Description

Module with subroutines for contact element calculations.

Function/Subroutine Documentation

◆ addincontactelementdampermat()

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.

Parameters
[in]includeStressStiffIf .true., geometric stiffness is included
[in]scaleCDamping scaling factor
[in]scaleKStiffness scaling factor
NmatSystem matrix to add damping contributions into
[in]cElemThe contact element to calculate damping matrix for
[in]samData for managing system matrix assembly
[out]ierrError flag
RhsSystem right-hand-side vector associated with Nmat

The element damping matrix are added into the system Newton matrix, multiplied by the factor scaleC.

Author
Bjorn Haugen
Date
Oct 2001
Author
Knut Morten Okstad
Date
Sep 2005
Here is the call graph for this function:
Here is the caller graph for this function:

◆ addincontactelementforces()

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.

Parameters
FSystem right-hand-side vector
RFReaction for vector
[in]cElemThe contact element to calculate forces for
[in]samData for managing system matrix assembly
[out]ierrError flag
[in]addSpringsIf .true., add forces from contact springs
[in]addDampersIf .true., add forces from contact dampers
[in]addFrictionIf .true., add forces from contact friction

The force terms are added into the system vector F and the reaction force vectos RF.

Author
Bjorn Haugen
Date
Oct 2001
Here is the call graph for this function:
Here is the caller graph for this function:

◆ addincontactelementstiffmat()

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.

Parameters
[in]includeStressStiffIf .true., geometric stiffness is included
[in]scaleKStiffness scaling factor
NmatSystem matrix to add stiffness contributions into
[in]cElemThe contact element to calculate stiffness matrix for
[in]samData for managing system matrix assembly
[out]ierrError flag
RhsSystem right-hand-side vector associated with Nmat

The element stiffness matrix is added into the system Newton matrix, multiplied by the factor scaleK.

Author
Bjorn Haugen
Date
Oct 2001
Author
Knut Morten Okstad
Date
Sep 2005
Here is the call graph for this function:
Here is the caller graph for this function:

◆ getactivepointindex()

integer function contactelementroutinesmodule::getactivepointindex ( type(contactelementtype), intent(in)  cElem,
integer, intent(in)  cpIndex 
)
private

◆ updatecontactelements()

subroutine, public contactelementroutinesmodule::updatecontactelements ( type(contactelementtype), dimension(:), intent(inout)  cElems,
real(dp), intent(in)  timeStep,
integer, intent(inout)  ierr 
)

Updates all contact elements.

Parameters
[in]cElemsAll contact elements of the model
[in]timeStepTime increment size
[out]ierrError flag
Author
Knut Morten Okstad
Date
May 2002
Here is the caller graph for this function:

◆ updatecontactposition()

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.

Parameters
cElemThe contact element to update contact position for
cSurfContact surface associated with cElem
[in]lpuFile unit number for res-file output

The local coordinates are updates with respect to the contact surface. Then the associated velocities are computed.

Author
Bjorn Haugen
Date
Oct 2001
Author
Knut Morten Okstad
Date
Sep 2005
Here is the call graph for this function:
Here is the caller graph for this function:

◆ updatecontactsprdmp()

subroutine contactelementroutinesmodule::updatecontactsprdmp ( type(contactelementtype), intent(inout)  cElem,
real(dp), intent(in)  timeStep,
integer, intent(inout)  ierr 
)

Updates the contact springs and dampers.

Parameters
cElemThe contact element to update
[in]timeStepTime increment size
ierrError flag
Author
Bjorn Haugen
Date
Oct 2001
Author
Knut Morten Okstad
Date
Sep 2005 / 2.0
Here is the call graph for this function:
Here is the caller graph for this function:

◆ updatecontactvelecc()

subroutine contactelementroutinesmodule::updatecontactvelecc ( type(contactelementtype), intent(inout)  cElem,
type(curvepointtype), intent(in)  CP1,
type(curvepointtype), intent(in)  CP2 
)
private

Updates the contact point velocities and eccentricty vectors.

Parameters
cElemThe contact element to update velocity and eccentricity for
[in]CP1First point of the glider curve segment
[in]CP2Second 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.

Author
Bjorn Haugen
Date
Oct 2001
Author
Knut Morten Okstad
Date
Sep 2005 / 2.0
Here is the caller graph for this function:

Variable Documentation

◆ epszero_p

real(dp), parameter contactelementroutinesmodule::epszero_p = 1.0e-15_dp
private

Zero tolerance.