FrontISTR 5.2.0
Large-scale structural analysis program with finit element method
Loading...
Searching...
No Matches
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, fstrmat, fstrsolid)
 This subroutine obtains contact stiffness matrix of each contact pair and assembles it into global stiffness matrix.
 
subroutine, public fstr_update_ndforce_contact (cstep, hecmesh, hecmat, fstrmat, 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.
 
subroutine, public update_ndforce_contact (nnode, ndlocal, id_lagrange, lagrange, ctnforce, cttforce, fstrsolid, hecmat)
 This subroutine assembles contact nodal force vector into right-hand side vector to update non-equilibrated nodal force vector.
 
subroutine, public fstr_ass_load_contact (cstep, hecmesh, hecmat, fstrsolid, fstrmat)
 This subroutine adds initial contact force vector to the right-hand side vector \at the beginning of each substep calculation.
 
subroutine, public fstr_mat_ass_bc_contact (hecmat, fstrmat, inode, idof, rhs)
 Modify Lagrange multiplier-related part of stiffness matrix and right-hand side vector for dealing with prescribed displacement boundary condition.
 

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(fstrst_matrix_contact_lagrange fstrmat,
type(fstr_solid fstrsolid 
)

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

Parameters
cstepcurrent loding step
hecmattype hecmwST_matrix
fstrsolidtype fstr_solid
fstrmattype fstrST_matrix_contact_lagrange

Definition at line 39 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(fstrst_matrix_contact_lagrange fstrmat 
)

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
fstrmattype fstrST_matrix_contact_lagrange
cstepcurrent step

Definition at line 456 of file fstr_AddContactStiff.f90.

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

◆ fstr_mat_ass_bc_contact()

subroutine, public m_addcontactstiffness::fstr_mat_ass_bc_contact ( type(hecmwst_matrix hecmat,
type(fstrst_matrix_contact_lagrange fstrmat,
integer(kind=kint)  inode,
integer(kind=kint)  idof,
real(kind=kreal)  rhs 
)

Modify Lagrange multiplier-related part of stiffness matrix and right-hand side vector for dealing with prescribed displacement boundary condition.

Parameters
hecmathecmwST_matrix
fstrmatfstrST_matrix_contact_lagrange
idofnumber of node; degree of freedom
rhsvalue of prescribed displacement

Definition at line 535 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(fstrst_matrix_contact_lagrange fstrmat,
type(fstr_solid fstrsolid,
type(hecmwst_matrix), optional  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
fstrmattype fstrST_matrix_contact_lagrange
conmattype hecmwST_matrix for contact part only
cstepcurrent calculation step

Definition at line 260 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(fstr_solid fstrsolid,
type(hecmwst_matrix hecmat 
)

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

Parameters
fstrsolidtype fstr_solid
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

Definition at line 425 of file fstr_AddContactStiff.f90.

Here is the caller graph for this function: