FrontISTR  5.9.0
Large-scale structural analysis program with finit element method
fstr_contact_interference.f90
Go to the documentation of this file.
1 !-------------------------------------------------------------------------------
2 ! Copyright (c) 2019 FrontISTR Commons
3 ! This software is released under the MIT License, see LICENSE.txt
4 !-------------------------------------------------------------------------------
7  use hecmw
8  use mcontactdef
9  implicit none
10 
11  public :: set_shrink_factor
12 
13 contains
14 
15  subroutine set_shrink_factor(ctime, cstate, etime, if_type)
16  real(kind=kreal),intent(in) :: ctime, etime
17  type(tcontactstate), intent(inout) :: cstate
18  integer, intent(in) :: if_type
19 
20  if (if_type == c_if_slave .and. cstate%init_pos == 0.d0) then
21  cstate%shrink_factor = 0.0d0; return
22  end if
23  cstate%shrink_factor = cstate%time_factor*ctime + cstate%init_pos
24  if(ctime >= etime) cstate%shrink_factor = cstate%end_pos
25 
26  end subroutine set_shrink_factor
27 
28  subroutine get_shrink_elemact_surf(cstate, coords, nnode)
29  use m_fstr_timeinc
30  integer(kind=kint) :: nnode, i
31  type(tcontactstate) :: cstate
32  real(kind=kreal) :: coords(:)
33  real(kind=kreal) :: d(3)
34 
35  d = - cstate%shrink_factor * cstate%direction(1:3)
36 
37  do i = 1, nnode
38  coords(1+i*3:(i+1)*3) = coords(1+i*3:(i+1)*3) + d(1:3)
39  enddo
40 
41  end subroutine get_shrink_elemact_surf
42 
Definition: hecmw.f90:6
This module provides interference fit (shrink) functions for contact.
subroutine get_shrink_elemact_surf(cstate, coords, nnode)
subroutine, public set_shrink_factor(ctime, cstate, etime, if_type)
This module provides functions to deal with time and increment of stress analysis.
This module manages the data structure for contact calculation.
integer, parameter c_if_slave
contact interference type
This structure records contact status.