@@ -1031,6 +1031,33 @@ def _parse_om_version(self, version: str) -> tuple[int, int, int]:
10311031
10321032 return major , minor , patch
10331033
1034+ def _process_override_data (
1035+ self ,
1036+ om_cmd : ModelicaSystemCmd ,
1037+ override_file : OMCPath ,
1038+ override_var : dict [str , str ],
1039+ override_sim : dict [str , str ],
1040+ ) -> None :
1041+ if not override_var and not override_sim :
1042+ return
1043+
1044+ override_content = ""
1045+ if override_var :
1046+ override_content += "\n " .join ([f"{ key } ={ value } " for key , value in override_var .items ()]) + "\n "
1047+
1048+ # simulation options are not read from override file from version >= 1.26.0,
1049+ # pass them to simulation executable directly as individual arguments
1050+ # see https://github.com/OpenModelica/OpenModelica/pull/14813
1051+ if override_sim :
1052+ if self ._version >= (1 , 26 , 0 ):
1053+ for key , opt_value in override_sim .items ():
1054+ om_cmd .arg_set (key = key , val = str (opt_value ))
1055+ else :
1056+ override_content += "\n " .join ([f"{ key } ={ value } " for key , value in override_sim .items ()]) + "\n "
1057+
1058+ override_file .write_text (override_content )
1059+ om_cmd .arg_set (key = "overrideFile" , val = override_file .as_posix ())
1060+
10341061 def simulate_cmd (
10351062 self ,
10361063 result_file : OMCPath ,
@@ -1074,28 +1101,12 @@ def simulate_cmd(
10741101 if simargs :
10751102 om_cmd .args_set (args = simargs )
10761103
1077- if self ._override_variables or self ._simulate_options_override :
1078- override_file = result_file .parent / f"{ result_file .stem } _override.txt"
1079-
1080- # simulation options are not read from override file from version >= 1.26.0,
1081- # pass them to simulation executable directly as individual arguments
1082- # see https://github.com/OpenModelica/OpenModelica/pull/14813
1083- if self ._version >= Version ("1.26.0" ):
1084- for key , opt_value in self ._simulate_options_override .items ():
1085- om_cmd .arg_set (key = key , val = str (opt_value ))
1086- override_content = (
1087- "\n " .join ([f"{ key } ={ value } " for key , value in self ._override_variables .items ()])
1088- + "\n "
1089- )
1090- else :
1091- override_content = (
1092- "\n " .join ([f"{ key } ={ value } " for key , value in self ._override_variables .items ()])
1093- + "\n " .join ([f"{ key } ={ value } " for key , value in self ._simulate_options_override .items ()])
1094- + "\n "
1095- )
1096-
1097- override_file .write_text (override_content )
1098- om_cmd .arg_set (key = "overrideFile" , val = override_file .as_posix ())
1104+ self ._process_override_data (
1105+ om_cmd = om_cmd ,
1106+ override_file = result_file .parent / f"{ result_file .stem } _override.txt" ,
1107+ override_var = self ._override_variables ,
1108+ override_sim = self ._simulate_options_override ,
1109+ )
10991110
11001111 if self ._inputs : # if model has input quantities
11011112 for key , val in self ._inputs .items ():
@@ -1775,25 +1786,12 @@ def linearize(
17751786 modelname = self ._model_name ,
17761787 )
17771788
1778- # See comment in simulate_cmd regarding override file and OM version
1779- if self ._version >= Version ("1.26.0" ):
1780- for key , opt_value in self ._linearization_options .items ():
1781- om_cmd .arg_set (key = key , val = str (opt_value ))
1782- override_content = (
1783- "\n " .join ([f"{ key } ={ value } " for key , value in self ._override_variables .items ()])
1784- + "\n "
1785- )
1786- else :
1787- override_content = (
1788- "\n " .join ([f"{ key } ={ value } " for key , value in self ._override_variables .items ()])
1789- + "\n " .join ([f"{ key } ={ value } " for key , value in self ._linearization_options .items ()])
1790- + "\n "
1791- )
1792-
1793- override_file = self .getWorkDirectory () / f'{ self ._model_name } _override_linear.txt'
1794- override_file .write_text (override_content )
1795-
1796- om_cmd .arg_set (key = "overrideFile" , val = override_file .as_posix ())
1789+ self ._process_override_data (
1790+ om_cmd = om_cmd ,
1791+ override_file = self .getWorkDirectory () / f'{ self ._model_name } _override_linear.txt' ,
1792+ override_var = self ._override_variables ,
1793+ override_sim = self ._linearization_options ,
1794+ )
17971795
17981796 if self ._inputs :
17991797 for key , data in self ._inputs .items ():
0 commit comments