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()
41 integer(kind=kint) :: i
43 write(*,
'(A,I0)')
'ELEMACT_egrp_tot: ', elact%ELEMACT_egrp_tot
44 do i=1,elact%ELEMACT_egrp_tot
45 write(*,*)
'DUMMY : ',i
46 write(*,*)
'GRPID : ',elact%ELEMACT_egrp_GRPID
47 write(*,*)
'EGRPID : ',elact%ELEMACT_egrp_ID
48 write(*,*)
'AMPLITUDE: ',elact%ELEMACT_egrp_amp
49 write(*,*)
'EPSILON : ',elact%ELEMACT_egrp_eps
50 write(*,*)
'DEPENDS : ',elact%ELEMACT_egrp_depends
51 write(*,*)
'THLOWER : ',elact%ELEMACT_egrp_ts_lower
52 write(*,*)
'THUPPER : ',elact%ELEMACT_egrp_ts_upper
57 subroutine stf_dummy( ndof, nn, ecoord, u, stiff, element )
59 integer(kind=kint),
intent(in) :: ndof
60 integer(kind=kint),
intent(in) :: nn
61 real(kind=kreal),
intent(in) :: ecoord(3,nn)
62 real(kind=kreal),
intent(in) :: u(3,nn)
63 type(
telement),
intent(inout) :: element
64 real(kind=kreal),
intent(out) :: stiff(:,:)
66 integer(kind=kint) :: i,j,k,m,n
67 real(kind=kreal) :: dnn, coeff, xmax(3), xmin(3), dl
70 xmax(1:3) = ecoord(1:3,1)
71 xmin(1:3) = ecoord(1:3,1)
74 if( ecoord(k,i) > xmax(k) ) xmax(k) = ecoord(k,i)
75 if( ecoord(k,i) < xmin(k) ) xmin(k) = ecoord(k,i)
78 dl = 0.33333333333d0*((xmax(1)-xmin(1))+(xmax(2)-xmin(2))+(xmax(3)-xmin(3)))
79 if( dl < 1.d-8 ) dl = 1.d0
81 coeff = element%elemact_coeff/dl
90 stiff(m+k,n+k) = stiff(m+k,n+k)-coeff*dnn
95 stiff(m+k,m+k) = stiff(m+k,m+k)+coeff
104 integer(kind=kint),
intent(in) :: ndof
105 integer(kind=kint),
intent(in) :: nn
106 real(kind=kreal),
intent(in) :: ecoord(3,nn)
107 real(kind=kreal),
intent(in) :: u(3,nn)
108 real(kind=kreal),
intent(in) :: du(3,nn)
109 type(
telement),
intent(inout) :: element
110 real(kind=kreal),
intent(out) :: qf(:)
112 integer(kind=kint) :: i,k,m
113 real(kind=kreal) :: dnn, coeff, aveu(3), xmax(3), xmin(3), dl
116 xmax(1:3) = ecoord(1:3,1)
117 xmin(1:3) = ecoord(1:3,1)
120 if( ecoord(k,i) > xmax(k) ) xmax(k) = ecoord(k,i)
121 if( ecoord(k,i) < xmin(k) ) xmin(k) = ecoord(k,i)
124 dl = 0.33333333333d0*((xmax(1)-xmin(1))+(xmax(2)-xmin(2))+(xmax(3)-xmin(3)))
125 if( dl < 1.d-8 ) dl = 1.d0
127 coeff = element%elemact_coeff/dl
132 aveu(k) = aveu(k) + u(k,i) + du(k,i)
135 aveu(:) = aveu(:)*dnn
142 qf(m+k) = coeff*(u(k,i)+du(k,i)-aveu(k))
146 do i=1,
size(element%gausses)
147 element%gausses(i)%strain = 0.d0
148 element%gausses(i)%stress = 0.d0
149 element%gausses(i)%strain_out = 0.d0
150 element%gausses(i)%stress_out = 0.d0
151 if(
associated(element%gausses(i)%istatus) ) element%gausses(i)%istatus = 0
152 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 print_elemact_info(elact)
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.