![]() |
FrontISTR
5.9.0
Large-scale structural analysis program with finit element method
|
This module provides functions of reconstructing. More...
Functions/Subroutines | |
| integer(kind=kint) function, public | fstr_get_num_lagrange_pernode (algtype) |
| subroutine, public | fstr_save_originalmatrixstructure (hecMAT) |
| This subroutine saves original matrix structure constructed originally by hecMW_matrix. More... | |
| subroutine, public | fstr_mat_con_contact (cstep, contact_algo, hecMAT, fstrSOLID, hecLagMAT, infoCTChange, conMAT, is_contact_active_flag) |
| this subroutine reconstructs node-based (stiffness) matrix structure \corresponding to contact state More... | |
| logical function, public | fstr_is_matrixstruct_symmetric (fstrSOLID, hecMESH) |
| this function judges whether sitiffness matrix is symmetric or not More... | |
| logical function, public | fstr_is_contactalag_symmetric (fstrSOLID, hecMESH) |
| this function judges whether the ALagrange contact tangent is symmetric or not More... | |
| logical function, public | fstr_is_material_symmetric (fstrSOLID, hecMESH) |
| this function judges whether all materials yield a symmetric tangent stiffness More... | |
| subroutine, public | fstr_set_lagrange_diagonal (hecLagMAT, ilag, value) |
| Set diagonal component value for specified Lagrange multiplier. More... | |
| real(kind=kreal) function, public | fstr_get_lagrange_diagonal (hecLagMAT, ilag) |
| Get diagonal component value for specified Lagrange multiplier. More... | |
| logical function, public | fstr_s2s_profile_needs_refresh (cstep, contact_algo, fstrSOLID, conMAT) |
| S2S mortar profile-invariant check (read-only companion to the reservation in getNewListOFrelatednodesANDLagrangeMultipliers_ss / register_pair_to_sparsity). More... | |
This module provides functions of reconstructing.
| real(kind=kreal) function, public fstr_matrix_con_contact::fstr_get_lagrange_diagonal | ( | type(hecmwst_matrix_lagrange), intent(in) | hecLagMAT, |
| integer(kind=kint), intent(in) | ilag | ||
| ) |
Get diagonal component value for specified Lagrange multiplier.
| [in] | heclagmat | hecmwST_matrix_lagrange |
| [in] | ilag | Lagrange multiplier index (1-based) |
Definition at line 377 of file fstr_mat_con_contact.f90.
| integer(kind=kint) function, public fstr_matrix_con_contact::fstr_get_num_lagrange_pernode | ( | integer(kind=kint) | algtype | ) |
| algtype | current loading step |
Definition at line 39 of file fstr_mat_con_contact.f90.
| logical function, public fstr_matrix_con_contact::fstr_is_contactalag_symmetric | ( | type(fstr_solid ) | fstrSOLID, |
| type(hecmwst_local_mesh) | hecMESH | ||
| ) |
this function judges whether the ALagrange contact tangent is symmetric or not
Definition at line 310 of file fstr_mat_con_contact.f90.
| logical function, public fstr_matrix_con_contact::fstr_is_material_symmetric | ( | type(fstr_solid ) | fstrSOLID, |
| type(hecmwst_local_mesh) | hecMESH | ||
| ) |
this function judges whether all materials yield a symmetric tangent stiffness
Definition at line 329 of file fstr_mat_con_contact.f90.
| logical function, public fstr_matrix_con_contact::fstr_is_matrixstruct_symmetric | ( | type(fstr_solid ) | fstrSOLID, |
| type(hecmwst_local_mesh) | hecMESH | ||
| ) |
this function judges whether sitiffness matrix is symmetric or not
Definition at line 290 of file fstr_mat_con_contact.f90.
| subroutine, public fstr_matrix_con_contact::fstr_mat_con_contact | ( | integer(kind=kint) | cstep, |
| integer(kind=kint) | contact_algo, | ||
| type(hecmwst_matrix) | hecMAT, | ||
| type(fstr_solid) | fstrSOLID, | ||
| type(hecmwst_matrix_lagrange) | hecLagMAT, | ||
| type(fstr_info_contactchange) | infoCTChange, | ||
| type (hecmwst_matrix) | conMAT, | ||
| logical, intent(in) | is_contact_active_flag | ||
| ) |
this subroutine reconstructs node-based (stiffness) matrix structure \corresponding to contact state
| cstep | current loading step |
| contact_algo | current loading step |
| hecmat | type hecmwST_matrix |
| fstrsolid | type fstr_solid |
| heclagmat | type hecmwST_matrix_lagrange |
| infoctchange | type fstr_contactChange |
Definition at line 60 of file fstr_mat_con_contact.f90.
| logical function, public fstr_matrix_con_contact::fstr_s2s_profile_needs_refresh | ( | integer(kind=kint), intent(in) | cstep, |
| integer(kind=kint), intent(in) | contact_algo, | ||
| type(fstr_solid), intent(in) | fstrSOLID, | ||
| type(hecmwst_matrix), intent(in) | conMAT | ||
| ) |
S2S mortar profile-invariant check (read-only companion to the reservation in getNewListOFrelatednodesANDLagrangeMultipliers_ss / register_pair_to_sparsity).
Returns .true. if any currently-active (slave_surf, master) mortar pair has a slave-node x master-node coupling that is NOT present in the matrix profile of conMAT. Such a missing coupling means the active master has drifted beyond the reserved 1-ring via a silent facet-hop / re-association (one that does not increment the structural change counters, so fstr_is_matrixStructure_changed stays false), and the next contact stiffness assembly (calcu_contact_stiffness_SurfSurf -> hecmw_mat_ass_elem) would hit an out-of-profile connectivity and abort in hecmw_mat_add_node. Reporting it here lets the caller force a matrix rebuild first, restoring the invariant.
Only slave x master CROSS couplings are checked: slave-slave and master-master couplings are base FE element couplings (a contact surface element is a face of one solid element, so its nodes are mutually coupled in list_nodeRelated_org and can never drift), whereas the cross terms are exactly what register_pair_to_sparsity adds and the only ones that can be missing. This is necessary and sufficient and avoids any spurious every-iteration refresh. The active master set is obtained from get_unique_map, the same enumeration getIntGap uses inside the assembly, so the checked footprint matches exactly.
method-gated to CONTACTS2S + ALag (N2S and SLagrange paths untouched). Per-rank (local) decision, mirroring the existing per-rank fstr_is_matrixStructure_changed gate; the collective solver re-init rides the existing contact_changed_global allreduce.
| [in] | cstep | current loading step |
| [in] | contact_algo | contact algorithm (kcaALagrange/kcaSLagrange) |
| [in] | fstrsolid | type fstr_solid |
| [in] | conmat | contact matrix (S2S stiffness assembly target) |
Definition at line 512 of file fstr_mat_con_contact.f90.
| subroutine, public fstr_matrix_con_contact::fstr_save_originalmatrixstructure | ( | type(hecmwst_matrix) | hecMAT | ) |
This subroutine saves original matrix structure constructed originally by hecMW_matrix.
| hecmat | type hecmwST_matrix |
Definition at line 49 of file fstr_mat_con_contact.f90.
| subroutine, public fstr_matrix_con_contact::fstr_set_lagrange_diagonal | ( | type(hecmwst_matrix_lagrange), intent(inout) | hecLagMAT, |
| integer(kind=kint), intent(in) | ilag, | ||
| real(kind=kreal), intent(in) | value | ||
| ) |
Set diagonal component value for specified Lagrange multiplier.
| [in,out] | heclagmat | hecmwST_matrix_lagrange |
| [in] | ilag | Lagrange multiplier index (1-based) |
| [in] | value | diagonal component value to set |
Definition at line 357 of file fstr_mat_con_contact.f90.