31 integer(kind=kint),
parameter ::
kcnvl2 = 1
32 integer(kind=kint),
parameter ::
kcnvmax = 2
38 character( len=80 ) :: control
39 character( len=80 ) :: convcontrol
41 real(kind=kreal) :: converg
42 real(kind=kreal) :: converg_lag
43 real(kind=kreal) :: converg_ddisp
44 real(kind=kreal) :: maxres
45 logical :: cnv_check(2,3,2)
46 real(kind=kreal) :: cnv_tol(2,3,2)
48 integer :: num_substep
50 integer :: max_contiter
52 integer :: amp_default_type
53 real(kind=kreal) :: initdt
54 real(kind=kreal) :: elapsetime
55 real(kind=kreal) :: mindt
56 real(kind=kreal) :: maxdt
57 real(kind=kreal) :: starttime
58 integer,
pointer :: boundary(:)=>null()
59 integer,
pointer :: load(:)=>null()
60 integer,
pointer :: contact(:)=>null()
61 integer,
pointer :: elemactivation(:)=>null()
62 integer :: timepoint_id
63 integer :: aincparam_id
67 character(HECMW_NAME_LEN) :: name
68 real(kind=kreal) :: ainc_rs
69 real(kind=kreal) :: ainc_rl
70 integer( kind=kint ) :: nrbound_s(10)
71 integer( kind=kint ) :: nrbound_l(10)
72 integer( kind=kint ) :: nrtimes_s
73 integer( kind=kint ) :: nrtimes_l
74 real(kind=kreal) :: ainc_rc
75 integer( kind=kint ) :: cbbound
80 character(HECMW_NAME_LEN) :: name
81 logical :: given(2,3,2)
82 logical :: check(2,3,2)
83 real(kind=kreal) :: tol(2,3,2)
90 type(
step_info ),
intent(out) :: stepinfo
93 stepinfo%num_substep = 1
94 stepinfo%max_iter = 50
95 stepinfo%max_contiter = 10
98 stepinfo%initdt = 1.d0
99 stepinfo%mindt = 1.d-4
100 stepinfo%maxdt = 1.d0
101 stepinfo%elapsetime = 1.d0
102 stepinfo%starttime = 0.d0
103 stepinfo%converg = 1.d-3
107 stepinfo%converg_lag = 1.d-2
108 stepinfo%converg_ddisp = 1.d-8
109 stepinfo%maxres = 1.d+10
110 stepinfo%timepoint_id = 0
111 stepinfo%AincParam_id = 0
118 type(
step_info ),
intent(inout) :: stepinfo
121 integer :: iq, ig, inorm
123 stepinfo%cnv_check(:,:,:) = .false.
124 stepinfo%cnv_tol(:,:,:) = 0.d0
131 if( .not.
present(cnvparam) )
return
135 if( .not. cnvparam%given(iq,ig,inorm) ) cycle
136 stepinfo%cnv_check(iq,ig,inorm) = cnvparam%check(iq,ig,inorm)
137 stepinfo%cnv_tol(iq,ig,inorm) = cnvparam%tol(iq,ig,inorm)
144 type(
step_info ),
pointer,
intent(inout) :: stepinfos(:)
148 stepinfos(1)%starttime = 0.d0
149 do i=1,
size(stepinfos)-1
150 stepinfos(i+1)%starttime = stepinfos(i)%starttime + stepinfos(i)%elapsetime
156 integer,
intent(in) :: bnd
157 type(
step_info ),
intent(in) :: stepinfo
159 if( .not.
associated( stepinfo%Boundary ) )
return
165 integer,
intent(in) :: bnd
166 type(
step_info ),
intent(in) :: stepinfo
168 if( .not.
associated( stepinfo%Load ) )
return
174 integer,
intent(in) :: bnd
175 type(
step_info ),
intent(in) :: stepinfo
177 if( .not.
associated( stepinfo%Contact ) )
return
183 integer,
intent(in) :: bnd
184 type(
step_info ),
intent(in) :: stepinfo
186 if( .not.
associated( stepinfo%ElemActivation ) )
return
193 if(
associated( step%Boundary ) )
deallocate( step%Boundary )
194 if(
associated( step%Load ) )
deallocate( step%Load )
195 if(
associated( step%Contact ) )
deallocate( step%Contact )
196 if(
associated( step%ElemActivation ) )
deallocate( step%ElemActivation )
204 aincparam%ainc_Rs = 0.5d0
205 aincparam%ainc_Rl = 1.75d0
206 aincparam%NRbound_s = 0
210 aincparam%NRbound_l = 0
214 aincparam%NRtimes_s = 2
215 aincparam%NRtimes_l = 2
216 aincparam%ainc_Rc = 0.25d0
217 aincparam%CBbound = 5
225 cnvparam%given = .false.
226 cnvparam%check = .false.
This module manages step information.
logical function iscontactactive(bnd, stepinfo)
Is contact condition in this step active.
subroutine free_stepinfo(step)
Finalizer.
integer, parameter stepampstep
subroutine init_stepinfo(stepinfo)
Initializer.
integer(kind=kint), parameter kcnvresidual
logical function iselemactivationactive(bnd, stepinfo)
Is elemact condition in this step active.
subroutine init_convergparam(cnvparam)
Initializer.
integer, parameter stepvisco
integer(kind=kint), parameter kcnvtranslation
integer, parameter stepfixedinc
integer(kind=kint), parameter kcnvcorrection
integer(kind=kint), parameter kcnvmax
integer(kind=kint), parameter kcnvl2
subroutine init_aincparam(aincparam)
Initializer.
logical function isboundaryactive(bnd, stepinfo)
Is boundary condition in this step active.
integer, parameter stepampramp
integer(kind=kint), parameter kcnvlagrange
subroutine setup_stepinfo_converg(stepinfo, cnvparam)
Fix the convergence criteria of a step. For each criterion the built-in default is overridden by CONV...
integer(kind=kint), parameter knstmaxit
integer, parameter stepautoinc
integer(kind=kint), parameter knstdresn
integer(kind=kint), parameter knstsumit
integer(kind=kint), parameter knstciter
subroutine setup_stepinfo_starttime(stepinfos)
logical function isloadactive(bnd, stepinfo)
Is external load in this step active.
integer(kind=kint), parameter kcnvrotation
integer, parameter stepstatic
Step control such as active boundary condition, convergent condition etc.
Convergence criteria of !CONVERG_PARAM, indexed like step_infocnv_check.