@@ -33,6 +33,7 @@ pub struct GcPcSaftEosParameters {
33
33
mu : Array1 < f64 > ,
34
34
pub mu2 : Array1 < f64 > ,
35
35
pub m_mix : Array1 < f64 > ,
36
+ pub s_ij : Array2 < f64 > ,
36
37
pub e_k_ij : Array2 < f64 > ,
37
38
38
39
pub k_ij : Array2 < f64 > ,
@@ -76,6 +77,8 @@ impl GcPcSaftEosParameters {
76
77
let mut mu = Vec :: new ( ) ;
77
78
let mut mu2 = Vec :: new ( ) ;
78
79
let mut m_mix = Vec :: new ( ) ;
80
+ let mut sigma_mix = Vec :: new ( ) ;
81
+ let mut epsilon_k_mix = Vec :: new ( ) ;
79
82
80
83
let mut joback_records = Vec :: new ( ) ;
81
84
@@ -93,6 +96,8 @@ impl GcPcSaftEosParameters {
93
96
. collect :: < Result < _ , ParameterError > > ( ) ?;
94
97
95
98
let mut m_i = 0.0 ;
99
+ let mut sigma_i = 0.0 ;
100
+ let mut epsilon_k_i = 0.0 ;
96
101
let mut mu2_i = 0.0 ;
97
102
98
103
for ( segment, count) in count. iter ( ) {
@@ -119,6 +124,8 @@ impl GcPcSaftEosParameters {
119
124
}
120
125
121
126
m_i += segment. model_record . m * count;
127
+ sigma_i += segment. model_record . m * segment. model_record . sigma . powi ( 3 ) * count;
128
+ epsilon_k_i += segment. model_record . m * segment. model_record . epsilon_k * count;
122
129
if let Some ( mu) = segment. model_record . mu {
123
130
mu2_i += mu. powi ( 2 ) * count;
124
131
}
@@ -127,8 +134,10 @@ impl GcPcSaftEosParameters {
127
134
if mu2_i > 0.0 {
128
135
dipole_comp. push ( i) ;
129
136
mu. push ( mu2_i. sqrt ( ) ) ;
130
- mu2. push ( mu2_i / m_i / ( 1e-19 * ( JOULE / KELVIN / KB ) . into_value ( ) . unwrap ( ) ) ) ;
137
+ mu2. push ( mu2_i / m_i * ( 1e-19 * ( JOULE / KELVIN / KB ) . into_value ( ) . unwrap ( ) ) ) ;
131
138
m_mix. push ( m_i) ;
139
+ sigma_mix. push ( ( sigma_i / m_i) . cbrt ( ) ) ;
140
+ epsilon_k_mix. push ( epsilon_k_i / m_i) ;
132
141
}
133
142
134
143
for ( b, & count) in bond_counts. iter ( ) {
@@ -181,10 +190,17 @@ impl GcPcSaftEosParameters {
181
190
// Combining rules dispersion
182
191
let sigma_ij =
183
192
Array2 :: from_shape_fn ( [ sigma. len ( ) ; 2 ] , |( i, j) | 0.5 * ( sigma[ i] + sigma[ j] ) ) ;
184
- let e_k_ij = Array2 :: from_shape_fn ( [ epsilon_k. len ( ) ; 2 ] , |( i, j) | {
193
+ let epsilon_k_ij = Array2 :: from_shape_fn ( [ epsilon_k. len ( ) ; 2 ] , |( i, j) | {
185
194
( epsilon_k[ i] * epsilon_k[ j] ) . sqrt ( )
195
+ } ) * ( 1.0 - & k_ij) ;
196
+
197
+ // Combining rules polar
198
+ let s_ij = Array2 :: from_shape_fn ( [ dipole_comp. len ( ) ; 2 ] , |( i, j) | {
199
+ 0.5 * ( sigma_mix[ i] + sigma_mix[ j] )
200
+ } ) ;
201
+ let e_k_ij = Array2 :: from_shape_fn ( [ dipole_comp. len ( ) ; 2 ] , |( i, j) | {
202
+ ( epsilon_k_mix[ i] * epsilon_k_mix[ j] ) . sqrt ( )
186
203
} ) ;
187
- let epsilon_k_ij = & e_k_ij * ( 1.0 - & k_ij) ;
188
204
189
205
// Association
190
206
let sigma3_kappa_aibj = Array2 :: from_shape_fn ( [ kappa_ab. len ( ) ; 2 ] , |( i, j) | {
@@ -213,6 +229,7 @@ impl GcPcSaftEosParameters {
213
229
mu : Array1 :: from_vec ( mu) ,
214
230
mu2 : Array1 :: from_vec ( mu2) ,
215
231
m_mix : Array1 :: from_vec ( m_mix) ,
232
+ s_ij,
216
233
e_k_ij,
217
234
k_ij,
218
235
sigma_ij,
0 commit comments