45
46
47
49 USE eos_param_mod , ONLY : eos_param_
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70 IMPLICIT NONE
71#include "my_real.inc"
72
73
74
75 INTEGER,INTENT(IN) :: IFLAG, NEL
76 my_real,
INTENT(IN) :: pmin,off(nel),mu(nel),dvol(nel),vnew(nel)
77 my_real,
INTENT(INOUT) :: pnew(nel),dpdm(nel),dpde(nel),psh(nel),eint(nel)
78 TYPE(EOS_PARAM_),INTENT(IN) :: EOS_STRUCT
80
81
82
83 INTEGER I
84
85
86
87
88
89 psh(1:nel) = eos_struct%PSH
90
91 IF(iflag == 0) THEN
92 DO i=1,nel
93 dpdm(i) = bulk
94 dpde(i) = zero
95 pnew(i) = c0+bulk*mu(i)
96 pnew(i) =
max(pmin-psh(i),pnew(i))
97 pnew(i) = pnew(i)*off(i)
98 ENDDO
99
100 ELSEIF(iflag == 1) THEN
101 DO i=1,nel
102 pnew(i) = c0+bulk*mu(i)
103 pnew(i) =
max(pnew(i),pmin-psh(i))
104 pnew(i) = pnew(i)*off(i)
105 eint(i) = eint(i) - half*dvol(i)*(pnew(i)+psh(i))
106 dpde(i) = zero
107 ENDDO
108
109 ELSEIF (iflag == 2) THEN
110 DO i=1, nel
111 IF (vnew(i) > zero) THEN
112 pnew(i) = c0+bulk*mu(i)
113 pnew(i) =
max(pnew(i),pmin-psh(i))
114 pnew(i) = pnew(i)*off(i)
115 dpdm(i) = bulk
116 dpde(i) = zero
117 ENDIF
118 ENDDO
119
120 ENDIF
121
122 RETURN