14 integer(kind=kint) :: elemact_egrp_tot
15 integer(kind=kint),
pointer :: elemact_egrp_grpid (:) =>null()
16 integer(kind=kint),
pointer :: elemact_egrp_id (:) =>null()
17 integer(kind=kint),
pointer :: elemact_egrp_amp (:) =>null()
18 real(kind=kreal),
pointer :: elemact_egrp_eps(:) =>null()
19 integer(kind=kint),
pointer :: elemact_egrp_depends(:) =>null()
20 real(kind=kreal),
pointer :: elemact_egrp_ts_lower(:) =>null()
21 real(kind=kreal),
pointer :: elemact_egrp_ts_upper(:) =>null()
22 integer(kind=kint),
pointer :: elemact_egrp_state (:) =>null()
23 integer(kind=kint) :: elemact_n_changed = 0
24 logical :: elemact_conv_deferred = .false.
40 subroutine stf_dummy( ndof, nn, ecoord, u, stiff, element )
42 integer(kind=kint),
intent(in) :: ndof
43 integer(kind=kint),
intent(in) :: nn
44 real(kind=kreal),
intent(in) :: ecoord(3,nn)
45 real(kind=kreal),
intent(in) :: u(3,nn)
46 type(
telement),
intent(inout) :: element
47 real(kind=kreal),
intent(out) :: stiff(:,:)
49 integer(kind=kint) :: i,j,k,m,n
50 real(kind=kreal) :: dnn, coeff, xmax(3), xmin(3), dl
53 xmax(1:3) = ecoord(1:3,1)
54 xmin(1:3) = ecoord(1:3,1)
57 if( ecoord(k,i) > xmax(k) ) xmax(k) = ecoord(k,i)
58 if( ecoord(k,i) < xmin(k) ) xmin(k) = ecoord(k,i)
61 dl = 0.33333333333d0*((xmax(1)-xmin(1))+(xmax(2)-xmin(2))+(xmax(3)-xmin(3)))
62 if( dl < 1.d-8 ) dl = 1.d0
64 coeff = element%elemact_coeff/dl
73 stiff(m+k,n+k) = stiff(m+k,n+k)-coeff*dnn
78 stiff(m+k,m+k) = stiff(m+k,m+k)+coeff
87 integer(kind=kint),
intent(in) :: ndof
88 integer(kind=kint),
intent(in) :: nn
89 real(kind=kreal),
intent(in) :: ecoord(3,nn)
90 real(kind=kreal),
intent(in) :: u(3,nn)
91 real(kind=kreal),
intent(in) :: du(3,nn)
92 type(
telement),
intent(inout) :: element
93 real(kind=kreal),
intent(out) :: qf(:)
95 integer(kind=kint) :: i,k,m
96 real(kind=kreal) :: dnn, coeff, aveu(3), xmax(3), xmin(3), dl
99 xmax(1:3) = ecoord(1:3,1)
100 xmin(1:3) = ecoord(1:3,1)
103 if( ecoord(k,i) > xmax(k) ) xmax(k) = ecoord(k,i)
104 if( ecoord(k,i) < xmin(k) ) xmin(k) = ecoord(k,i)
107 dl = 0.33333333333d0*((xmax(1)-xmin(1))+(xmax(2)-xmin(2))+(xmax(3)-xmin(3)))
108 if( dl < 1.d-8 ) dl = 1.d0
110 coeff = element%elemact_coeff/dl
115 aveu(k) = aveu(k) + u(k,i) + du(k,i)
118 aveu(:) = aveu(:)*dnn
125 qf(m+k) = coeff*(u(k,i)+du(k,i)-aveu(k))
129 do i=1,
size(element%gausses)
130 element%gausses(i)%strain = 0.d0
131 element%gausses(i)%stress = 0.d0
132 element%gausses(i)%strain_out = 0.d0
133 element%gausses(i)%stress_out = 0.d0
134 if(
associated(element%gausses(i)%istatus) ) element%gausses(i)%istatus = 0
135 if(
associated(element%gausses(i)%fstatus) ) element%gausses(i)%fstatus = 0.d0
This module defined elemact data and function.
integer, parameter kelactd_none
integer, parameter kelact_active
subroutine update_dummy(ndof, nn, ecoord, u, du, qf, element)
integer, parameter kelactd_stress
integer, parameter kelact_undefined
integer, parameter kelact_inactive
integer, parameter kelactd_strain
subroutine stf_dummy(ndof, nn, ecoord, u, stiff, element)
This modules defines a structure to record history dependent parameter in static analysis.
All data should be recorded in every elements.