@@ -206,6 +206,55 @@ 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 .setWorkDirectory (pathlib .Path (__file__ ).parent .parent / 'xyz' )
212+ mod .model (
213+ model_file = model_firstorder ,
214+ model_name = "M" ,
215+ )
216+
217+ x0 = 1
218+ a = - 1
219+ tau = - 1 / a
220+ stopTime = 5 * tau
221+
222+ simOptions = {"stopTime" : stopTime , "stepSize" : 0.1 , "tolerance" : 1e-8 }
223+ mod .setSimulationOptions (** simOptions )
224+ mod .simulate ()
225+ sol_names1 = mod .getSolutions ()
226+ assert isinstance (sol_names1 , tuple )
227+ assert sol_names1 == ('a' , 'der(x)' , 'time' , 'x' )
228+
229+ mod .set_variable_filter (variable_filter = 'x' )
230+ mod .setSimulationOptions (stopTime = 2.0 )
231+ mod .simulate ()
232+ sol_names2 = mod .getSolutions ()
233+ assert isinstance (sol_names2 , tuple )
234+ assert sol_names2 == ('a' , 'time' , 'x' )
235+
236+ mod .set_variable_filter (variable_filter = 'der(x)' )
237+ mod .setSimulationOptions (stopTime = 3.0 )
238+ mod .simulate ()
239+ sol_names3 = mod .getSolutions ()
240+ assert isinstance (sol_names3 , tuple )
241+ assert sol_names3 == ('a' , 'time' )
242+
243+ mod .set_variable_filter (variable_filter = 'der(x)' , escape = True )
244+ mod .setSimulationOptions (stopTime = 3.0 )
245+ mod .simulate ()
246+ sol_names4 = mod .getSolutions ()
247+ assert isinstance (sol_names4 , tuple )
248+ assert sol_names4 == ('a' , 'der(x)' , 'time' )
249+
250+ mod .set_variable_filter (variable_filter = 'a' )
251+ mod .setSimulationOptions (stopTime = 2.0 )
252+ mod .simulate ()
253+ sol_names5 = mod .getSolutions ()
254+ assert isinstance (sol_names5 , tuple )
255+ assert sol_names5 == ('a' , 'time' )
256+
257+
209258def test_getters (tmp_path ):
210259 model_file = tmp_path / "M_getters.mo"
211260 model_file .write_text ("""
0 commit comments