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 reset_contact_force (contact, currpos, lslave, omaster, opos, odirec, B)
 This subroutine update contact force in case that contacting element is changed. More...
 
subroutine track_contact_position (flag_ctAlgo, nslave, contact, currpos, currdisp, infoCTChange, nodeID, elemID, B)
 This subroutine tracks down next contact position after a finite slide. More...
 
subroutine track_contact_position_exp (nslave, contact, currpos, currdisp, infoCTChange, nodeID, elemID)
 This subroutine tracks down next contact position after a finite slide. More...
 
subroutine scan_contact_state (flag_ctAlgo, contact, currpos, currdisp, ndforce, infoCTChange, nodeID, elemID, is_init, active, B)
 This subroutine update contact states, which include. More...
 
subroutine scan_contact_state_exp (contact, currpos, currdisp, infoCTChange, nodeID, elemID, is_init, active)
 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...
 

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 795 of file fstr_contact_search.f90.

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

◆ reset_contact_force()

subroutine m_fstr_contact_search::reset_contact_force ( type( tcontact ), intent(inout)  contact,
real(kind=kreal), dimension(:), intent(in)  currpos,
integer, intent(in)  lslave,
integer, intent(in)  omaster,
real(kind=kreal), dimension(2), intent(in)  opos,
real(kind=kreal), dimension(3), intent(in)  odirec,
real(kind=kreal), dimension(:), intent(inout)  B 
)

This subroutine update contact force in case that contacting element is changed.

Parameters
[in,out]contactcontact info
[in]currposcurrent coordinate of each nodes
[in]lslaveslave node
[in]omasterformer master element
[in]oposformer contact pos
[in]odirecformer contact direction
[in,out]bnodal force residual

Definition at line 21 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 ( character(len=9), intent(in)  flag_ctAlgo,
type( tcontact ), intent(inout)  contact,
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]contactcontact 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 333 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_exp()

subroutine m_fstr_contact_search::scan_contact_state_exp ( 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 
)

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

Definition at line 514 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 654 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 ( character(len=9), intent(in)  flag_ctAlgo,
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,
real(kind=kreal), dimension(:), intent(inout)  B 
)

This subroutine tracks down next contact position after a finite slide.

Parameters
[in]flag_ctalgocontact analysis algorithm flag
[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,out]bnodal force residual

checking the contact element of last step

Definition at line 118 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_exp()

subroutine m_fstr_contact_search::track_contact_position_exp ( 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 
)

This subroutine tracks down next contact position after a finite slide.

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

checking the contact element of last step

Definition at line 232 of file fstr_contact_search.f90.

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