FrontISTR  5.7.0
Large-scale structural analysis program with finit element method
m_addcontactstiffness Module Reference

This module provides functions: 1) obtain contact stiffness matrix of each contact pair and assemble it into global stiffness matrix. 2) obtain contact nodal force vector of each contact pair and assemble it into right-hand side vector to update non-equilibrated nodal force vector. 3) Modify Lagrange multiplier-related part of stiffness matrix and right-hand side vector for dealing with prescribed displacement boundary condition. More...

Functions/Subroutines

subroutine, public fstr_addcontactstiffness (cstep, iter, hecMAT, hecLagMAT, fstrSOLID)
 This subroutine obtains contact stiffness matrix of each contact pair and assembles it into global stiffness matrix. More...
 
subroutine gettiedstiffness (etype, nnode, idof, ctState, lagrange, stiffness)
 This subroutine obtains contact stiffness matrix of contact pair. More...
 
subroutine, public fstr_update_ndforce_contact (cstep, hecMESH, hecMAT, hecLagMAT, fstrSOLID, conMAT)
 This subroutine obtains contact nodal force vector of each contact pair and assembles it into right-hand side vector to update non-equilibrated nodal force vector. More...
 
subroutine gettiednodalforce (etype, nnode, idof, ndu, ctState, lagrange, ctNForce, ctTForce)
 This subroutine obtains contact nodal force vector of contact pair. More...
 
subroutine, public update_ndforce_contact (nnode, ndLocal, id_lagrange, lagrange, ctNForce, ctTForce, hecMAT, cont_nforce, cont_fric)
 This subroutine assembles contact nodal force vector into right-hand side vector to update non-equilibrated nodal force vector. More...
 
subroutine, public fstr_ass_load_contact (cstep, hecMESH, hecMAT, fstrSOLID, hecLagMAT)
 This subroutine adds initial contact force vector to the right-hand side vector \at the beginning of each substep calculation. More...
 

Detailed Description

This module provides functions: 1) obtain contact stiffness matrix of each contact pair and assemble it into global stiffness matrix. 2) obtain contact nodal force vector of each contact pair and assemble it into right-hand side vector to update non-equilibrated nodal force vector. 3) Modify Lagrange multiplier-related part of stiffness matrix and right-hand side vector for dealing with prescribed displacement boundary condition.

Function/Subroutine Documentation

◆ fstr_addcontactstiffness()

subroutine, public m_addcontactstiffness::fstr_addcontactstiffness ( integer(kind=kint)  cstep,
integer(kind=kint)  iter,
type(hecmwst_matrix hecMAT,
type(hecmwst_matrix_lagrange hecLagMAT,
type(fstr_solid fstrSOLID 
)

This subroutine obtains contact stiffness matrix of each contact pair and assembles it into global stiffness matrix.

Parameters
cstepcurrent loading step
hecmattype hecmwST_matrix
fstrsolidtype fstr_solid
heclagmattype hecmwST_matrix_lagrange

Definition at line 38 of file fstr_AddContactStiff.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fstr_ass_load_contact()

subroutine, public m_addcontactstiffness::fstr_ass_load_contact ( integer(kind=kint)  cstep,
type(hecmwst_local_mesh hecMESH,
type(hecmwst_matrix hecMAT,
type(fstr_solid fstrSOLID,
type(hecmwst_matrix_lagrange hecLagMAT 
)

This subroutine adds initial contact force vector to the right-hand side vector \at the beginning of each substep calculation.

Parameters
hecmeshtype hecmwST_local_mesh
hecmattype hecmwST_matrix
fstrsolidtype fstr_solid
heclagmattype hecmwST_matrix_lagrange
cstepcurrent step

Definition at line 546 of file fstr_AddContactStiff.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fstr_update_ndforce_contact()

subroutine, public m_addcontactstiffness::fstr_update_ndforce_contact ( integer(kind=kint)  cstep,
type(hecmwst_local_mesh hecMESH,
type(hecmwst_matrix hecMAT,
type(hecmwst_matrix_lagrange hecLagMAT,
type(fstr_solid fstrSOLID,
type(hecmwst_matrix conMAT 
)

This subroutine obtains contact nodal force vector of each contact pair and assembles it into right-hand side vector to update non-equilibrated nodal force vector.

Parameters
hecmeshtype hecmwST_local_mesh
hecmattype hecmwST_matrix
fstrsolidtype fstr_solid
heclagmattype hecmwST_matrix_lagrange
conmattype hecmwST_matrix for contact part only
cstepcurrent calculation step

Definition at line 257 of file fstr_AddContactStiff.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ gettiednodalforce()

subroutine m_addcontactstiffness::gettiednodalforce ( integer(kind=kint)  etype,
integer(kind=kint)  nnode,
integer(kind=kint)  idof,
real(kind=kreal), dimension((nnode + 1)*3)  ndu,
type(tcontactstate ctState,
real(kind=kreal)  lagrange,
real(kind=kreal), dimension((nnode+1)*3+1)  ctNForce,
real(kind=kreal), dimension((nnode+1)*3+1)  ctTForce 
)

This subroutine obtains contact nodal force vector of contact pair.

Parameters
etypetype of master segment
nnodenumber of nodes of master segment
ndunodal displacement
ctstatetype tContactState
lagrangevalue of Lagrange multiplier
ctnforcetied contact force vector
cttforcetied contact force vector

Definition at line 370 of file fstr_AddContactStiff.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ gettiedstiffness()

subroutine m_addcontactstiffness::gettiedstiffness ( integer(kind=kint)  etype,
integer(kind=kint)  nnode,
integer(kind=kint)  idof,
type(tcontactstate ctState,
real(kind=kreal)  lagrange,
real(kind=kreal), dimension(:,:)  stiffness 
)

This subroutine obtains contact stiffness matrix of contact pair.

Parameters
etypetype of master segment
nnodenumber of nodes of master segment
ctstatetype tContactState
lagrangevalue of Lagrange multiplier
stiffnesscontact stiffness matrix

Definition at line 121 of file fstr_AddContactStiff.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ update_ndforce_contact()

subroutine, public m_addcontactstiffness::update_ndforce_contact ( integer(kind=kint)  nnode,
integer(kind=kint), dimension(nnode + 1)  ndLocal,
integer(kind=kint)  id_lagrange,
real(kind=kreal)  lagrange,
real(kind=kreal), dimension((nnode+1)*3+1)  ctNForce,
real(kind=kreal), dimension((nnode+1)*3+1)  ctTForce,
type(hecmwst_matrix hecMAT,
real(kind=kreal), dimension(:), pointer  cont_nforce,
real(kind=kreal), dimension(:), optional, pointer  cont_fric 
)

This subroutine assembles contact nodal force vector into right-hand side vector to update non-equilibrated nodal force vector.

Parameters
hecmattype hecmwST_matrix
ndlocalnumber of nodes of master segment global number of nodes of contact pair
id_lagrangenumber of Lagrange multiplier
lagrangevalue of Lagrange multiplier
ctnforcecontact force vector
cttforcecontact force vector
cont_nforcecontact force vector
cont_friccontact force vector

Definition at line 515 of file fstr_AddContactStiff.f90.

Here is the caller graph for this function: