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