33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65#include "implicit_f.inc"
66
67
68
69#include "mvsiz_p.inc"
70
71
72
73 INTEGER :: NEL
75 my_real ,
DIMENSION(NEL) :: epxe,epd,g,ak,qh,aj2,ca,sigmx,dpla1,sigy
76 my_real ,
DIMENSION(NEL,6) :: sig
77
78
79
80 INTEGER :: I, ITER, NITER
81 my_real :: xsi,dxsi,lhs,rhs,alpha_radial,beta,g3(mvsiz),htot
82
83
84 niter = 10
85
86 DO 100 i=1,nel
87
88 xsi = zero
89
90
91 epxe(i) =
max(zero,epxe(i))
92 g3(i) =
max(three*g(i),em15)
93
94
95
96
97
98 IF(aj2(i)<ak(i)) GO TO 90
99
100 beta = one-fisokin
101 DO 80 iter = 1,niter
102
103 IF(epxe(i)>zero) THEN
104 ak(i)=ca(i)+beta*cb*epxe(i)**cn
105
106
107
108
109 IF(cn>one) THEN
110 qh(i) = (cb*cn*epxe(i)**(cn - one))*epd(i)
111 ELSEIF(cn==one) THEN
112 qh(i)= cb*epd(i)
113 ELSE
114 qh(i) = (cb*cn/epxe(i)**(one -cn))*epd(i)
115 ENDIF
116
117 ELSEIF(epxe(i)==zero) THEN
118
119 ak(i)=ca(i)
120
121 IF(cn>one )THEN
122 qh(i) = zero
123 ELSEIF(cn==one) THEN
124 qh(i) = cb*epd(i)
125 ELSE
126 qh(i) = ep10 *epd(i)
127 ENDIF
128
129 ELSE
130
131
132
133 ENDIF
134
135 htot = g3(i) + fisokin*qh(i)
136 rhs = aj2(i) -htot * xsi - ak(i)
137 lhs = g3(i) + qh(i)
138 dxsi = rhs/lhs
139 xsi = xsi + dxsi
140
141 epxe(i) = epxe(i) + dxsi
142 epxe(i) =
max(zero,epxe(i))
143 IF( abs(dxsi)<em10.AND.
144 $ abs(rhs )<em10) GO TO 90
145
146 80 CONTINUE
147
148 90 CONTINUE
149
150 IF(xsi<zero) xsi = zero
151 dpla1(i) = xsi
152
153
154
155
156 ak(i)=ak(i)*epd(i)
157 IF(sigmx(i)<ak(i))THEN
158 ak(i)=sigmx(i)
159 qh(i)=zero
160 ENDIF
161
162 IF(epxe(i)>epmx)THEN
163 ak(i)=zero
164 qh(i)=zero
165 ENDIF
166
167
168
169
170 alpha_radial=
min(one,ak(i)/
max(aj2(i),em15))
171 sig(i,1)=alpha_radial*sig(i,1)
172 sig(i,2)=alpha_radial*sig(i,2)
173 sig(i,3)=alpha_radial*sig(i,3)
174 sig(i,4)=alpha_radial*sig(i,4)
175 sig(i,5)=alpha_radial*sig(i,5)
176 sig(i,6)=alpha_radial*sig(i,6)
177
178 100 CONTINUE
179
180 RETURN