@@ -213,8 +213,17 @@ impl Parameter for SaftVRQMieParameters {
213213 mass_ij[ [ i, j] ] = 2.0 * molarweight[ i] * molarweight[ j]
214214 / ( molarweight[ i] + molarweight[ j] )
215215 * to_mass_per_molecule;
216- fh_ij[ [ i, j] ] = FeynmanHibbsOrder :: try_from ( max ( fh[ i] , fh[ j] ) ) . unwrap ( ) ;
217- assert ! ( fh[ i] * fh[ j] != 2 ) ; // Should not mix FH1 and FH2
216+ fh_ij[ [ i, j] ] = FeynmanHibbsOrder :: try_from ( max ( fh[ i] , fh[ j] ) ) ?;
217+ if fh[ i] * fh[ j] == 2 {
218+ return Err (
219+ ParameterError :: IncompatibleParameters (
220+ format ! (
221+ "cannot combine Feynman-Hibbs orders 1 and 2. Component {} has order {} and component {} has order {}." ,
222+ i, fh[ i] , j, fh[ j]
223+ )
224+ )
225+ ) ;
226+ }
218227 }
219228 }
220229
@@ -571,3 +580,27 @@ pub mod utils {
571580 )
572581 }
573582}
583+
584+ #[ cfg( test) ]
585+ mod test {
586+ use super :: utils:: { helium_fh1, hydrogen_fh} ;
587+ use super :: SaftVRQMieParameters ;
588+ use feos_core:: parameter:: Parameter ;
589+
590+ #[ test]
591+ #[ should_panic(
592+ expected = "cannot combine Feynman-Hibbs orders 1 and 2. Component 0 has order 1 and component 1 has order 2."
593+ ) ]
594+ fn incompatible_order ( ) {
595+ let order1 = helium_fh1 ( ) ;
596+ let order2 = hydrogen_fh ( "2" ) ;
597+ SaftVRQMieParameters :: new_binary (
598+ vec ! [
599+ order1. pure_records[ 0 ] . clone( ) ,
600+ order2. pure_records[ 0 ] . clone( ) ,
601+ ] ,
602+ None ,
603+ )
604+ . unwrap ( ) ;
605+ }
606+ }
0 commit comments