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

This module provides geometric calculations for contact. More...

Functions/Subroutines

subroutine project_point2element (xyz, etype, nn, elemt, reflen, cstate, isin, distclr, penclr, ctpos, localclr)
 This subroutine find the projection of a slave point onto master surface. More...
 
subroutine project_point2solidelement (xyz, etype, nn, elemt, reflen, cstate, isin, distclr, ctpos, localclr)
 This subroutine find the projection of a slave point onto master surface. More...
 
subroutine project_point2surfelement (xyz, surf, currpos, cstate, isin, distclr, penclr, ctpos, localclr, smoothing)
 Wrapper for project_Point2Element that takes tSurfElement structure This subroutine handles element coordinate extraction from tSurfElement. More...
 
subroutine project_point2surfelement_ss (coord, master_surf, sSurf, ncoord, currpos, cstate, isin, distclr, penclr, ctpos, localclr)
 Mortar projection wrapper. Projects a slave integration point onto a master surface (project_Point2SurfElement), then on contact overrides the contact direction with the SLAVE inward normal. The mortar gap integration (getIntGap/computeContactMaps_ALag) uses statesdirection as its normal, so it must be the slave normal, not the master normal that project_Point2Element sets. Used for both initial activation (CANDIDATE) and tracking, so the direction stays consistent across iterations. More...
 
subroutine getmetrictensor (pos, etype, ele, tensor)
 This subroutine calculate the metric tensor of a elemental surface. More...
 
subroutine dispincrematrix (pos, etype, nnode, ele, tangent, tensor, matrix)
 This subroutine calculate the relation between global disp and displacement along natural coordinate of master surface supposing penetration is small. More...
 
subroutine update_direction (nslave, contact, currpos)
 This subroutine tracks down next contact position after a finite slide. More...
 
subroutine, public cal_node_normal (csurf, isin, surf, currpos, lpos, normal)
 Calculate averaged nodal normal. More...
 

Detailed Description

This module provides geometric calculations for contact.

Function/Subroutine Documentation

◆ cal_node_normal()

subroutine, public m_fstr_contact_geom::cal_node_normal ( integer, intent(in)  csurf,
integer, intent(in)  isin,
type(tsurfelement), dimension(:), intent(in)  surf,
real(kind=kreal), dimension(:), intent(in)  currpos,
real(kind=kreal), dimension(:), intent(in)  lpos,
real(kind=kreal), dimension(3), intent(out)  normal 
)

Calculate averaged nodal normal.

Parameters
[in]csurfcurrent surface element
[in]isinreturn value from isInsideElement()
[in]surfsurface elements
[in]currposcurrent coordinate of each nodes
[in]lposlocal coordinate of contact position
[out]normalaveraged node nomral

Definition at line 398 of file fstr_contact_geom.f90.

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

◆ dispincrematrix()

subroutine m_fstr_contact_geom::dispincrematrix ( real(kind=kreal), dimension(2), intent(in)  pos,
integer, intent(in)  etype,
integer, intent(in)  nnode,
real(kind=kreal), dimension(3,nnode), intent(in)  ele,
real(kind=kreal), dimension(3,2), intent(out)  tangent,
real(kind=kreal), dimension(2,2), intent(out)  tensor,
real(kind=kreal), dimension(2,nnode*3+3), intent(out)  matrix 
)

This subroutine calculate the relation between global disp and displacement along natural coordinate of master surface supposing penetration is small.

Parameters
[in]poscurrent position(local coordinate)
[in]etypesurface element type
[in]nnodenumber of nodes in surface
[in]eleelemental coordinates
[out]tangenttangent basis
[out]tensormetric tensor
[out]matrixrelation between local and global disp increment

Definition at line 323 of file fstr_contact_geom.f90.

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

◆ getmetrictensor()

subroutine m_fstr_contact_geom::getmetrictensor ( real(kind=kreal), dimension(2), intent(in)  pos,
integer, intent(in)  etype,
real(kind=kreal), dimension(:,:), intent(in)  ele,
real(kind=kreal), dimension(2,2), intent(out)  tensor 
)

This subroutine calculate the metric tensor of a elemental surface.

Parameters
[in]poscurrent position(local coordinate)
[in]etypesurface element type
[in]eleelemental coordinates
[out]tensormetric tensor

Definition at line 305 of file fstr_contact_geom.f90.

Here is the call graph for this function:

◆ project_point2element()

subroutine m_fstr_contact_geom::project_point2element ( real(kind=kreal), dimension(3), intent(in)  xyz,
integer, intent(in)  etype,
integer, intent(in)  nn,
real(kind=kreal), dimension(:,:), intent(in)  elemt,
real(kind=kreal), intent(in)  reflen,
type(tcontactstate), intent(inout)  cstate,
logical, intent(out)  isin,
real(kind=kreal), intent(in)  distclr,
real(kind=kreal), intent(in)  penclr,
real(kind=kreal), dimension(2), optional  ctpos,
real(kind=kreal), optional  localclr 
)

This subroutine find the projection of a slave point onto master surface.

Parameters
[in]xyzCoordinates of a spacial point, whose projecting point is to be computed
[in]etypesurface element type
[in]nnnumber of elemental nodes
[in]elemtnodes coordinates of surface element
[in]reflenreference length of surface element
[in,out]cstateRecorde of contact information
[out]isinin contact or not
[in]distclrclearance of contact distance
[in]penclrclearance of penetration depth
ctposcurr contact position( natural coord )
localclrclearance of contact local coord

Definition at line 19 of file fstr_contact_geom.f90.

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

◆ project_point2solidelement()

subroutine m_fstr_contact_geom::project_point2solidelement ( real(kind=kreal), dimension(3), intent(in)  xyz,
integer, intent(in)  etype,
integer, intent(in)  nn,
real(kind=kreal), dimension(:,:), intent(in)  elemt,
real(kind=kreal), intent(in)  reflen,
type(tcontactstate), intent(inout)  cstate,
logical, intent(out)  isin,
real(kind=kreal), intent(in)  distclr,
real(kind=kreal), dimension(3), optional  ctpos,
real(kind=kreal), optional  localclr 
)

This subroutine find the projection of a slave point onto master surface.

Parameters
[in]xyzCoordinates of a spacial point, whose projecting point is to be computed
[in]etypesurface element type
[in]nnnumber of elemental nodes
[in]elemtnodes coordinates of surface element
[in]reflenreference length of surface element
[in,out]cstateRecorde of contact information
[out]isinin contact or not
[in]distclrclearance of contact distance
ctposcurr contact position( natural coord )
localclrclearance of contact local coord

Definition at line 137 of file fstr_contact_geom.f90.

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

◆ project_point2surfelement()

subroutine m_fstr_contact_geom::project_point2surfelement ( real(kind=kreal), dimension(3), intent(in)  xyz,
type(tsurfelement), intent(in)  surf,
real(kind=kreal), dimension(:), intent(in)  currpos,
type(tcontactstate), intent(inout)  cstate,
logical, intent(out)  isin,
real(kind=kreal), intent(in)  distclr,
real(kind=kreal), intent(in)  penclr,
real(kind=kreal), dimension(2), intent(in), optional  ctpos,
real(kind=kreal), intent(in), optional  localclr,
integer(kind=kint), intent(in)  smoothing 
)

Wrapper for project_Point2Element that takes tSurfElement structure This subroutine handles element coordinate extraction from tSurfElement.

Parameters
[in]xyzcoordinates of slave point
[in]surfsurface element structure
[in]currposcurrent coordinate of all nodes
[in,out]cstatecontact state
[out]isinin contact or not
[in]distclrclearance of contact distance
[in]penclrclearance of penetration depth
[in]ctposcurrent contact position (natural coord)
[in]localclrclearance of contact local coord
[in]smoothingkcsNONE or kcsNAGATA

Definition at line 217 of file fstr_contact_geom.f90.

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

◆ project_point2surfelement_ss()

subroutine m_fstr_contact_geom::project_point2surfelement_ss ( real(kind=kreal), dimension(3), intent(in)  coord,
type(tsurfelement), intent(in)  master_surf,
type(tcontactsurf), intent(in)  sSurf,
real(kind=kreal), dimension(2), intent(in)  ncoord,
real(kind=kreal), dimension(:), intent(in)  currpos,
type(tcontactstate), intent(inout)  cstate,
logical, intent(out)  isin,
real(kind=kreal), intent(in)  distclr,
real(kind=kreal), intent(in)  penclr,
real(kind=kreal), dimension(2), intent(in), optional  ctpos,
real(kind=kreal), intent(in), optional  localclr 
)

Mortar projection wrapper. Projects a slave integration point onto a master surface (project_Point2SurfElement), then on contact overrides the contact direction with the SLAVE inward normal. The mortar gap integration (getIntGap/computeContactMaps_ALag) uses statesdirection as its normal, so it must be the slave normal, not the master normal that project_Point2Element sets. Used for both initial activation (CANDIDATE) and tracking, so the direction stays consistent across iterations.

Parameters
[in]coordslave IP position
[in]master_surfmaster surface element
[in]ssurfslave surface (for inward normal)
[in]ncoordIP natural coord on slave surface
[in]currposcurrent coordinate of all nodes
[in,out]cstatecontact state
[out]isinin contact or not
[in]distclrclearance of contact distance
[in]penclrclearance of penetration depth
[in]ctposcurrent contact position (natural coord)
[in]localclrclearance of contact local coord

Definition at line 273 of file fstr_contact_geom.f90.

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

◆ update_direction()

subroutine m_fstr_contact_geom::update_direction ( integer, intent(in)  nslave,
type( tcontact ), intent(inout)  contact,
real(kind=kreal), dimension(:), intent(in)  currpos 
)

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

Parameters
[in]nslaveslave node
[in,out]contactcontact info
[in]currposcurrent coordinate of each nodes

checking the contact element of last step

Definition at line 364 of file fstr_contact_geom.f90.

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