![]() |
FrontISTR
5.9.0
Large-scale structural analysis program with finit element method
|
Contact search and state scanning at search level (all pairs in one tContact) More...
Functions/Subroutines | |
| subroutine | is_known_master_in_segment (contact, known_masters, n_known, id, is_known) |
Update the known-master set for one slave segment and report whether id is new. When the pair uses SPARSITY_NEIGHBOR, neighbors of already-known masters are also treated as known (their sparsity is pre-registered). If id is genuinely new, it is appended to known_masters so that subsequent IPs in the same segment don't double-count it. More... | |
| 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... | |
| subroutine | scan_contact_state_ss (contact, currpos, infoCTChange, is_init, active) |
| Scan the contact state of every integration point of every slave segment of one SURF-SURF (mortar) contact pair. Unlike the NODE-SURF scan there is no per-node tensile-force release: a segment integration point is released by the gap criterion in track_contact_position_ss, so no nodal force vector is needed here. More... | |
| subroutine | track_contact_position_ss (coord, state, sSurf, ncoord, contact, currpos, infoCTChange, counted_nbr, counted_byd) |
Variables | |
| integer(kind=kint), parameter | contact_log_level = 0 |
| Set >= 1 to enable per-node contact log output (for debugging) More... | |
Contact search and state scanning at search level (all pairs in one tContact)
| subroutine m_fstr_contact_search::is_known_master_in_segment | ( | type(tcontact), intent(in) | contact, |
| integer(kind=kint), dimension(:), intent(inout) | known_masters, | ||
| integer(kind=kint), intent(inout) | n_known, | ||
| integer(kind=kint), intent(in) | id, | ||
| logical, intent(out) | is_known | ||
| ) |
Update the known-master set for one slave segment and report whether id is new. When the pair uses SPARSITY_NEIGHBOR, neighbors of already-known masters are also treated as known (their sparsity is pre-registered). If id is genuinely new, it is appended to known_masters so that subsequent IPs in the same segment don't double-count it.
| [in,out] | known_masters | master ids known to this slave segment |
| [in,out] | n_known | current length of known_masters |
| [in] | id | master id to test |
Definition at line 29 of file fstr_contact_search.f90.
| 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.
| [in] | cstep | current step number |
| [in] | hecmesh | type mesh |
| [in,out] | fstrsolid | type fstr_solid |
Definition at line 610 of file fstr_contact_search.f90.
| 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.
| [in,out] | contact | contact info |
| [in,out] | infoctchange | contact change info |
| [in] | currpos | current coordinate of each nodes |
| [in] | currdisp | current displacement of each nodes |
| [in] | nodeid | global nodal ID, just for print out |
| [in] | elemid | global elemental ID, just for print out |
| [in] | is_init | whether initial scan or not |
| [out] | active | if any in contact |
| [in] | hecmesh | mesh for MPI communication |
| [in] | flag_ctalgo | contact analysis algorithm flag (implicit only) |
| [in] | ndforce | nodal force (implicit only) |
Definition at line 209 of file fstr_contact_search.f90.
| subroutine m_fstr_contact_search::scan_contact_state_ss | ( | type( tcontact ), intent(inout) | contact, |
| real(kind=kreal), dimension(:), intent(in) | currpos, | ||
| type( fstr_info_contactchange ), intent(inout) | infoCTChange, | ||
| logical, intent(in) | is_init, | ||
| logical, intent(out) | active | ||
| ) |
Scan the contact state of every integration point of every slave segment of one SURF-SURF (mortar) contact pair. Unlike the NODE-SURF scan there is no per-node tensile-force release: a segment integration point is released by the gap criterion in track_contact_position_ss, so no nodal force vector is needed here.
| [in,out] | contact | contact info |
| [in,out] | infoctchange | contact change info |
| [in] | currpos | current coordinate of each nodes |
| [in] | is_init | whether initial scan or not |
| [out] | active | if any in contact |
Definition at line 668 of file fstr_contact_search.f90.
| 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.
| [in] | flag_ctalgo | contact analysis algorithm flag |
| [in,out] | embed | contact info |
| [in,out] | infoctchange | contact change info |
| [in] | currpos | current coordinate of each nodes |
| [in] | currdisp | current displacement of each nodes |
| [in] | ndforce | nodal force |
| [in] | nodeid | global nodal ID, just for print out |
| [in] | elemid | global elemental ID, just for print out |
| [in] | is_init | whether initial scan or not |
| [out] | active | if any in contact |
| b | nodal force residual |
Definition at line 473 of file fstr_contact_search.f90.
| 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.
| [in] | nslave | slave node |
| [in,out] | contact | contact info |
| [in,out] | infoctchange | contact change info |
| [in] | currpos | current coordinate of each nodes |
| [in] | currdisp | current displacement of each nodes |
| [in] | nodeid | global nodal ID, just for print out |
| [in] | elemid | global elemental ID, just for print out |
| [in] | flag_ctalgo | contact analysis algorithm flag (implicit only) |
checking the contact element of last step
Definition at line 58 of file fstr_contact_search.f90.
| subroutine m_fstr_contact_search::track_contact_position_ss | ( | real(kind=kreal), dimension(:), intent(inout) | coord, |
| type( tcontactstate ), intent(inout) | state, | ||
| type( tcontactsurf ), intent(in) | sSurf, | ||
| real(kind=kreal), dimension(2), intent(in) | ncoord, | ||
| type( tcontact ), intent(inout) | contact, | ||
| real(kind=kreal), dimension(:), intent(in) | currpos, | ||
| type( fstr_info_contactchange ), intent(inout) | infoCTChange, | ||
| logical, intent(inout) | counted_nbr, | ||
| logical, intent(inout) | counted_byd | ||
| ) |
| [in,out] | contact | contact info |
| [in,out] | state | slave intp state |
| [in] | ssurf | slave surface (for inward normal) |
| [in] | ncoord | IP natural coord on slave surface |
| [in,out] | infoctchange | contact change info |
| [in,out] | counted_nbr | contact2neighbor counted for this slave segment |
| [in,out] | counted_byd | contact2beyond counted for this slave segment |
| [in] | currpos | current coordinate of each nodes |
| [in,out] | coord | position of int point |
checking the contact element of last step
Definition at line 823 of file fstr_contact_search.f90.
| 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 20 of file fstr_contact_search.f90.