31
32
33
34#include "implicit_f.inc"
35
36
37
38#include "mvsiz_p.inc"
39
40
41
42#include "param_c.inc"
43
44
45
46 INTEGER JFT, JLT,IMAT,NEL
47
49 . pm(npropm,*),damt(nel,2),crak(nel,2),shf(*),
50 . depsxx(mvsiz),depsyy(mvsiz),depsxy(mvsiz),depsyz(mvsiz),
51 . depszx(mvsiz)
52 my_real,
INTENT(INOUT) :: sig(nel,5)
53
54
55
56 INTEGER I
57
59 . e(mvsiz),nu(mvsiz),g(mvsiz),de1(mvsiz),de2(mvsiz),
60 . eel1(mvsiz),eel2(mvsiz),eel3(mvsiz),eel4(mvsiz),eel5(mvsiz),
61 . a11(mvsiz),a22(mvsiz),a12(mvsiz),epst1(mvsiz),epst2(mvsiz),
62 . epsm1(mvsiz),epsm2(mvsiz),dmax1(mvsiz),dmax2(mvsiz),
63 . scale1,scale2
64
65#include "vectorize.inc"
66 DO i=jft,jlt
67 e(i) = pm(20,imat)
68 nu(i) = pm(21,imat)
69 g(i) = pm(22,imat)
70 epst1(i) = pm(60,imat)
71 epst2(i) = pm(61,imat)
72 epsm1(i) = pm(62,imat)
73 epsm2(i) = pm(63,imat)
74 dmax1(i) = pm(64,imat)
75 dmax2(i) = pm(65,imat)
76 ENDDO
77
78
79
80
81
82
83#include "vectorize.inc"
84 DO i=jft,jlt
85 de1(i) = one -
max(zero,sign(damt(i,1),sig(i,1)))
86 de2(i) = one -
max(zero,sign(damt(i,2),sig(i,2)))
87 scale1 =(half
88 . +sign(half,de1(i)-one))*(half+sign(half,de2(i)-one))
89 eel1(i) = (sig(i,1)/de1(i)-nu(i)*sig(i,2)*scale1)/e(i)
90 eel2(i) = (sig(i,2)/de2(i)-nu(i)*sig(i,1)*scale1)/e(i)
91 eel3(i) = sig(i,3)/de1(i)/de2(i)/g(i)
92 eel4(i) = sig(i,4)/
max(de2(i)*g(i)*shf(i),em30)
93 eel5(i) = sig(i,5)/
max(de1(i)*g(i)*shf(i),em30)
94 ENDDO
95
96
97
98 DO i=jft,jlt
99 eel1(i) = eel1(i)+depsxx(i)
100 eel2(i) = eel2(i)+depsyy(i)
101 eel3(i) = eel3(i)+depsxy(i)
102 eel4(i) = eel4(i)+depsyz(i)
103 eel5(i) = eel5(i)+depszx(i)
104 ENDDO
105
106
107
108 DO i=jft,jlt
109 IF (damt(i,1) /= zero) THEN
110 crak(i,1) = crak(i,1) + depsxx(i)
111 damt(i,1) =
max(damt(i,1),crak(i,1)/(epsm1(i)-epst1(i)))
112 damt(i,1) =
min(damt(i,1),dmax1(i))
113 ENDIF
114 ENDDO
115
116 DO i=jft,jlt
117 IF (damt(i,2) /= zero) THEN
118 crak(i,2) = crak(i,2) + depsyy(i)
119 damt(i,2) =
max(damt(i,2),crak(i,2)/(epsm2(i)-epst2(i)))
120 damt(i,2) =
min(damt(i,2),dmax2(i))
121 ENDIF
122 ENDDO
123
124
125
126 DO i=jft,jlt
127 de1(i) = one -
max(zero,sign(damt(i,1),sig(i,1)))
128 de2(i) = one -
max(zero,sign(damt(i,2),sig(i,2)))
129 scale1 =(half
130 . +sign(half,de1(i)-one))*(half+sign(half,de2(i)-one))
131 scale2 = one-nu(i)*nu(i)*scale1
132 a11(i) = e(i)*de1(i)/scale2
133 a22(i) = e(i)*de2(i)/scale2
134 a12(i) = nu(i)*a11(i)*scale1
135 ENDDO
136
137 DO i=jft,jlt
138 sig(i,1) = a11(i)*eel1(i)+a12(i)*eel2(i)
139 sig(i,2) = a12(i)*eel1(i)+a22(i)*eel2(i)
140 sig(i,3) = de1(i)*de2(i)*g(i)*eel3(i)
141 sig(i,4) = de2(i)*g(i)*shf(i)*eel4(i)
142 sig(i,5) = de1(i)*g(i)*shf(i)*eel5(i)
143 ENDDO
144
145 RETURN