37
38
39
40#include "implicit_f.inc"
41
42
43
44#include "mvsiz_p.inc"
45
46
47
48#include "param_c.inc"
49
50
51
52 INTEGER, INTENT(IN) :: NEL
54 . pm(npropm,*), eint(*), rho(*), temp(*), z(*), qold(*),
55 .
sesame(*), sound(*), xk(*), voln(mvsiz), c(*), dv2(
56 . rho0(*), p01(*)
57 INTEGER MAT(*)
58
59
60
61 INTEGER I, MX, NR, NT, IDR, IDT, IDP, IDE, IDQ
63 . dpdm(mvsiz),
64 . espe(mvsiz), e01(mvsiz),
65 . dtde, dpdr, sph, rl, tl, zl, dxdr, zz, deltat, xlamb,
66 . stefan, opac, rossel, xkr
67 real*8 ne, na, atom
68
69 DATA na /6.0225e+23/
70
71 DO i=1,nel
72 zl = zero
73 dxdr = zero
74 mx = mat(i)
75 dpdm(i) = four_over_3 * pm(22,mx)
76 e01(i) =eint(i)-(pold(i)+qold(i))*dv2(i)
77 e01(i) =
max(zero,e01(i))
78 espe(i)=e01(i)/
max(em30,voln(i)*rho(i))
79 nr = nint(pm(25,mx))
80 nt = nint(pm(26,mx))
81 idr = nint(pm(27,mx))
82 idt = idr + nr
83 idp = idt + nt
84 ide = idp + nr * nt
85
89
90 dpdm(i)=dpdm(i)+rho0(i)*dpdr
91 sph = rho(i)/
max(em15,dtde)
92
93
94
95 nr = nint(pm(28,mx))
96 nt = nint(pm(29,mx))
97 idr = nint(pm(30,mx))
98 idt = idr + nr
99 idq = idt + nt
100 rl = log10(rho(i))
101 tl = log10(temp(i))
103 IF(zl <= -20)THEN
104
105 z(i)=em20
106 ELSEIF(zl >= 20)THEN
107
108 z(i)=ep20
109 ELSE
110 z(i)=exp(zl*log(ten))
111 ENDIF
112
113
115 deltat= threep44 * zep26 * log(zz) / zz
116 IF(deltat > zero)THEN
117 deltat= one / ( one + deltat)
118 ELSE
119 deltat= zero
120 ENDIF
121 atom = pm(37,mx)
122 ne = rho(i)*na*zz/atom
123 xlamb = pm(36,mx)*temp(i)**three_half/sqrt(ne)
124 xlamb =
max(one,xlamb)
125 xlamb =
max(em10, log(xlamb))
126 xk(i) = zep4*deltat*pm(35,mx) * temp(i)**twop5 / (zz*xlamb)
127 stefan = pm(51,mx)
128 IF(stefan > zero.AND.temp(i) >= ep04)THEN
129 nr = nint(pm(48,mx))
130 nt = nint(pm(49,mx))
131 idr = nint(pm(50,mx))
132 idt = idr + nr
133 idq = idt + nt
134 rl = log10(rho(i))
135 tl = log10(temp(i))
137 opac = ten**opac
138 rossel = one / ( rho(i) * opac)
139 xkr = sixteen * stefan * temp(i)**3 * rossel * third
140 xk(i) = xk(i) + xkr
141 ENDIF
142 xk(i) =
min(xk(i),pm(51,mx))
143 ENDDO
144
145
146
147
148 DO i=1,nel
149 ssp(i)=sqrt(abs(dpdm(i))/rho0(i))
150 sound(i) = ssp(i)
151 ENDDO
152
153 RETURN
subroutine mintp_re(xx, nx, yy, ny, zz, x, y, z, dydz)
subroutine mintp_rt(xx, nx, yy, ny, zz, x, y, z, dzdx)
subroutine sesame(iflag, nel, pm, off, eint, rho, rho0, espe, dvol, mat, pnew, dpdm, dpde, theta, bufmat)