FrontISTR  5.9.0
Large-scale structural analysis program with finit element method
m_fstr_contact_assembly Module Reference

Contact processing at assembly level (all pairs in one tContact object) More...

Functions/Subroutines

subroutine, public calc_contact_pair_refstiff (contact, diag, ndof, hecMESH)
 Calculate reference stiffness for one contact pair. More...
 
subroutine assemble_contact_force_residual (nnode, ndLocal, id_lagrange, ctNForce, ctTForce, conMAT)
 Assemble contact nodal force into residual vector (conMATB). More...
 
subroutine assemble_contact_force_output (nnode, ndLocal, ctNForce, ctTForce, cont_nforce, cont_fric)
 Accumulate contact nodal force into output arrays (CONT_NFORCE/CONT_FRIC). More...
 
subroutine update_contact_multiplier (ctAlgo, contact, coord, disp, ddisp, fcoeff, hecMESH, hecLagMAT, gnt, ctchanged)
 This subroutine update lagrangian multiplier and the distance between contacting nodes. More...
 
subroutine update_tied_multiplier (contact, disp, ddisp, ctchanged)
 This subroutine update lagrangian multiplier and the distance between contacting nodes. More...
 
subroutine update_contact_tangentforce (contact)
 
subroutine calcu_contact_stiffness_nodesurf (ctAlgo, contact, coord, disp, iter, lagrange_array, conMAT, hecLagMAT)
 This subroutine calculates contact stiffness for each contact pair and assembles it into global stiffness matrix. More...
 
subroutine calcu_contact_ndforce_nodesurf (purpose, ctAlgo, contact, coord, disp, ddisp, lagrange_array, conMAT, CONT_NFORCE, CONT_FRIC, hecLagMAT)
 This subroutine calculates contact nodal force for each contact pair and assembles it into contact matrix and/or force arrays. When purpose == kctForResidual, forces are assembled into conMATB. When purpose == kctForOutput, forces are stored in CONT_NFORCE/CONT_FRIC using multiplier only (no penalty). More...
 

Detailed Description

Contact processing at assembly level (all pairs in one tContact object)

Function/Subroutine Documentation

◆ assemble_contact_force_output()

subroutine m_fstr_contact_assembly::assemble_contact_force_output ( integer(kind=kint), intent(in)  nnode,
integer(kind=kint), dimension(nnode + 1), intent(in)  ndLocal,
real(kind=kreal), dimension((nnode+1)*3+1), intent(in)  ctNForce,
real(kind=kreal), dimension((nnode+1)*3+1), intent(in)  ctTForce,
real(kind=kreal), dimension(:), intent(inout), pointer  cont_nforce,
real(kind=kreal), dimension(:), intent(inout), optional, pointer  cont_fric 
)

Accumulate contact nodal force into output arrays (CONT_NFORCE/CONT_FRIC).

Parameters
[in]nnodenumber of master nodes
[in]ndlocalglobal node numbers
[in]ctnforcenormal contact force vector
[in]cttforcetangential contact force vector
[in,out]cont_nforceoutput normal force
[in,out]cont_fricoutput friction force

Definition at line 92 of file fstr_contact_assembly.f90.

Here is the caller graph for this function:

◆ assemble_contact_force_residual()

subroutine m_fstr_contact_assembly::assemble_contact_force_residual ( integer(kind=kint), intent(in)  nnode,
integer(kind=kint), dimension(nnode + 1), intent(in)  ndLocal,
integer(kind=kint), intent(in)  id_lagrange,
real(kind=kreal), dimension((nnode+1)*3+1), intent(in)  ctNForce,
real(kind=kreal), dimension((nnode+1)*3+1), intent(in)  ctTForce,
type(hecmwst_matrix), intent(inout)  conMAT 
)

Assemble contact nodal force into residual vector (conMATB).

Parameters
[in]nnodenumber of master nodes
[in]ndlocalglobal node numbers
[in]id_lagrangeLagrange multiplier index (0 if none)
[in]ctnforcenormal contact force vector
[in]cttforcetangential contact force vector
[in,out]conmatcontact matrix

Definition at line 69 of file fstr_contact_assembly.f90.

Here is the caller graph for this function:

◆ calc_contact_pair_refstiff()

subroutine, public m_fstr_contact_assembly::calc_contact_pair_refstiff ( type(tcontact), intent(inout)  contact,
real(kind=kreal), dimension(:), intent(in)  diag,
integer(kind=kint), intent(in)  ndof,
type(hecmwst_local_mesh), intent(in)  hecMESH 
)

Calculate reference stiffness for one contact pair.

Parameters
[in,out]contactcontact pair
[in]diagdiagonal vector (size = ndof * np)
[in]ndofdegrees of freedom
[in]hecmeshmesh

Definition at line 21 of file fstr_contact_assembly.f90.

Here is the caller graph for this function:

◆ calcu_contact_ndforce_nodesurf()

subroutine m_fstr_contact_assembly::calcu_contact_ndforce_nodesurf ( integer(kind=kint), intent(in)  purpose,
integer(kind=kint), intent(in)  ctAlgo,
type( tcontact ), intent(inout)  contact,
real(kind=kreal), dimension(:), intent(in)  coord,
real(kind=kreal), dimension(:), intent(in)  disp,
real(kind=kreal), dimension(:), intent(in)  ddisp,
real(kind=kreal), dimension(:), intent(in)  lagrange_array,
type(hecmwst_matrix), intent(inout)  conMAT,
real(kind=kreal), dimension(:), pointer  CONT_NFORCE,
real(kind=kreal), dimension(:), pointer  CONT_FRIC,
type(hecmwst_matrix_lagrange), intent(in)  hecLagMAT 
)

This subroutine calculates contact nodal force for each contact pair and assembles it into contact matrix and/or force arrays. When purpose == kctForResidual, forces are assembled into conMATB. When purpose == kctForOutput, forces are stored in CONT_NFORCE/CONT_FRIC using multiplier only (no penalty).

Parameters
[in]purposekctForResidual or kctForOutput
[in]ctalgocontact analysis algorithm
[in,out]contactcontact info
[in]coordmesh coordinate
[in]dispdisp till current step
[in]ddispdisp till current substep
[in]lagrange_arrayLagrange multiplier array
[in,out]conmatcontact matrix
cont_nforcecontact normal force
cont_friccontact friction force
[in]heclagmatLagrange matrix

Definition at line 342 of file fstr_contact_assembly.f90.

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

◆ calcu_contact_stiffness_nodesurf()

subroutine m_fstr_contact_assembly::calcu_contact_stiffness_nodesurf ( integer(kind=kint), intent(in)  ctAlgo,
type(tcontact), intent(inout)  contact,
real(kind=kreal), dimension(:), intent(in)  coord,
real(kind=kreal), dimension(:), intent(in)  disp,
integer(kind=kint), intent(in)  iter,
real(kind=kreal), dimension(:), intent(in)  lagrange_array,
type(hecmwst_matrix), intent(inout)  conMAT,
type(hecmwst_matrix_lagrange), intent(inout)  hecLagMAT 
)

This subroutine calculates contact stiffness for each contact pair and assembles it into global stiffness matrix.

Parameters
[in]ctalgocontact analysis algorithm
[in,out]contactcontact info
[in]coordmesh coordinate
[in]dispdisplacement
[in]iteriteration number
[in]lagrange_arrayLagrange multiplier array
[in,out]conmatcontact stiffness matrix
[in,out]heclagmatLagrange matrix

Definition at line 252 of file fstr_contact_assembly.f90.

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

◆ update_contact_multiplier()

subroutine m_fstr_contact_assembly::update_contact_multiplier ( integer(kind=kint), intent(in)  ctAlgo,
type( tcontact ), intent(inout)  contact,
real(kind=kreal), dimension(:), intent(in)  coord,
real(kind=kreal), dimension(:), intent(in)  disp,
real(kind=kreal), dimension(:), intent(in)  ddisp,
real(kind=kreal), intent(in)  fcoeff,
type(hecmwst_local_mesh), intent(in)  hecMESH,
type(hecmwst_matrix_lagrange), intent(in)  hecLagMAT,
real(kind=kreal), dimension(2), intent(out)  gnt,
logical, intent(inout)  ctchanged 
)

This subroutine update lagrangian multiplier and the distance between contacting nodes.

Parameters
[in]ctalgocontact algorithm
[in,out]contactcontact info
[in]coordmesh coordinate
[in]dispdisp till current step
[in]ddispdisp till current substep
[in]fcoefffrictional coeff
[in]hecmeshmesh for allreduce
[in]heclagmatLagrange matrix
[out]gntconvergency information
[in,out]ctchangedif contact state changes

Definition at line 113 of file fstr_contact_assembly.f90.

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

◆ update_contact_tangentforce()

subroutine m_fstr_contact_assembly::update_contact_tangentforce ( type( tcontact ), intent(inout)  contact)
Parameters
[in,out]contactcontact info

Definition at line 233 of file fstr_contact_assembly.f90.

Here is the caller graph for this function:

◆ update_tied_multiplier()

subroutine m_fstr_contact_assembly::update_tied_multiplier ( type( tcontact ), intent(inout)  contact,
real(kind=kreal), dimension(:), intent(in)  disp,
real(kind=kreal), dimension(:), intent(in)  ddisp,
logical, intent(inout)  ctchanged 
)

This subroutine update lagrangian multiplier and the distance between contacting nodes.

Parameters
[in,out]contactcontact info
[in]dispdisp till current step
[in]ddispdisp till current substep
[in,out]ctchangedif contact state changes

Definition at line 182 of file fstr_contact_assembly.f90.

Here is the caller graph for this function: