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

Contact search and state scanning at search level (all pairs in one tContact) More...

Functions/Subroutines

subroutine track_contact_position (nslave, contact, currpos, currdisp, infoCTChange, nodeID, elemID, flag_ctAlgo)
 This subroutine tracks down next contact position after a finite slide When flag_ctAlgo is present, implicit-specific processing (update_TangentForce for SLagrange) is performed. More...
 
subroutine scan_contact_state (contact, currpos, currdisp, infoCTChange, nodeID, elemID, is_init, active, hecMESH, flag_ctAlgo, ndforce)
 This subroutine update contact states, which include. More...
 
subroutine scan_embed_state (flag_ctAlgo, embed, currpos, currdisp, ndforce, infoCTChange, nodeID, elemID, is_init, active, B)
 This subroutine update contact states, which include. More...
 
subroutine remove_duplication_tiedcontact (cstep, hecMESH, fstrSOLID, infoCTChange)
 Scanning contact state. More...
 

Variables

integer(kind=kint), parameter contact_log_level = 0
 Set >= 1 to enable per-node contact log output (for debugging) More...
 

Detailed Description

Contact search and state scanning at search level (all pairs in one tContact)

Function/Subroutine Documentation

◆ remove_duplication_tiedcontact()

subroutine m_fstr_contact_search::remove_duplication_tiedcontact ( integer(kind=kint), intent(in)  cstep,
type( hecmwst_local_mesh ), intent(in)  hecMESH,
type(fstr_solid), intent(inout)  fstrSOLID,
type(fstr_info_contactchange), intent(inout)  infoCTChange 
)

Scanning contact state.

Parameters
[in]cstepcurrent step number
[in]hecmeshtype mesh
[in,out]fstrsolidtype fstr_solid

Definition at line 540 of file fstr_contact_search.f90.

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

◆ scan_contact_state()

subroutine m_fstr_contact_search::scan_contact_state ( type( tcontact ), intent(inout)  contact,
real(kind=kreal), dimension(:), intent(in)  currpos,
real(kind=kreal), dimension(:), intent(in)  currdisp,
type( fstr_info_contactchange ), intent(inout)  infoCTChange,
integer(kind=kint), dimension(:), intent(in)  nodeID,
integer(kind=kint), dimension(:), intent(in)  elemID,
logical, intent(in)  is_init,
logical, intent(out)  active,
type( hecmwst_local_mesh ), intent(in), optional  hecMESH,
character(len=9), intent(in), optional  flag_ctAlgo,
real(kind=kreal), dimension(:), intent(in), optional  ndforce 
)

This subroutine update contact states, which include.

  1. Free to contact or contact to free state changes
  2. Clear lagrangian multipliers when free to contact When flag_ctAlgo is present, implicit-specific processing is performed:
    • TIED direction update with cycle (instead of early return)
    • Tensile force check using ndforce
    • SLagrange update_TangentForce in track_contact_position
      Parameters
      [in,out]contactcontact info
      [in,out]infoctchangecontact change info
      [in]currposcurrent coordinate of each nodes
      [in]currdispcurrent displacement of each nodes
      [in]nodeidglobal nodal ID, just for print out
      [in]elemidglobal elemental ID, just for print out
      [in]is_initwhether initial scan or not
      [out]activeif any in contact
      [in]hecmeshmesh for MPI communication
      [in]flag_ctalgocontact analysis algorithm flag (implicit only)
      [in]ndforcenodal force (implicit only)

Definition at line 144 of file fstr_contact_search.f90.

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

◆ scan_embed_state()

subroutine m_fstr_contact_search::scan_embed_state ( character(len=9), intent(in)  flag_ctAlgo,
type( tcontact ), intent(inout)  embed,
real(kind=kreal), dimension(:), intent(in)  currpos,
real(kind=kreal), dimension(:), intent(in)  currdisp,
real(kind=kreal), dimension(:), intent(in)  ndforce,
type( fstr_info_contactchange ), intent(inout)  infoCTChange,
integer(kind=kint), dimension(:), intent(in)  nodeID,
integer(kind=kint), dimension(:), intent(in)  elemID,
logical, intent(in)  is_init,
logical, intent(out)  active,
real(kind=kreal), dimension(:), optional, target  B 
)

This subroutine update contact states, which include.

  1. Free to contact or contact to free state changes
  2. Clear lagrangian multipliers when free to contact
    Parameters
    [in]flag_ctalgocontact analysis algorithm flag
    [in,out]embedcontact info
    [in,out]infoctchangecontact change info
    [in]currposcurrent coordinate of each nodes
    [in]currdispcurrent displacement of each nodes
    [in]ndforcenodal force
    [in]nodeidglobal nodal ID, just for print out
    [in]elemidglobal elemental ID, just for print out
    [in]is_initwhether initial scan or not
    [out]activeif any in contact
    bnodal force residual

Definition at line 399 of file fstr_contact_search.f90.

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

◆ track_contact_position()

subroutine m_fstr_contact_search::track_contact_position ( integer, intent(in)  nslave,
type( tcontact ), intent(inout)  contact,
real(kind=kreal), dimension(:), intent(in)  currpos,
real(kind=kreal), dimension(:), intent(in)  currdisp,
type( fstr_info_contactchange ), intent(inout)  infoCTChange,
integer(kind=kint), dimension(:), intent(in)  nodeID,
integer(kind=kint), dimension(:), intent(in)  elemID,
character(len=9), intent(in), optional  flag_ctAlgo 
)

This subroutine tracks down next contact position after a finite slide When flag_ctAlgo is present, implicit-specific processing (update_TangentForce for SLagrange) is performed.

Parameters
[in]nslaveslave node
[in,out]contactcontact info
[in,out]infoctchangecontact change info
[in]currposcurrent coordinate of each nodes
[in]currdispcurrent displacement of each nodes
[in]nodeidglobal nodal ID, just for print out
[in]elemidglobal elemental ID, just for print out
[in]flag_ctalgocontact analysis algorithm flag (implicit only)

checking the contact element of last step

Definition at line 25 of file fstr_contact_search.f90.

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

Variable Documentation

◆ contact_log_level

integer(kind=kint), parameter m_fstr_contact_search::contact_log_level = 0

Set >= 1 to enable per-node contact log output (for debugging)

Definition at line 18 of file fstr_contact_search.f90.