10 include
'fstr_ctrl_util_f.inc'
27 character( len=80 ) :: control
28 character( len=80 ) :: convcontrol
30 real(kind=kreal) :: converg
31 real(kind=kreal) :: converg_lag
32 real(kind=kreal) :: converg_ddisp
33 real(kind=kreal) :: maxres
35 integer :: num_substep
37 integer :: max_contiter
39 real(kind=kreal) :: initdt
40 real(kind=kreal) :: elapsetime
41 real(kind=kreal) :: mindt
42 real(kind=kreal) :: maxdt
43 real(kind=kreal) :: starttime
44 integer,
pointer :: boundary(:)=>null()
45 integer,
pointer :: load(:)=>null()
46 integer,
pointer :: contact(:)=>null()
47 integer :: timepoint_id
48 integer :: aincparam_id
52 character(HECMW_NAME_LEN) :: name
53 real(kind=kreal) :: ainc_rs
54 real(kind=kreal) :: ainc_rl
55 integer( kind=kint ) :: nrbound_s(10)
56 integer( kind=kint ) :: nrbound_l(10)
57 integer( kind=kint ) :: nrtimes_s
58 integer( kind=kint ) :: nrtimes_l
59 real(kind=kreal) :: ainc_rc
60 integer( kind=kint ) :: cbbound
70 stepinfo%num_substep = 1
71 stepinfo%max_iter = 50
72 stepinfo%max_contiter = 10
74 stepinfo%initdt = 1.d0
75 stepinfo%mindt = 1.d-4
77 stepinfo%elapsetime = 1.d0
78 stepinfo%starttime = 0.d0
79 stepinfo%converg = 1.d-3
80 stepinfo%converg_lag = 1.d-4
81 stepinfo%converg_ddisp = 1.d-8
82 stepinfo%maxres = 1.d+10
83 stepinfo%timepoint_id = 0
84 stepinfo%AincParam_id = 0
88 type(
step_info ),
pointer,
intent(inout) :: stepinfos(:)
92 stepinfos(1)%starttime = 0.d0
93 do i=1,
size(stepinfos)-1
94 stepinfos(i+1)%starttime = stepinfos(i)%starttime + stepinfos(i)%elapsetime
100 integer,
intent(in) :: bnd
101 type(
step_info ),
intent(in) :: stepinfo
103 if( .not.
associated( stepinfo%Boundary ) )
return
109 integer,
intent(in) :: bnd
110 type(
step_info ),
intent(in) :: stepinfo
112 if( .not.
associated( stepinfo%Load ) )
return
118 integer,
intent(in) :: bnd
119 type(
step_info ),
intent(in) :: stepinfo
121 if( .not.
associated( stepinfo%Contact ) )
return
128 if(
associated( step%Boundary ) )
deallocate( step%Boundary )
129 if(
associated( step%Load ) )
deallocate( step%Load )
130 if(
associated( step%Contact ) )
deallocate( step%Contact )
135 integer,
intent(in) :: nfile
137 integer :: i, j, nstep, nbc
140 write( nfile, * )
"-----Information of steps:",nstep
143 write( nfile, * )
" -----Step:",i
144 write(nfile,*) steps(i)%solution, steps(i)%elapsetime, steps(i)%converg, &
145 steps(i)%num_substep, steps(i)%max_iter
146 if(
associated( steps(i)%Boundary ) )
then
147 nbc =
size( steps(i)%Boundary )
148 write(nfile,*)
" Boundary conditions"
149 write(nfile,*) ( steps(i)%Boundary(j),j=1,nbc )
151 if(
associated( steps(i)%Load ) )
then
152 nbc =
size( steps(i)%Load )
153 write(nfile,*)
" External load conditions"
154 write(nfile,*) ( steps(i)%Load(j),j=1,nbc )
156 if(
associated( steps(i)%Contact ) )
then
157 nbc =
size( steps(i)%Contact )
158 write(nfile,*)
" Contact conditions"
159 write(nfile,*) ( steps(i)%Contact(j),j=1,nbc )
169 aincparam%ainc_Rs = 0.25d0
170 aincparam%ainc_Rl = 1.25d0
171 aincparam%NRbound_s = 0
175 aincparam%NRbound_l = 0
179 aincparam%NRtimes_s = 1
180 aincparam%NRtimes_l = 2
181 aincparam%ainc_Rc = 0.25d0
182 aincparam%CBbound = 5