![]() |
FrontISTR 5.2.0
Large-scale structural analysis program with finit element method
|
This module provides functions: 1) obtain contact stiffness matrix of each contact pair and assemble it into global stiffness matrix. 2) obtain contact nodal force vector of each contact pair and assemble it into right-hand side vector to update non-equilibrated nodal force vector. 3) Modify Lagrange multiplier-related part of stiffness matrix and right-hand side vector for dealing with prescribed displacement boundary condition. More...
Functions/Subroutines | |
subroutine, public | fstr_addcontactstiffness (cstep, iter, hecmat, fstrmat, fstrsolid) |
This subroutine obtains contact stiffness matrix of each contact pair and assembles it into global stiffness matrix. | |
subroutine, public | fstr_update_ndforce_contact (cstep, hecmesh, hecmat, fstrmat, fstrsolid, conmat) |
This subroutine obtains contact nodal force vector of each contact pair and assembles it into right-hand side vector to update non-equilibrated nodal force vector. | |
subroutine, public | update_ndforce_contact (nnode, ndlocal, id_lagrange, lagrange, ctnforce, cttforce, fstrsolid, hecmat) |
This subroutine assembles contact nodal force vector into right-hand side vector to update non-equilibrated nodal force vector. | |
subroutine, public | fstr_ass_load_contact (cstep, hecmesh, hecmat, fstrsolid, fstrmat) |
This subroutine adds initial contact force vector to the right-hand side vector \at the beginning of each substep calculation. | |
subroutine, public | fstr_mat_ass_bc_contact (hecmat, fstrmat, inode, idof, rhs) |
Modify Lagrange multiplier-related part of stiffness matrix and right-hand side vector for dealing with prescribed displacement boundary condition. | |
This module provides functions: 1) obtain contact stiffness matrix of each contact pair and assemble it into global stiffness matrix. 2) obtain contact nodal force vector of each contact pair and assemble it into right-hand side vector to update non-equilibrated nodal force vector. 3) Modify Lagrange multiplier-related part of stiffness matrix and right-hand side vector for dealing with prescribed displacement boundary condition.
subroutine, public m_addcontactstiffness::fstr_addcontactstiffness | ( | integer(kind=kint) | cstep, |
integer(kind=kint) | iter, | ||
type(hecmwst_matrix) | hecmat, | ||
type(fstrst_matrix_contact_lagrange) | fstrmat, | ||
type(fstr_solid) | fstrsolid | ||
) |
This subroutine obtains contact stiffness matrix of each contact pair and assembles it into global stiffness matrix.
cstep | current loding step |
hecmat | type hecmwST_matrix |
fstrsolid | type fstr_solid |
fstrmat | type fstrST_matrix_contact_lagrange |
Definition at line 39 of file fstr_AddContactStiff.f90.
subroutine, public m_addcontactstiffness::fstr_ass_load_contact | ( | integer(kind=kint) | cstep, |
type(hecmwst_local_mesh) | hecmesh, | ||
type(hecmwst_matrix) | hecmat, | ||
type(fstr_solid) | fstrsolid, | ||
type(fstrst_matrix_contact_lagrange) | fstrmat | ||
) |
This subroutine adds initial contact force vector to the right-hand side vector \at the beginning of each substep calculation.
hecmesh | type hecmwST_local_mesh |
hecmat | type hecmwST_matrix |
fstrsolid | type fstr_solid |
fstrmat | type fstrST_matrix_contact_lagrange |
cstep | current step |
Definition at line 456 of file fstr_AddContactStiff.f90.
subroutine, public m_addcontactstiffness::fstr_mat_ass_bc_contact | ( | type(hecmwst_matrix) | hecmat, |
type(fstrst_matrix_contact_lagrange) | fstrmat, | ||
integer(kind=kint) | inode, | ||
integer(kind=kint) | idof, | ||
real(kind=kreal) | rhs | ||
) |
Modify Lagrange multiplier-related part of stiffness matrix and right-hand side vector for dealing with prescribed displacement boundary condition.
hecmat | hecmwST_matrix |
fstrmat | fstrST_matrix_contact_lagrange |
idof | number of node; degree of freedom |
rhs | value of prescribed displacement |
Definition at line 535 of file fstr_AddContactStiff.f90.
subroutine, public m_addcontactstiffness::fstr_update_ndforce_contact | ( | integer(kind=kint) | cstep, |
type(hecmwst_local_mesh) | hecmesh, | ||
type(hecmwst_matrix) | hecmat, | ||
type(fstrst_matrix_contact_lagrange) | fstrmat, | ||
type(fstr_solid) | fstrsolid, | ||
type(hecmwst_matrix), optional | conmat | ||
) |
This subroutine obtains contact nodal force vector of each contact pair and assembles it into right-hand side vector to update non-equilibrated nodal force vector.
hecmesh | type hecmwST_local_mesh |
hecmat | type hecmwST_matrix |
fstrsolid | type fstr_solid |
fstrmat | type fstrST_matrix_contact_lagrange |
conmat | type hecmwST_matrix for contact part only |
cstep | current calculation step |
Definition at line 260 of file fstr_AddContactStiff.f90.
subroutine, public m_addcontactstiffness::update_ndforce_contact | ( | integer(kind=kint) | nnode, |
integer(kind=kint), dimension(nnode + 1) | ndlocal, | ||
integer(kind=kint) | id_lagrange, | ||
real(kind=kreal) | lagrange, | ||
real(kind=kreal), dimension((nnode+1)*3+1) | ctnforce, | ||
real(kind=kreal), dimension((nnode+1)*3+1) | cttforce, | ||
type(fstr_solid) | fstrsolid, | ||
type(hecmwst_matrix) | hecmat | ||
) |
This subroutine assembles contact nodal force vector into right-hand side vector to update non-equilibrated nodal force vector.
fstrsolid | type fstr_solid |
hecmat | type hecmwST_matrix |
ndlocal | number of nodes of master segment global number of nodes of contact pair |
id_lagrange | number of Lagrange multiplier |
lagrange | value of Lagrange multiplier |
ctnforce | contact force vector |
cttforce | contact force vector |
Definition at line 425 of file fstr_AddContactStiff.f90.