138
139
140
141#include "implicit_f.inc"
142
143
144
145#include "com01_c.inc"
146#include "com08_c.inc"
147#include "vect01_c.inc"
148
149
150
151 INTEGER NDIM,NV,NEL
152 INTEGER BHOLE(,*),NM
153 my_real sig(nel,ndim), phi(*), flux(4,*), vol(*)
154 TYPE(t_ale_connectivity), INTENT(IN) :: ALE_CONNECT
155
156
157
158 INTEGER I, IE, IV1, IV2, IV3, IV4, IAD2
160
161
162
163 IF(jmult == 0)THEN
164 DO i=lft,llt
165 ie =nft+i
166 iad2 = ale_connect%ee_connect%iad_connect(ie)
167 iv1=ale_connect%ee_connect%connected(iad2 + 1 - 1)
168 iv2=ale_connect%ee_connect%connected(iad2 + 2 - 1)
169 iv3=ale_connect%ee_connect%connected(iad2 + 3 - 1)
170 iv4=ale_connect%ee_connect%connected(iad2 + 4 - 1)
171
172 IF(iv1 <= zero)THEN
173 iv1=ie
174 ELSEIF(bhole(nm,ie) < zero .AND.abs(bhole(nm,iv1)) /= abs(bhole(nmTHEN
175 iv1=ie
176 ENDIF
177 IF(iv2 <= 0)THEN
178 iv2=ie
179 ELSEIF(bhole(nm,ie) < zero .AND.abs(bhole(nm,iv2)) /= abs(bhole(nm,ie)))THEN
180 iv2=ie
181 ENDIF
182 IF(iv3 <= 0)THEN
183 iv3=ie
184 ELSEIF(bhole(nm,ie) < zero .AND.abs(bhole(nm,iv3)) /= abs(bhole(nm,ie)))THEN
185 iv3=ie
186 ENDIF
187 IF(iv4 <= 0)THEN
188 iv4=ie
189 ELSEIF(bhole(nm,ie) < zero .AND.abs(bhole(nm,iv4)) /= absTHEN
190 iv4=ie
191 ENDIF
192 sig(i,nv) = sig(i,nv) + half * dt1 * (
193 . phi(ie)*(flux(1,i)+flux(2,i)+flux(3,i)+flux(4,i))
194 . -phi(iv1)*flux(1,i)-phi(iv2)*flux(2,i)-phi(iv3)*flux(3,i)-phi(iv4)*flux(4,i)
195 . ) / vol(i)
196 ENDDO
197 ELSE
198 DO i=lft,llt
199 ie =nft+i
200 iad2 = ale_connect%ee_connect%iad_connect(ie)
201 iv1=ale_connect%ee_connect%connected(iad2 + 1 - 1)
202 iv2=ale_connect%ee_connect%connected(iad2 + 2 - 1)
203 iv3=ale_connect%ee_connect%connected(iad2 + 3 - 1)
204 iv4=ale_connect%ee_connect%connected(iad2 + 4 - 1)
205 IF(iv1 <= zero)THEN
206 iv1=ie
207 ELSEIF(bhole(nm,ie) < zero .AND.abs(bhole(nm,iv1)) /= abs(bhole(nm,ie)))THEN
208 iv1=ie
209 ENDIF
210 IF(iv2 <= zero)THEN
211 iv2=ie
212 ELSEIF(bhole(nm,ie) < zero .AND.abs(bhole(nm,iv2)) /= abs(bhole(nm,ie)))THEN
213 iv2=ie
214 ENDIF
215 IF(iv3 <= zero)THEN
216 iv3=ie
217 ELSEIF(bhole(nm,ie) < zero .AND.abs(bhole(nm,iv3)) /= abs(bhole(nm,ieTHEN
218 iv3=ie
219 ENDIF
220 IF(iv4 <= zero)THEN
221 iv4=ie
222 ELSEIF(bhole(nm,ie) < zero .AND.abs(bhole(nm,iv4THEN
223 iv4=ie
224 ENDIF
225 voln=vol(i)-dt1 * (flux(1,i)+flux(2,i)+flux(3,i)+flux(4,i))
226 IF (voln > em15) THEN
227 sig(i,nv) = sig(i,nv) + half * dt1 * (phi(ie)* (flux(1,i)+flux(2,i)+flux(3,i)+flux(4,i))
228 . -phi(iv1)*flux(1,i)-phi(iv2)*flux(2,i)-phi(iv3)*flux(3,i)-phi(iv4)*flux(4,i)) /
max(em15,voln)
229 ENDIF
230 ENDDO
231 ENDIF
232
233 RETURN