45
46
47
48#include "implicit_f.inc"
49
50
51
52#include "com08_c.inc"
53#include "impl1_c.inc"
54#include "scr05_c.inc"
55
56
57
58 INTEGER, INTENT(IN) :: NEL,IPRES
59
61 . dxx(*), dxy(*), dxz(*), dyx(*), dyy(*),dyz(*),
62 . dzx(*), dzy(*), dzz(*), d4(*), d5(*), d6(*),
63 . dcxx(*), dcxy(*),dcxz(*), dcyx(*), dcyy(*),dcyz(*),
64 . dczx(*), dczy(*), dczz(*), dc4(*), dc5(*), dc6(*),
65 . dhxx(*), dhxy(*),dhxz(*), dhyx(*), dhyy(*),dhyz(*),
66 . dhzx(*), dhzy(*), dhzz(*),
67 . dh4(*), dh5(*), dh6(*), ddhv(*),
68 . zi,wi,vzl(*),vol(*),volg(*),volo(*),
69 . sig(nel,6),sigzm(*),volm(*),usb(*),eint(*),off(*),offg(*),dti,
70 . offs(*),dvc(*)
71 DOUBLE PRECISION
72 . VOL0DP(*),VOLDP(*)
73
74
75
76 INTEGER I
78 . dv,dvz,ddv,tol,dt1d2,dt1d1
79
80 tol=one-em20
81 DO i=1,nel
82 voldp(i)=half*wi*(volg(i)+vzl(i)*zi)
83 vol(i)=voldp(i)
84 off(i)=offg(i)
85 IF (vol(i)<=zero) THEN
86 vol(i)= em20
87 off(i)= zero
88 ELSEIF(off(i)==zero.OR.offs(i)==two.OR.ismdisp>0)THEN
89 voldp(i)=
max(em20,voldp(i))
90 vol(i)=
max(em20,vol(i))
91 ENDIF
92 ENDDO
93 IF (ipres==1) THEN
94 DO i=1,nel
95
96 dv = ddhv(i)*dt1*zi
97
98 dvz = -(sig(i,3)-sigzm(i)/
max(em20,volm(i)))*usb(i)
99 ddv = (dv+dvz)*off(i)
100 dvc(i) = ddv
101 IF (ddv>tol) THEN
102 vol(i)= em20
103 off(i)= zero
104 ddv = zero
105 ELSEIF(off(i)==zero.OR.offs(i)==two.OR.ismdisp>0)THEN
106 ddv = zero
107 END IF
108
109 IF (iresp==1) vol0dp(i) = vol0dp(i)*(one- ddv)
110 IF(ismdisp>0.OR.offs(i)==two) dvc(i) = dvz
111
112 volo(i) = volo(i)*(one- ddv)
113 eint(i) = eint(i)/(one- ddv)
114 ENDDO
115 ELSE
116 DO i=1,nel
117 dvc(i) = zero
118 ENDDO
119 END IF
120
121 DO i=1,nel
122 dxx(i)=dcxx(i)+zi*dhxx(i)
123 dyy(i)=dcyy(i)+zi*dhyy(i)
124 dzz(i)=dczz(i)+zi*dhzz(i)
125 dxy(i)=dcxy(i)+zi*dhxy(i)
126 dyx(i)=dcyx(i)+zi*dhyx(i)
127 dzx(i)=dczx(i)+zi*dhzx(i)
128 dzy(i)=dczy(i)+zi*dhzy(i)
129 dxz(i)=dcxz(i)+zi*dhxz(i)
130 dyz(i)=dcyz(i)+zi*dhyz(i)
131
132
133
134 ENDDO
135
136 dt1d1=dt1
137 IF (ismdisp>0.AND.iscau==0) dt1d1=zero
138 dt1d2=half*dt1d1
139 DO i=1,nel
140 d4(i) = dxy(i)+dyx(i)
141 . -dt1d1*(dxx(i)*dxy(i)+dyx(i)*dyy(i)+dzx(i)*dzy(i))
142 d5(i) = dyz(i)+dzy(i)
143 . -dt1d1*(dyy(i)*dyz(i)+dzy(i)*dzz(i)+dxy(i)*dxz(i))
144 d6(i) = dxz(i)+dzx(i)
145 . -dt1d1*(dzz(i)*dzx(i)+dxz(i)*dxx(i)+dyz(i)*dyx(i))
146 dxx(i) = dxx(i)
147 . -dt1d2*(dxx(i)*dxx(i)+dyx(i)*dyx(i)+dzx(i)*dzx(i))
148 dyy(i) = dyy(i)
149 . -dt1d2*(dyy(i)*dyy(i)+dzy(i)*dzy(i)+dxy(i)*dxy(i))
150 dzz(i) = dzz(i)
151 . -dt1d2*(dzz(i)*dzz(i)+dxz(i)*dxz(i)+dyz(i)*dyz(i))
152 ENDDO
153
154 RETURN