204
205
206
207#include "implicit_f.inc"
208
209
210
211 INTEGER, INTENT(IN) :: NEL,FLAG_MUL,NVARF,IFORM
212 my_real,
INTENT(IN) :: c10,c01,c20,c11,c02,c30,c21,c12,c03,
213 . d1,d2,d3,
214 . coefr, betaf,coefm ,rbulk
215
216 my_real,
DIMENSION(NEL, 3,3),
INTENT(IN) :: matb(nel,3,3)
217
218
219
220 my_real,
DIMENSION(NEL),
INTENT(OUT) :: bi1,bi2,jdet
221 my_real,
DIMENSION(NEL, 3,3),
INTENT(OUT) :: sig
222 my_real,
DIMENSION(NEL, 3),
INTENT(OUT) :: cii
223
224
225
226 my_real,
DIMENSION(NEL,NVARF),
INTENT(INOUT) :: uvarf
227
228
229
230 INTEGER I
231
233 . wmax,lpchain(nel), trace(nel),traceb(nel),j2third(nel),matb2(nel,3,3),
234 . sb1(nel), sb2(nel),sb3(nel),tbnorm(nel),dgamma(nel),i1(nel),
235 . aa,bb,cc,trb2,trb22,
236 . i2(nel),jthird(nel),j4third(nel),eta(nel),ww(nel) ,
237 . dphidi1(nel) ,dphidi2(nel) , dphidj(nel) ,inv2j(nel),
238 . dphi2di1(nel) ,dphi2di2(nel) , dphi2dj(nel),lam_b(3),lam_b_1(3),
239 . bi1_3,bi2_3
240
241 eta(1:nel) = one
242
243 CALL prodmat (matb , matb, matb2, nel)
244
245 DO i = 1,nel
246
247 jdet(i)=matb(i,1,1)*matb(i,2,2)*matb(i,3,3)-matb(i,1,1)*matb(i,2,3)*matb(i,3,2) -
248 . matb(i,3,3)*matb(i,1,2)*matb(i,2,1) +matb(i,1,2)*matb(i,2,3)*matb(i,3,1) +
249 . matb(i,2,1)*matb(i,3,2)*matb(i,1,3) -matb(i,2,2)*matb(i,3,1)*matb(i
250 jdet(i)= sqrt(
max(em20, jdet(i)))
251
252
253 i1(i) = matb(i,1,1)+matb(i,2,2)+matb(i,3,3)
254
255 trb2 = i1(i)**2
256 trb22= matb2(i,1,1) + matb2(i,2,2) +matb2(i,3,3)
257
258 i2(i)= (trb2 - trb22)/two
259
260 IF(jdet(i)>zero) THEN
261 jthird(i) = exp((-third )*log(jdet(i)))
262 j2third(i) = jthird(i)**2
263 j4third(i) = jthird(i)**4
264 ELSE
265 jthird(i) = zero
266 j2third(i) = zero
267 j4third(i) = zero
268 ENDIF
269 ENDDO
270 DO i = 1,nel
271
272
273 bi1(i) = i1(i) * j2third(i)
274
275 bi2(i) = i2(i)*j4third(i)
276 ENDDO
277 wmax = zero
278
279 DO i = 1,nel
280 ww(i) = c10 *(bi1(i)-three) + c20 *(bi1(i)-three)**2 + c30 *(bi1(i)-three)**3
281 . + c01 *(bi2(i)-three) + c02 *(bi2(i)-three)**2 + c03 *(bi2(i)-three)**3
282 . + c11 *(bi1(i)-three)*(bi2(i)-three)
283 . + c12 *(bi1(i)-three)*(bi2(i)-three)**2
284 . + c21 *(bi2(i)-three)*(bi1(i)-three)**2
285 wmax =
max(wmax, ww(i))
286 ENDDO
287
288
289
290
291 IF(flag_mul == 1)THEN
293 1 nel ,nvarf, coefr,betaf ,
294 2 coefm, ww , uvarf,eta )
295 ENDIF
296
297
298 DO i = 1,nel
299 eta(i) =
max(
min(eta(i),one),em20)
300
301 dphidi1(i) = eta(i)*(c10 + two *c20 *(bi1(i)-three)+ three*c30 *(bi1(i)-three)**2
302 . + c11 *(bi2(i)-three)+ c12 *(bi2(i)-three)**2
303 . + two *c21 *(bi1(i)-three)*(bi2(i)-three))
304
305 dphidi2(i) = eta(i)*(c01 + two*c02*(bi2(i)-three) +three*c03*(bi2(i)-three)**2
306 . + c11*(bi1(i)-three) + c21*(bi1(i)-three)**2
307 . + two*c12*(bi1(i)-three)*(bi2(i)-three))
308 inv2j(i)=two/
max(em20,jdet(i))
309 ENDDO
310 IF (iform == 1) THEN
311 DO i = 1,nel
312 dphidj(i) = two*d1* (jdet(i)-one) + four * d2 * (jdet(i)-one)**3 + six*d3*(jdet(i)-one)**5
313 ENDDO
314 ELSEIF (iform == 2) THEN
315 DO i = 1,nel
316 dphidj(i) = rbulk * (one - one / jdet(i))
317 ENDDO
318 ENDIF
319
320 DO i=1,nel
321
322 aa = (dphidi1
323 bb = dphidi2(i) *inv2j(i)*j4third(i)
324 cc = third* inv2j(i)* ( bi1(i)* dphidi1(i)+two* bi2(i)*dphidi2(i))
325
326 sig(i,1,1) = aa*matb(i,1,1)
327 . - bb*matb2(i,1,1)
328 . - cc
329 . + dphidj(i)
330 sig(i,2,2) = aa*matb(i,2,2)
331 . - bb*matb2(i,2,2)
332 . - cc
333 . + dphidj(i)
334 sig(i,3,3) = aa*matb(i,3,3)
335 . - bb*matb2(i,3,3)
336 . - cc
337 . + dphidj(i)
338 sig(i,1,2) = aa*matb(i,1,2)
339 . - bb*matb2(i,1,2)
340 sig(i,2,3) = aa*matb(i,2,3)
341 . - bb*matb2(i,2,3)
342 sig(i,3,1) = aa*matb(i,3,1)
343 . - bb*matb2(i,3,1)
344 sig(i,2,1)=sig(i,1,2)
345 sig(i,3,2)=sig(i,2,3)
346 sig(i,1,3)=sig(i,3,1)
347
348 ENDDO
349
350 IF (iform == 1) THEN
351 DO i = 1,nel
352 dphi2dj(i) = two*d1 + twelve * d2 * (jdet(i)-one)**2 + thirty*d3*(jdet(i)-one)**4
353 ENDDO
354 ELSEIF (iform == 2) THEN
355 DO i = 1,nel
356 dphi2dj(i) = rbulk/(jdet(i)**2)
357 ENDDO
358 ENDIF
359 DO i = 1,nel
360 dphi2di1(i) = two*eta(i)*(c20 + three*c30*(bi1(i)-three)+ c21*(bi2(i)-three))
361
362 dphi2di2(i) = two*eta(i)*(c02 +three*c03*(bi2(i)-three) + c12*(bi1(i)-three))
363
364 lam_b(1) = matb(i,1,1)*j2third(i)
365 lam_b(2) = matb(i,2,2)*j2third(i)
366 lam_b(3) = matb(i,3,3)*j2third(i)
367 lam_b_1(1:3) = one/lam_b(1:3)
368 bi1_3 = third*bi1(i)
369 bi2_3 = third*bi2(i)
370 cii(i,1:3) = two*(two_third*dphidi1(i)*(lam_b(1:3)+bi1_3)+dphi2di1(i)*(lam_b(1:3)-bi1_3)+
371 . two_third*dphidi2(i)*(lam_b_1(1:3)+bi2_3)+dphi2di2(i)*(lam_b_1(1:3)-bi2_3))
372 . + dphi2dj(i)
373 ENDDO
374
375 RETURN