@@ -214,6 +214,46 @@ def test_fit_bounded_PVT_data(self):
214214 self .assertEqual (len (s [1 ]), 3 )
215215 self .assertEqual (len (s [2 ]), 3 )
216216
217+ def test_PTV_data_eos_numerical_failure (self ):
218+ fo = burnman .minerals .HP_2011_ds62 .fo ()
219+
220+ pressures = np .linspace (1.0e9 , 2.0e9 , 8 )
221+ temperatures = np .ones_like (pressures ) * fo .params ["T_0" ]
222+
223+ fo .set_state (1.0e9 , fo .params ["T_0" ])
224+ V0 = fo .V
225+ fo .set_state (2.0e9 , fo .params ["T_0" ])
226+ V1 = fo .V
227+ volumes = V0 + (V1 - V0 ) * (pressures - 1.0e9 ) / 1.0e9
228+ PTV = np .array ([pressures , temperatures , volumes ]).T
229+ params = ["V_0" , "K_0" , "Kprime_0" ]
230+
231+ try :
232+ _ = burnman .eos_fitting .fit_PTV_data (fo , params , PTV , verbose = False )
233+ self .assertTrue (False )
234+ except Exception :
235+ self .assertTrue (True )
236+
237+ def test_PTV_data_eos_exception (self ):
238+ fo = burnman .minerals .SLB_2011 .forsterite ()
239+
240+ pressures = np .linspace (1.0e9 , 100.0e9 , 8 )
241+ temperatures = np .ones_like (pressures ) * fo .params ["T_0" ]
242+
243+ fo .set_state (1.0e9 , fo .params ["T_0" ])
244+ V0 = fo .V
245+ fo .set_state (2.0e9 , fo .params ["T_0" ])
246+ V1 = fo .V
247+ volumes = V0 + (V1 - V0 ) * (pressures - 1.0e9 ) / 1.0e9
248+ PTV = np .array ([pressures , temperatures , volumes ]).T
249+ params = ["V_0" , "K_0" , "Kprime_0" ]
250+
251+ try :
252+ _ = burnman .eos_fitting .fit_PTV_data (fo , params , PTV , verbose = False )
253+ self .assertTrue (False )
254+ except Exception :
255+ self .assertTrue (True )
256+
217257 def test_bounded_solution_fitting (self ):
218258 solution = burnman .minerals .SLB_2011 .mg_fe_olivine ()
219259 solution .set_state (1.0e5 , 300.0 )
0 commit comments