44 use element_mod , only : nixs
45
46
47
48#include "implicit_f.inc"
49
50
51
52#include "mvsiz_p.inc"
53
54
55
56#include "scr18_c.inc"
57
58
59
60 INTEGER, INTENT(IN) :: JALE
61 INTEGER, INTENT(IN) :: ISMSTR
62 INTEGER, INTENT(IN) :: JEUL
63 INTEGER, INTENT(IN) :: JLAG
64 INTEGER NPE,G_PLA,G_EPSD,NEL,
65 . NC(MVSIZ,NPE), MXT(*), NGL(*),NGEO(*),
66 . IXS(NIXS,*),IXSP(NPE-8,*), IPERM1(NPE),IPERM2(NPE)
67
69 . x(3,*),v(3,*),w(3,*), vis(*),
70 . xx(mvsiz,npe), yy(mvsiz,npe), zz(mvsiz,npe),
71 . vx(mvsiz,npe),vy(mvsiz,npe),vz(mvsiz,npe),
72 . vdxx(mvsiz,npe), vdyy(mvsiz,npe), vdzz(mvsiz,npe),
73 . vdx(*), vdy(*), vdz(*),vd2(*),offg(*),off(*),
74 . fx(mvsiz,npe), fy(mvsiz,npe), fz(mvsiz,npe), epsdg(*),
75 . sigg(nel,6),eintg(*),rhog(*),qg(*),stig(mvsiz,npe),eplasm(*),
76 . conden(mvsiz,npe)
77 DOUBLE PRECISION
78 . SAV(NEL,3*NPE)
79
80
81
82 INTEGER I,N,N1,N2,NN,IUN,MXT_1
84 . off_l
85
86 off_l = zero
87 iun=1
88
89 mxt_1 = ixs(1,1)
90 DO i=1,nel
91 vis(i)=zero
92 vd2(i)=zero
93 ngeo(i)=ixs(10,i)
94 ngl(i) =ixs(11,i)
95 mxt(i) =mxt_1
96 nc(i,1)=ixs(2,i)
97 nc(i,2)=ixs(3,i)
98 nc(i,3)=ixs(4,i)
99 nc(i,4)=ixs(5,i)
100 nc(i,5)=ixs(6,i)
101 nc(i,6)=ixs(7,i)
102 nc(i,7)=ixs(8,i)
103 nc(i,8)=ixs(9,i)
104 eintg(i)=zero
105 rhog(i)=zero
106 qg(i)=zero
107 sigg(i,1)=zero
108 sigg(i,2)=zero
109 sigg(i,3)=zero
110 sigg(i,4)=zero
111 sigg(i,5)=zero
112 sigg(i,6)=zero
113 stig(i,1)=zero
114 stig(i,2)=zero
115 stig(i,3)=zero
116 stig(i,4)=zero
117 stig(i,5)=zero
118 stig(i,6)=zero
119 stig(i,7)=zero
120 stig(i,8)=zero
121 conden(i,1:8)=zero
122 ENDDO
123 IF (g_pla > 0) THEN
124 DO i=1,nel
125 eplasm(i)=zero
126 ENDDO
127 ENDIF
128 IF (g_epsd > 0) THEN
129 DO i=1,nel
130 epsdg(i)=zero
131 ENDDO
132 ENDIF
133
134 DO n=9,npe
135 DO i=1,nel
136 nc(i,n) =ixsp(n-8,i)
137 stig(i,n)=zero
138 conden(i,n)=zero
139 ENDDO
140 ENDDO
141
142 IF (jlag==0)THEN
143 DO i=1,nel
144 vdx(i)=zero
145 vdy(i)=zero
146 vdz(i)=zero
147 ENDDO
148 ENDIF
149
150 DO n=1,npe
151
152
153
154 IF(ismstr==1.OR.(ismstr==2.AND.idtmin(1)==3))THEN
155
156 DO i=1,nel
157 IF(offg(i)>one)THEN
158 xx(i,n)=sav(i,n)
159 yy(i,n)=sav(i,n+npe)
160 zz(i,n)=sav(i,n+2*npe)
161 off(i) = offg(i)-one
162 ELSE
163 nn =
max(iun,nc(i,n))
164 xx(i,n)=x(1,nn)
165 yy(i,n)=x(2,nn)
166 zz(i,n)=x(3,nn)
167 sav(i,n) =xx(i,n)
168 sav(i,n+npe) =yy(i,n)
169 sav(i,n+npe*2)=zz(i,n)
170 off(i) = offg(i)
171 ENDIF
172 ENDDO
173
174 ELSE
175
176 DO i=1,nel
177 nn =
max(iun,nc(i,n))
178 xx(i,n)=x(1,nn)
179 yy(i,n)=x(2,nn)
180 zz(i,n)=x(3,nn)
181 off(i) =
min(one,abs(offg(i)))
182 off_l =
min(off_l,offg(i))
183 ENDDO
184
185 ENDIF
186
187 DO i=1,nel
188 nn =
max(iun,nc(i,n))
189 vx(i,n)=v(1,nn)
190 vy(i,n)=v(2,nn)
191 vz(i,n)=v(3,nn)
192 fx(i,n)=zero
193 fy(i,n)=zero
194 fz(i,n)=zero
195 ENDDO
196 IF(off_l<0.)THEN
197 DO i=1,nel
198 IF(offg(i)<0.)THEN
199 vx(i,n)=zero
200 vy(i,n)=zero
201 vz(i,n)=zero
202 ENDIF
203 ENDDO
204 ENDIF
205
206 IF (jlag==0)THEN
207
208 IF(jale/=0)THEN
209 DO i=1,nel
210 nn =
max(iun,nc(i,n))
211 vdxx(i,n)=vx(i,n)-w(1,nn)
212 vdyy(i,n)=vy(i,n)-w(2,nn)
213 vdzz(i,n)=vz(i,n)-w(3,nn)
214 ENDDO
215 ELSEIF(jeul/=0)THEN
216 DO i=1,nel
217 vdxx(i,n)=vx(i,n)
218 vdyy(i,n)=vy(i,n)
219 vdzz(i,n)=vz(i,n)
220 ENDDO
221 ENDIF
222
223 DO i=1,nel
224 vdx(i)=vdx(i)+vdxx(i,n)
225 vdy(i)=vdy(i)+vdyy(i,n)
226 vdz(i)=vdz(i)+vdzz(i,n)
227 ENDDO
228 ENDIF
229 ENDDO
230
231 IF (jlag==0)THEN
232 DO i=1,nel
233 vdx(i)=fourth*vdx(i)
234 vdy(i)=fourth*vdy(i)
235 vdz(i)=fourth*vdz(i)
236 vd2(i)=(vdx(i)**2+vdy(i)**2+vdz(i)**2)
237 ENDDO
238 ENDIF
239
240 DO n=9,npe
241 n1=iperm1(n)
242 n2=iperm2(n)
243 DO i=1,nel
244 IF(nc(i,n)==0)THEN
245 xx(i,n) = half*(xx(i,n1)+xx(i,n2))
246 yy(i,n) = half*(yy(i,n1)+yy(i,n2))
247 zz(i,n) = half*(zz(i,n1)+zz(i,n2))
248 vx(i,n) = half*(vx(i,n1)+vx(i,n2))
249 vy(i,n) = half*(vy(i,n1)+vy(i,n2))
250 vz(i,n) = half*(vz(i,n1)+vz(i,n2))
251 ENDIF
252 ENDDO
253 ENDDO
254
255 RETURN