From f2da10056f9631d34a10c88b22007aa59eb30d19 Mon Sep 17 00:00:00 2001 From: syntron Date: Fri, 13 Jun 2025 13:16:52 +0200 Subject: [PATCH 1/3] [ModelicaSystem] cleanup getSolutions() --- OMPython/ModelicaSystem.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/OMPython/ModelicaSystem.py b/OMPython/ModelicaSystem.py index 01269875..b9baae95 100644 --- a/OMPython/ModelicaSystem.py +++ b/OMPython/ModelicaSystem.py @@ -950,14 +950,18 @@ def getSolutions(self, varList=None, resultfile=None): # 12 >>> getSolutions(["Name1","Name2"],resultfile=""c:/a.mat"") """ if resultfile is None: - resFile = self.resultfile.as_posix() + result_file = self.resultfile else: - resFile = resultfile + result_file = pathlib.Path(resultfile) # check for result file exits - if not os.path.exists(resFile): - raise ModelicaSystemError(f"Result file does not exist {resFile}") - resultVars = self.sendExpression(f'readSimulationResultVars("{resFile}")') + if not result_file.is_file(): + raise ModelicaSystemError(f"Result file does not exist {result_file}") + + # get absolute path + result_file = result_file.absolute() + + resultVars = self.sendExpression(f'readSimulationResultVars("{result_file.as_posix()}")') self.sendExpression("closeSimulationResultFile()") if varList is None: return resultVars @@ -965,7 +969,7 @@ def getSolutions(self, varList=None, resultfile=None): # 12 if isinstance(varList, str): if varList not in resultVars and varList != "time": raise ModelicaSystemError(f"Requested data {repr(varList)} does not exist") - res = self.sendExpression(f'readSimulationResult("{resFile}", {{{varList}}})') + res = self.sendExpression(f'readSimulationResult("{result_file.as_posix()}", {{{varList}}})') npRes = np.array(res) self.sendExpression("closeSimulationResultFile()") return npRes @@ -977,7 +981,7 @@ def getSolutions(self, varList=None, resultfile=None): # 12 if var not in resultVars: raise ModelicaSystemError(f"Requested data {repr(var)} does not exist") variables = ",".join(varList) - res = self.sendExpression(f'readSimulationResult("{resFile}",{{{variables}}})') + res = self.sendExpression(f'readSimulationResult("{result_file.as_posix()}",{{{variables}}})') npRes = np.array(res) self.sendExpression("closeSimulationResultFile()") return npRes From ee51e3fc818ab6008ca578ffc1a876595b58f7e1 Mon Sep 17 00:00:00 2001 From: syntron Date: Sat, 28 Jun 2025 21:04:31 +0200 Subject: [PATCH 2/3] [ModelicaSystem] improve getSolutions() * convert str input data to list such that both cases use the same code --- OMPython/ModelicaSystem.py | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/OMPython/ModelicaSystem.py b/OMPython/ModelicaSystem.py index b9baae95..e1870d65 100644 --- a/OMPython/ModelicaSystem.py +++ b/OMPython/ModelicaSystem.py @@ -967,26 +967,22 @@ def getSolutions(self, varList=None, resultfile=None): # 12 return resultVars if isinstance(varList, str): - if varList not in resultVars and varList != "time": - raise ModelicaSystemError(f"Requested data {repr(varList)} does not exist") - res = self.sendExpression(f'readSimulationResult("{result_file.as_posix()}", {{{varList}}})') - npRes = np.array(res) - self.sendExpression("closeSimulationResultFile()") - return npRes - - if isinstance(varList, list): - for var in varList: - if var == "time": - continue - if var not in resultVars: - raise ModelicaSystemError(f"Requested data {repr(var)} does not exist") - variables = ",".join(varList) - res = self.sendExpression(f'readSimulationResult("{result_file.as_posix()}",{{{variables}}})') - npRes = np.array(res) - self.sendExpression("closeSimulationResultFile()") - return npRes - - raise ModelicaSystemError("Unhandled input for getSolutions()") + var_list_checked = [varList] + elif isinstance(varList, list): + var_list_checked = varList + else: + raise ModelicaSystemError("Unhandled input for getSolutions()") + + for var in var_list_checked: + if var == "time": + continue + if var not in resultVars: + raise ModelicaSystemError(f"Requested data {repr(var)} does not exist") + variables = ",".join(var_list_checked) + res = self.sendExpression(f'readSimulationResult("{result_file.as_posix()}",{{{variables}}})') + npRes = np.array(res) + self.sendExpression("closeSimulationResultFile()") + return npRes @staticmethod def _strip_space(name): From 6061fcc76f95ef069c8a3e9b4bb27e138775da52 Mon Sep 17 00:00:00 2001 From: syntron Date: Sat, 28 Jun 2025 21:50:13 +0200 Subject: [PATCH 3/3] [ModelicaSystem.getSolution] rename variables --- OMPython/ModelicaSystem.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/OMPython/ModelicaSystem.py b/OMPython/ModelicaSystem.py index e1870d65..91b3a32e 100644 --- a/OMPython/ModelicaSystem.py +++ b/OMPython/ModelicaSystem.py @@ -961,10 +961,10 @@ def getSolutions(self, varList=None, resultfile=None): # 12 # get absolute path result_file = result_file.absolute() - resultVars = self.sendExpression(f'readSimulationResultVars("{result_file.as_posix()}")') + result_vars = self.sendExpression(f'readSimulationResultVars("{result_file.as_posix()}")') self.sendExpression("closeSimulationResultFile()") if varList is None: - return resultVars + return result_vars if isinstance(varList, str): var_list_checked = [varList] @@ -976,13 +976,13 @@ def getSolutions(self, varList=None, resultfile=None): # 12 for var in var_list_checked: if var == "time": continue - if var not in resultVars: + if var not in result_vars: raise ModelicaSystemError(f"Requested data {repr(var)} does not exist") variables = ",".join(var_list_checked) res = self.sendExpression(f'readSimulationResult("{result_file.as_posix()}",{{{variables}}})') - npRes = np.array(res) + np_res = np.array(res) self.sendExpression("closeSimulationResultFile()") - return npRes + return np_res @staticmethod def _strip_space(name):