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, 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, ctpos, localclr)
 Wrapper for project_Point2Element that takes tSurfElement structure This subroutine handles element coordinate extraction from tSurfElement. 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 346 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 268 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 250 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), 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
ctposcurr contact position( natural coord )
localclrclearance of contact local coord

Definition at line 18 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 138 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), dimension(2), intent(in), optional  ctpos,
real(kind=kreal), intent(in), optional  localclr 
)

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]ctposcurrent contact position (natural coord)
[in]localclrclearance of contact local coord

Definition at line 224 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 309 of file fstr_contact_geom.f90.

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