@@ -1023,6 +1023,33 @@ def getOptimizationOptions(
10231023
10241024 raise ModelicaSystemError ("Unhandled input for getOptimizationOptions()" )
10251025
1026+ def _process_override_data (
1027+ self ,
1028+ om_cmd : ModelicaSystemCmd ,
1029+ override_file : OMCPath ,
1030+ override_var : dict [str , str ],
1031+ override_sim : dict [str , str ],
1032+ ) -> None :
1033+ if not override_var and not override_sim :
1034+ return
1035+
1036+ override_content = ""
1037+ if override_var :
1038+ override_content += "\n " .join ([f"{ key } ={ value } " for key , value in override_var .items ()]) + "\n "
1039+
1040+ # simulation options are not read from override file from version >= 1.26.0,
1041+ # pass them to simulation executable directly as individual arguments
1042+ # see https://github.com/OpenModelica/OpenModelica/pull/14813
1043+ if override_sim :
1044+ if self ._version >= Version ("1.26.0" ):
1045+ for key , opt_value in override_sim .items ():
1046+ om_cmd .arg_set (key = key , val = str (opt_value ))
1047+ else :
1048+ override_content += "\n " .join ([f"{ key } ={ value } " for key , value in override_sim .items ()]) + "\n "
1049+
1050+ override_file .write_text (override_content )
1051+ om_cmd .arg_set (key = "overrideFile" , val = override_file .as_posix ())
1052+
10261053 def simulate_cmd (
10271054 self ,
10281055 result_file : OMCPath ,
@@ -1066,28 +1093,12 @@ def simulate_cmd(
10661093 if simargs :
10671094 om_cmd .args_set (args = simargs )
10681095
1069- if self ._override_variables or self ._simulate_options_override :
1070- override_file = result_file .parent / f"{ result_file .stem } _override.txt"
1071-
1072- # simulation options are not read from override file from version >= 1.26.0,
1073- # pass them to simulation executable directly as individual arguments
1074- # see https://github.com/OpenModelica/OpenModelica/pull/14813
1075- if self ._version >= Version ("1.26.0" ):
1076- for key , opt_value in self ._simulate_options_override .items ():
1077- om_cmd .arg_set (key = key , val = str (opt_value ))
1078- override_content = (
1079- "\n " .join ([f"{ key } ={ value } " for key , value in self ._override_variables .items ()])
1080- + "\n "
1081- )
1082- else :
1083- override_content = (
1084- "\n " .join ([f"{ key } ={ value } " for key , value in self ._override_variables .items ()])
1085- + "\n " .join ([f"{ key } ={ value } " for key , value in self ._simulate_options_override .items ()])
1086- + "\n "
1087- )
1088-
1089- override_file .write_text (override_content )
1090- om_cmd .arg_set (key = "overrideFile" , val = override_file .as_posix ())
1096+ self ._process_override_data (
1097+ om_cmd = om_cmd ,
1098+ override_file = result_file .parent / f"{ result_file .stem } _override.txt" ,
1099+ override_var = self ._override_variables ,
1100+ override_sim = self ._simulate_options_override ,
1101+ )
10911102
10921103 if self ._inputs : # if model has input quantities
10931104 for key , val in self ._inputs .items ():
@@ -1767,25 +1778,12 @@ def linearize(
17671778 modelname = self ._model_name ,
17681779 )
17691780
1770- # See comment in simulate_cmd regarding override file and OM version
1771- if self ._version >= Version ("1.26.0" ):
1772- for key , opt_value in self ._linearization_options .items ():
1773- om_cmd .arg_set (key = key , val = str (opt_value ))
1774- override_content = (
1775- "\n " .join ([f"{ key } ={ value } " for key , value in self ._override_variables .items ()])
1776- + "\n "
1777- )
1778- else :
1779- override_content = (
1780- "\n " .join ([f"{ key } ={ value } " for key , value in self ._override_variables .items ()])
1781- + "\n " .join ([f"{ key } ={ value } " for key , value in self ._linearization_options .items ()])
1782- + "\n "
1783- )
1784-
1785- override_file = self .getWorkDirectory () / f'{ self ._model_name } _override_linear.txt'
1786- override_file .write_text (override_content )
1787-
1788- om_cmd .arg_set (key = "overrideFile" , val = override_file .as_posix ())
1781+ self ._process_override_data (
1782+ om_cmd = om_cmd ,
1783+ override_file = self .getWorkDirectory () / f'{ self ._model_name } _override_linear.txt' ,
1784+ override_var = self ._override_variables ,
1785+ override_sim = self ._linearization_options ,
1786+ )
17891787
17901788 if self ._inputs :
17911789 for key , data in self ._inputs .items ():
0 commit comments