39
40
41
42#include "implicit_f.inc"
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68#include "param_c.inc"
69
70
71
72 INTEGER NEL, NUPARAM, NUVAR
74 . uparam(nuparam), rho0(nel), volume(nel), eint(nel),
75 . pm(npropm,*)
76 INTEGER ID
77 CHARACTER(LEN=NCHARTITLE) :: TITR
78
79
80
82 . uvar(nel,nuvar)
83
84
85
86 INTEGER NPF(*), NFUNC, IFUNC(NFUNC)
88 . finter,tf(*)
89 EXTERNAL finter
90
91
92
93 INTEGER I, IMAT
94
96 . ce, pe, ps, en, rho0s, alphae, bulks, c0, beta, aa,
97 . dalpdpe, alphap, bulk
98
99 bulk = uparam(1)
100 pe = uparam(2)
101 ps = uparam(3)
102 en = uparam(4)
103 imat = nint(uparam(6))
104 ce = sqrt(bulk/rho0(1))
105
106 IF(imat==0) THEN
107 alphae=zero
108 alphap=zero
109 aa=zero
110 ELSE
111 rho0s =pm(89,imat)
112 alphae=rho0s/rho0(1)
113 bulks= pm(32,imat)
114 c0 = sqrt(bulks/rho0s)
115 beta=ce/c0
116 aa=(beta-one)/(alphae-one)
117 dalpdpe=(one/bulks-one/bulk)*alphae
118 alphap=alphae+pe*dalpdpe
119
120 IF (alphae < one) THEN
122 . msgtype=msgerror,
123 . anmode=aninfo,
125 . c1=titr)
126 ENDIF
127 IF (bulks < bulk) THEN
129 . msgtype=msgerror,
130 . anmode=aninfo,
132 . c1=titr)
133 ENDIF
134 ENDIF
135
136
137
138 uparam(11)=alphae
139 uparam(12)=alphap
140 uparam(13)=aa
141 uparam(14)=one/en
142 uparam(15)=(ps-pe)/(alphap-one)**(one/en)
143 uparam(16)=(alphap-one)/(ps-pe)**en
144
145 DO i=1,nel
146 uvar(i,1)=zero
147 uvar(i,2)=zero
148 uvar(i,3)=alphae
149 uvar(i,4)=alphap
150 ENDDO
151
152 RETURN
integer, parameter nchartitle
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)