@@ -206,6 +206,53 @@ def _run_getSolutions(mod):
206206 assert np .isclose (x , x_analytical , rtol = 1e-4 ).all ()
207207
208208
209+ def test_variable_filter (model_firstorder ):
210+ mod = OMPython .ModelicaSystemOMC ()
211+ mod .model (
212+ model_file = model_firstorder ,
213+ model_name = "M" ,
214+ )
215+
216+ a = - 1
217+ tau = - 1 / a
218+ stopTime = 5 * tau
219+
220+ simOptions = {"stopTime" : stopTime , "stepSize" : 0.1 , "tolerance" : 1e-8 }
221+ mod .setSimulationOptions (** simOptions )
222+ mod .simulate ()
223+ sol_names1 = mod .getSolutions ()
224+ assert isinstance (sol_names1 , tuple )
225+ assert sol_names1 == ('a' , 'der(x)' , 'time' , 'x' )
226+
227+ mod .set_variable_filter (variable_filter = 'x' )
228+ mod .setSimulationOptions (stopTime = 2.0 )
229+ mod .simulate ()
230+ sol_names2 = mod .getSolutions ()
231+ assert isinstance (sol_names2 , tuple )
232+ assert sol_names2 == ('a' , 'time' , 'x' )
233+
234+ mod .set_variable_filter (variable_filter = 'der(x)' )
235+ mod .setSimulationOptions (stopTime = 3.0 )
236+ mod .simulate ()
237+ sol_names3 = mod .getSolutions ()
238+ assert isinstance (sol_names3 , tuple )
239+ assert sol_names3 == ('a' , 'time' )
240+
241+ mod .set_variable_filter (variable_filter = 'der(x)' , escape = True )
242+ mod .setSimulationOptions (stopTime = 3.0 )
243+ mod .simulate ()
244+ sol_names4 = mod .getSolutions ()
245+ assert isinstance (sol_names4 , tuple )
246+ assert sol_names4 == ('a' , 'der(x)' , 'time' )
247+
248+ mod .set_variable_filter (variable_filter = 'a' )
249+ mod .setSimulationOptions (stopTime = 2.0 )
250+ mod .simulate ()
251+ sol_names5 = mod .getSolutions ()
252+ assert isinstance (sol_names5 , tuple )
253+ assert sol_names5 == ('a' , 'time' )
254+
255+
209256def test_getters (tmp_path ):
210257 model_file = tmp_path / "M_getters.mo"
211258 model_file .write_text ("""
0 commit comments