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