33
34
35
36#include "implicit_f.inc"
37
38
39
40#include "mvsiz_p.inc"
41#include "param_c.inc"
42
43
44
45 INTEGER,INTENT(IN) :: NUMMAT
46 INTEGER,INTENT(IN) :: MAT(*)
47 INTEGER,INTENT(IN) :: NEL
49 my_real,
INTENT(IN) :: pm(npropm,nummat)
50 my_real,
INTENT(INOUT) :: sig(nel,6)
55 my_real,
INTENT(IN) :: tburn(mvsiz)
56 my_real,
INTENT(INOUT) :: bfrac(mvsiz)
57 my_real,
INTENT(IN) :: voln(mvsiz)
58 my_real,
INTENT(IN) :: deltax(nel)
59 my_real,
INTENT(INOUT) :: ssp(nel)
62 my_real,
INTENT(INOUT) :: er1v(nel), er2v(nel), wdr1v(nel), wdr2v(nel), w1(nel), rho0(nel)
63 my_real,
INTENT(INOUT) :: dpde(nel)
64
65
66
67 INTEGER I,MX,
68 my_real a,b, r1, r2, w, vdet, psh_param, bulk, p0_param, rho0_param
71 my_real r1v(mvsiz), r2v(mvsiz), dr1v(mvsiz)
73
74
75
76
77
78 mx = mat(1)
79 rho0_param = pm( 1,mx)
80 a = pm(33,mx)
81 b = pm(34,mx)
82 r1 = pm(35,mx)
83 r2 = pm(36,mx)
84 w = pm(45,mx)
85 vdet = pm(38,mx)
86 bhe = pm(40,mx)
87 psh_param = pm(88,mx)
88 p0_param = pm(31,mx)
89 bulk = pm(44,mx)
90 ibfrac = nint(pm(41,mx))
91
92
93 DO i=1,nel
94 rho0(i) = rho0_param
95 psh(i) = psh_param
96 p0(i) = p0_param
97 w1(i) = w
98 ENDDO
99
100
101 DO i=1,nel
102 df(i) = rho0(i)/rho(i)
103 ENDDO
104
105
106
107
108 DO i=1,nel
109 IF(bfrac(i) < one) THEN
110 tb=-tburn(i)
111 bfrac1 = zero
112 bfrac2 = zero
113 IF(ibfrac /= 1 .AND. tt > tb) bfrac1=vdet*(tt-tb)/three_half/deltax
114 IF(ibfrac /= 2)bfrac2=bhe*(one-df(i))
115 bfrac(i) =
max(bfrac1,bfrac2)
116 IF(bfrac(i)<em04) bfrac(i)=zero
117 IF(bfrac(i)>one) THEN
118 bfrac(i) = one
119 ENDIF
120 ENDIF
121 ENDDO
122
123
124 DO i=1,nel
125 r1v(i) = a*w/(r1*df(i))
126 r2v(i) = b*w/(r2*df(i))
127 wdr1v(i) = a-r1v(i)
128 wdr2v(i) = b-r2v(i)
129 dr1v(i) = w*eint(i)/
max(em20,voln(i))
130 er1v(i) = exp(-r1*df(i))
131 er2v(i) = exp(-r2*df(i))
132 ENDDO
133
134
135 IF (bulk == zero) THEN
136
137 DO i=1,nel
138 p(i) = p0(i) + (wdr1v(i)*er1v(i)+wdr2v(i)*er2v(i)+dr1v(i))
139 ENDDO
140 ELSE
141
142 DO i=1,nel
143 p(i) = (one - bfrac(i))*(p0(i)+bulk*amu(i)) + bfrac(i)*(wdr1v(i)*er1v(i)+wdr2v(i)*er2v(i)+dr1v(i))
144 ENDDO
145 ENDIF
146 DO i=1,nel
147 p(i) =
max(zero, p(i)) - psh(i)
148 ENDDO
149
150
151 DO i=1,nel
152 dpde(i) = w/df(i)
153 ENDDO
154
155
156 DO i=1,nel
157 ssp(i) = a*er1v(i)*( (-w/df(i)/r1) + r1*df(i) - w)
158 . + b*er2v(i)*( (-w/df(i)/r2) + r2*df(i) - w)
159 . + dr1v(i) + (p(i) + psh(i))*w
160 ssp(i) = ssp(i) * df(i)
161 ENDDO
162 IF (bulk == zero) THEN
163 DO i=1,nel
164 ssp(i) = sqrt(abs(ssp(i))/rho0(i))
165 ssp(i) =
max(ssp(i),vdet*(one-bfrac(i)))
166 ENDDO
167 ELSE
168 DO i=1,nel
169 ssp(i) = bfrac(i) * (ssp(i) / rho0(i)) + (one - bfrac(i)) * (bulk / rho0(i))
170 ssp(i) = sqrt(abs(ssp(i)))
171 ENDDO
172 ENDIF
173
174
175 DO i=1,nel
176 sig(i,1) = zero
177 sig(i,2) = zero
178 sig(i,3) = zero
179 sig(i,4) = zero
180 sig(i,5) = zero
181 sig(i,6) = zero
182 ENDDO
183
184 RETURN