Skip to content

Commit 92057da

Browse files
committed
[ModelicaSystemDoE] update variable handling / remove variables not needed
1 parent c9ebd94 commit 92057da

1 file changed

Lines changed: 24 additions & 27 deletions

File tree

OMPython/ModelicaSystem.py

Lines changed: 24 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1835,17 +1835,20 @@ def run_doe():
18351835

18361836
def __init__(
18371837
self,
1838+
# data to be used for ModelicaSystem
18381839
fileName: Optional[str | os.PathLike] = None,
18391840
modelName: Optional[str] = None,
18401841
lmodel: Optional[list[str | tuple[str, str]]] = None,
18411842
commandLineOptions: Optional[list[str]] = None,
18421843
variableFilter: Optional[str] = None,
18431844
customBuildDirectory: Optional[str | os.PathLike] = None,
18441845
omhome: Optional[str] = None,
1845-
1846+
omc_process: Optional[OMCProcess] = None, # TODO: use omc session
1847+
# simulation specific input
1848+
# TODO: add more settings (simulation options, input options, ...)
18461849
simargs: Optional[dict[str, Optional[str | dict[str, str] | numbers.Number]]] = None,
18471850
timeout: Optional[int] = None,
1848-
1851+
# DoE specific inputs
18491852
resultpath: Optional[str | os.PathLike] = None,
18501853
parameters: Optional[dict[str, list[str] | list[int] | list[float]]] = None,
18511854
) -> None:
@@ -1854,36 +1857,30 @@ def __init__(
18541857
ModelicaSystem.simulate(). Additionally, the path to store the result files is needed (= resultpath) as well as
18551858
a list of parameters to vary for the Doe (= parameters). All possible combinations are considered.
18561859
"""
1857-
self._lmodel = lmodel
1858-
self._modelName = modelName
1859-
self._fileName = fileName
1860-
1861-
self._CommandLineOptions = commandLineOptions
1862-
self._variableFilter = variableFilter
1863-
self._customBuildDirectory = customBuildDirectory
1864-
self._omhome = omhome
18651860

1866-
# reference for the model; not used for any simulations but to evaluate parameters, etc.
18671861
self._mod = ModelicaSystem(
1868-
fileName=self._fileName,
1869-
modelName=self._modelName,
1870-
lmodel=self._lmodel,
1871-
commandLineOptions=self._CommandLineOptions,
1872-
variableFilter=self._variableFilter,
1873-
customBuildDirectory=self._customBuildDirectory,
1874-
omhome=self._omhome,
1862+
fileName=fileName,
1863+
modelName=modelName,
1864+
lmodel=lmodel,
1865+
commandLineOptions=commandLineOptions,
1866+
variableFilter=variableFilter,
1867+
customBuildDirectory=customBuildDirectory,
1868+
omhome=omhome,
1869+
omc_process=omc_process,
18751870
)
18761871

1872+
self._model_name = modelName
1873+
18771874
self._simargs = simargs
18781875
self._timeout = timeout
18791876

1880-
if resultpath is not None:
1881-
self._resultpath = self.session().omcpath(resultpath)
1882-
else:
1877+
if resultpath is None:
18831878
self._resultpath = self.session().omcpath_tempdir()
1884-
1879+
else:
1880+
self._resultpath = self.session().omcpath(resultpath)
18851881
if not self._resultpath.is_dir():
1886-
raise ModelicaSystemError(f"Resultpath {self._resultpath.as_posix()} does not exists!")
1882+
raise ModelicaSystemError("Argument resultpath must be set to a valid path within the environment used "
1883+
f"for the OpenModelica session: {resultpath}!")
18871884

18881885
if isinstance(parameters, dict):
18891886
self._parameters = parameters
@@ -1937,15 +1934,15 @@ def prepare(self) -> int:
19371934
pk_value = pc_structure[idx_structure]
19381935
if isinstance(pk_value, str):
19391936
pk_value_str = pk_value.replace('"', '\\"')
1940-
expression = f"setParameterValue({self._modelName}, {pk_structure}, \"{pk_value_str}\")"
1937+
expression = f"setParameterValue({self._model_name}, {pk_structure}, \"{pk_value_str}\")"
19411938
elif isinstance(pk_value, bool):
19421939
pk_value_bool_str = "true" if pk_value else "false"
1943-
expression = f"setParameterValue({self._modelName}, {pk_structure}, {pk_value_bool_str});"
1940+
expression = f"setParameterValue({self._model_name}, {pk_structure}, {pk_value_bool_str});"
19441941
else:
1945-
expression = f"setParameterValue({self._modelName}, {pk_structure}, {pk_value})"
1942+
expression = f"setParameterValue({self._model_name}, {pk_structure}, {pk_value})"
19461943
res = self._mod.sendExpression(expression)
19471944
if not res:
1948-
raise ModelicaSystemError(f"Cannot set structural parameter {self._modelName}.{pk_structure} "
1945+
raise ModelicaSystemError(f"Cannot set structural parameter {self._model_name}.{pk_structure} "
19491946
f"to {pk_value} using {repr(expression)}")
19501947

19511948
self._mod.buildModel()

0 commit comments

Comments
 (0)