@@ -34,6 +34,13 @@ pub enum ExternalPotential<U> {
3434 rho_s : f64 ,
3535 xi : Option < f64 > ,
3636 } ,
37+ /// Steele potential with custom combining rules: $V_i^\mathrm{ext}(z)=2\pi m_i\xi\varepsilon_{si}\sigma_{si}^2\Delta\rho_s\left(0.4\left(\frac{\sigma_{si}}{z}\right)^{10}-\left(\frac{\sigma_{si}}{z}\right)^4-\frac{\sigma_{si}^4}{3\Delta\left(z+0.61\Delta\right)^3}\right),~~~~\Delta=3.35$
38+ CustomSteele {
39+ sigma_sf : Array1 < f64 > ,
40+ epsilon_k_sf : Array1 < f64 > ,
41+ rho_s : f64 ,
42+ xi : Option < f64 > ,
43+ } ,
3744 /// Double well potential: $V_i^\mathrm{ext}(z)=\mathrm{min}\left(\frac{2\pi}{45} m_i\varepsilon_{2si}\sigma_{si}^3\rho_s\left(2\left(\frac{2\sigma_{si}}{z}\right)^9-15\left(\frac{2\sigma_{si}}{z}\right)^3\right),0\right)+\frac{2\pi}{45} m_i\varepsilon_{1si}\sigma_{si}^3\rho_s\left(2\left(\frac{\sigma_{si}}{z}\right)^9-15\left(\frac{\sigma_{si}}{z}\right)^3\right),~~~~\varepsilon_{1si}=\sqrt{\varepsilon_{1ss}\varepsilon_{ii}},~~~~\varepsilon_{2si}=\sqrt{\varepsilon_{2ss}\varepsilon_{ii}},~~~~\sigma_{si}=\frac{1}{2}\left(\sigma_{ss}+\sigma_{ii}\right)$
3845 DoubleWell {
3946 sigma_ss : f64 ,
@@ -138,6 +145,20 @@ impl<U: EosUnit> ExternalPotential<U> {
138145 / ( ( 3.0 * DELTA_STEELE )
139146 * ( z_grid + 0.61 * DELTA_STEELE ) . mapv ( |x| x. powi ( 3 ) ) ) )
140147 }
148+ Self :: CustomSteele {
149+ sigma_sf,
150+ epsilon_k_sf,
151+ rho_s,
152+ xi,
153+ } => {
154+ ( 2.0 * PI * mi * xi. unwrap_or ( 1.0 ) * epsilon_k_sf[ i] )
155+ * ( sigma_sf[ i] . powi ( 2 ) * DELTA_STEELE * rho_s)
156+ * ( 0.4 * ( sigma_sf[ i] / z_grid) . mapv ( |x| x. powi ( 10 ) )
157+ - ( sigma_sf[ i] / z_grid) . mapv ( |x| x. powi ( 4 ) )
158+ - sigma_sf[ i] . powi ( 4 )
159+ / ( ( 3.0 * DELTA_STEELE )
160+ * ( z_grid + 0.61 * DELTA_STEELE ) . mapv ( |x| x. powi ( 3 ) ) ) )
161+ }
141162 Self :: DoubleWell {
142163 sigma_ss,
143164 epsilon1_k_ss,
@@ -277,6 +298,23 @@ impl<U: EosUnit> ExternalPotential<U> {
277298 sigma_sf[ i] / ( pore_size + DELTA_STEELE * 0.61 ) ,
278299 ) )
279300 }
301+ Self :: CustomSteele {
302+ sigma_sf,
303+ epsilon_k_sf,
304+ rho_s,
305+ xi,
306+ } => {
307+ ( 2.0 * PI * mi * xi. unwrap_or ( 1.0 ) * epsilon_k_sf[ i] )
308+ * ( sigma_sf[ i] . powi ( 2 ) * DELTA_STEELE * rho_s)
309+ * ( psi ( 6 , & ( r_grid / pore_size) , sigma_sf[ i] / pore_size)
310+ - psi ( 3 , & ( r_grid / pore_size) , sigma_sf[ i] / pore_size)
311+ - sigma_sf[ i] / DELTA_STEELE
312+ * phi (
313+ 3 ,
314+ & ( r_grid / ( pore_size + DELTA_STEELE * 0.61 ) ) ,
315+ sigma_sf[ i] / ( pore_size + DELTA_STEELE * 0.61 ) ,
316+ ) )
317+ }
280318 Self :: DoubleWell {
281319 sigma_ss,
282320 epsilon1_k_ss,
@@ -440,6 +478,32 @@ impl<U: EosUnit> ExternalPotential<U> {
440478 pore_size + 0.61 * DELTA_STEELE ,
441479 ) ) )
442480 }
481+ Self :: CustomSteele {
482+ sigma_sf,
483+ epsilon_k_sf,
484+ rho_s,
485+ xi,
486+ } => {
487+ ( 2.0 * PI * mi * xi. unwrap_or ( 1.0 ) * epsilon_k_sf[ i] )
488+ * ( sigma_sf[ i] . powi ( 2 ) * DELTA_STEELE * rho_s)
489+ * ( 2.0 / 5.0 * sum_n ( 10 , r_grid, sigma_sf[ i] , pore_size)
490+ - sum_n ( 4 , r_grid, sigma_sf[ i] , pore_size)
491+ - sigma_sf[ i] / ( 3.0 * DELTA_STEELE )
492+ * ( sigma_sf[ i] . powi ( 3 )
493+ / r_grid
494+ . mapv ( |r| ( pore_size + 0.61 * DELTA_STEELE - r) . powi ( 3 ) )
495+ + sigma_sf[ i] . powi ( 3 )
496+ / r_grid. mapv ( |r| {
497+ ( pore_size + 0.61 * DELTA_STEELE + r) . powi ( 3 )
498+ } )
499+ + 1.5
500+ * sum_n (
501+ 3 ,
502+ r_grid,
503+ sigma_sf[ i] ,
504+ pore_size + 0.61 * DELTA_STEELE ,
505+ ) ) )
506+ }
443507 Self :: DoubleWell {
444508 sigma_ss,
445509 epsilon1_k_ss,
0 commit comments