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