@@ -4,7 +4,6 @@ use feos_core::parameter::IdentifierOption;
44use feos_core:: { Contributions , FeosResult , PhaseEquilibrium , SolverOptions } ;
55use nalgebra:: dvector;
66use quantity:: * ;
7- use std:: error:: Error ;
87
98fn read_params ( components : Vec < & str > ) -> FeosResult < PcSaftParameters > {
109 PcSaftParameters :: from_json (
@@ -16,7 +15,7 @@ fn read_params(components: Vec<&str>) -> FeosResult<PcSaftParameters> {
1615}
1716
1817#[ test]
19- fn test_tp_flash ( ) -> Result < ( ) , Box < dyn Error > > {
18+ fn test_tp_flash ( ) -> FeosResult < ( ) > {
2019 let propane = PcSaft :: new ( read_params ( vec ! [ "propane" ] ) ?) ;
2120 let butane = PcSaft :: new ( read_params ( vec ! [ "butane" ] ) ?) ;
2221 let t = 250.0 * KELVIN ;
@@ -63,3 +62,51 @@ fn test_tp_flash() -> Result<(), Box<dyn Error>> {
6362 ) ;
6463 Ok ( ( ) )
6564}
65+
66+ #[ test]
67+ fn test_tp_flash_zero_component ( ) -> FeosResult < ( ) > {
68+ let eos_full = PcSaft :: new ( PcSaftParameters :: from_json (
69+ vec ! [ "propane" , "butane" , "hexane" ] ,
70+ "tests/pcsaft/test_parameters.json" ,
71+ None ,
72+ IdentifierOption :: Name ,
73+ ) ?) ;
74+ let eos_binary = PcSaft :: new ( PcSaftParameters :: from_json (
75+ vec ! [ "butane" , "hexane" ] ,
76+ "tests/pcsaft/test_parameters.json" ,
77+ None ,
78+ IdentifierOption :: Name ,
79+ ) ?) ;
80+ let options = SolverOptions {
81+ verbosity : feos_core:: Verbosity :: Iter ,
82+ ..Default :: default ( )
83+ } ;
84+ let vle_full = PhaseEquilibrium :: tp_flash (
85+ & & eos_full,
86+ 300.0 * KELVIN ,
87+ 1.2 * BAR ,
88+ & ( dvector ! [ 0.0 , 0.5 , 0.5 ] * MOL ) ,
89+ None ,
90+ options,
91+ None ,
92+ ) ?;
93+ let vle_binary = PhaseEquilibrium :: tp_flash (
94+ & & eos_binary,
95+ 300.0 * KELVIN ,
96+ 1.2 * BAR ,
97+ & ( dvector ! [ 0.5 , 0.5 ] * MOL ) ,
98+ None ,
99+ options,
100+ None ,
101+ ) ?;
102+ println ! ( "{vle_full}\n {vle_binary}" ) ;
103+ assert_eq ! (
104+ vle_full. liquid( ) . molefracs[ 1 ] ,
105+ vle_binary. liquid( ) . molefracs[ 0 ]
106+ ) ;
107+ assert_eq ! (
108+ vle_full. vapor( ) . molefracs[ 1 ] ,
109+ vle_binary. vapor( ) . molefracs[ 0 ]
110+ ) ;
111+ Ok ( ( ) )
112+ }
0 commit comments