37
38
39
40#include "implicit_f.inc"
41
42
43
44 INTEGER, INTENT(IN) :: NEL,FLAG_MUL,NVARF
45 my_real,
INTENT(IN) :: coefr, betaf,coefm
46
47 my_real,
DIMENSION(NEL),
INTENT(IN) :: mu,d
48 my_real,
DIMENSION(NEL, 3,3),
INTENT(IN) :: matb(nel,3,3)
49
50
51
52
53 my_real,
DIMENSION(NEL),
INTENT(OUT) :: bi1,jdet
54 my_real,
DIMENSION(NEL, 3,3),
INTENT(OUT) :: sig
55
56
57
58 my_real,
DIMENSION(NEL,NVARF),
INTENT(INOUT) :: uvarf
59
60
61
62 INTEGER I
63
65 . lpchain(nel), trace(nel),traceb(nel),j2third(nel),
66 . sb1(nel), sb2(nel),sb3(nel),tbnorm(nel),dgamma(nel),i1(nel),
67 . aa,bb,cc,trb2,trb22,invj(nel),
68 . jthird(nel),j4third(nel),eta(nel),ww(nel) ,
69 . dphidi1(nel) , dphidj(nel)
70
71 eta(1:nel) = one
72
73 DO i = 1,nel
74
75 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) -
76 . matb(i,3,3)*matb(i,1,2)*matb(i,2,1) +matb(i,1,2)*matb(i,2,3)*matb(i,3,1) +
77 . matb(i,2,1)*matb(i,3,2)*matb(i,1,3) -matb(i,2,2)*matb(i,3,1)*matb(i,1,3)
78 jdet(i)= sqrt(
max(em20, jdet(i)))
79
80
81 i1(i) = matb(i,1,1)+matb(i,2,2)+matb(i,3,3)
82
83 IF(jdet(i)>zero) THEN
84 j2third(i) = exp((-two_third )*log(jdet(i)))
85 ELSE
86 j2third(i) = zero
87 ENDIF
88 ENDDO
89 DO i = 1,nel
90
91
92 bi1(i) = i1(i) * j2third(i)
93 ENDDO
94
95
96
97
98
99 IF(flag_mul == 1)THEN
100 DO i = 1,nel
101 ww(i) = mu(i) *(bi1(i)-three) /two
102
103 ENDDO
105 1 nel ,nvarf, coefr,betaf ,
106 2 coefm, ww , uvarf,eta )
107 ENDIF
108
109
110 DO i = 1,nel
111 eta(i) =
max(
min(eta(i),one),em20)
112 dphidi1(i) = eta(i)*mu(i)/two
113 dphidj(i) = d(i)* (jdet(i)-one)
114 invj(i)=one/
max(em20,jdet(i))
115 ENDDO
116
117 DO i=1,nel
118
119 aa = eta(i)*mu(i)/
max(em20,jdet(i))
120
121 sig(i,1,1) = aa*(matb(i,1,1)-third*i1(i))
122 . + dphidj(i)
123 sig(i,2,2) = aa*(matb(i,2,2)-third*i1(i))
124 . + dphidj(i)
125 sig(i,3,3) = aa*(matb(i,3,3)-third*i1(i))
126 . + dphidj(i)
127 sig(i,1,2) = aa*matb(i,1,2)
128 sig(i,2,3) = aa*matb(i,2,3)
129 sig(i,3,1) = aa*matb(i,3,1)
130 sig(i,2,1)=sig(i,1,2)
131 sig(i,3,2)=sig(i,2,3)
132 sig(i,1,3)=sig(i,3,1)
133 ENDDO
134
135 RETURN
subroutine mullins_or(nel, nuvar, coefr, betaf, coefm, ww, uvar, eta)