Skip to content

Commit 51a29f5

Browse files
committed
[ModelicaSystemDoE] update variable handling / remove variables not needed
1 parent 0737297 commit 51a29f5

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
@@ -1871,17 +1871,20 @@ def run_doe():
18711871

18721872
def __init__(
18731873
self,
1874+
# data to be used for ModelicaSystem
18741875
fileName: Optional[str | os.PathLike] = None,
18751876
modelName: Optional[str] = None,
18761877
lmodel: Optional[list[str | tuple[str, str]]] = None,
18771878
commandLineOptions: Optional[list[str]] = None,
18781879
variableFilter: Optional[str] = None,
18791880
customBuildDirectory: Optional[str | os.PathLike] = None,
18801881
omhome: Optional[str] = None,
1881-
1882+
omc_process: Optional[OMCProcess] = None, # TODO: use omc session
1883+
# simulation specific input
1884+
# TODO: add more settings (simulation options, input options, ...)
18821885
simargs: Optional[dict[str, Optional[str | dict[str, str] | numbers.Number]]] = None,
18831886
timeout: Optional[int] = None,
1884-
1887+
# DoE specific inputs
18851888
resultpath: Optional[str | os.PathLike] = None,
18861889
parameters: Optional[dict[str, list[str] | list[int] | list[float]]] = None,
18871890
) -> None:
@@ -1890,36 +1893,30 @@ def __init__(
18901893
ModelicaSystem.simulate(). Additionally, the path to store the result files is needed (= resultpath) as well as
18911894
a list of parameters to vary for the Doe (= parameters). All possible combinations are considered.
18921895
"""
1893-
self._lmodel = lmodel
1894-
self._modelName = modelName
1895-
self._fileName = fileName
1896-
1897-
self._CommandLineOptions = commandLineOptions
1898-
self._variableFilter = variableFilter
1899-
self._customBuildDirectory = customBuildDirectory
1900-
self._omhome = omhome
19011896

1902-
# reference for the model; not used for any simulations but to evaluate parameters, etc.
19031897
self._mod = ModelicaSystem(
1904-
fileName=self._fileName,
1905-
modelName=self._modelName,
1906-
lmodel=self._lmodel,
1907-
commandLineOptions=self._CommandLineOptions,
1908-
variableFilter=self._variableFilter,
1909-
customBuildDirectory=self._customBuildDirectory,
1910-
omhome=self._omhome,
1898+
fileName=fileName,
1899+
modelName=modelName,
1900+
lmodel=lmodel,
1901+
commandLineOptions=commandLineOptions,
1902+
variableFilter=variableFilter,
1903+
customBuildDirectory=customBuildDirectory,
1904+
omhome=omhome,
1905+
omc_process=omc_process,
19111906
)
19121907

1908+
self._model_name = modelName
1909+
19131910
self._simargs = simargs
19141911
self._timeout = timeout
19151912

1916-
if resultpath is not None:
1917-
self._resultpath = self.session().omcpath(resultpath)
1918-
else:
1913+
if resultpath is None:
19191914
self._resultpath = self.session().omcpath_tempdir()
1920-
1915+
else:
1916+
self._resultpath = self.session().omcpath(resultpath)
19211917
if not self._resultpath.is_dir():
1922-
raise ModelicaSystemError(f"Resultpath {self._resultpath.as_posix()} does not exists!")
1918+
raise ModelicaSystemError("Argument resultpath must be set to a valid path within the environment used "
1919+
f"for the OpenModelica session: {resultpath}!")
19231920

19241921
if isinstance(parameters, dict):
19251922
self._parameters = parameters
@@ -1973,15 +1970,15 @@ def prepare(self) -> int:
19731970
pk_value = pc_structure[idx_structure]
19741971
if isinstance(pk_value, str):
19751972
pk_value_str = pk_value.replace('"', '\\"')
1976-
expression = f"setParameterValue({self._modelName}, {pk_structure}, \"{pk_value_str}\")"
1973+
expression = f"setParameterValue({self._model_name}, {pk_structure}, \"{pk_value_str}\")"
19771974
elif isinstance(pk_value, bool):
19781975
pk_value_bool_str = "true" if pk_value else "false"
1979-
expression = f"setParameterValue({self._modelName}, {pk_structure}, {pk_value_bool_str});"
1976+
expression = f"setParameterValue({self._model_name}, {pk_structure}, {pk_value_bool_str});"
19801977
else:
1981-
expression = f"setParameterValue({self._modelName}, {pk_structure}, {pk_value})"
1978+
expression = f"setParameterValue({self._model_name}, {pk_structure}, {pk_value})"
19821979
res = self._mod.sendExpression(expression)
19831980
if not res:
1984-
raise ModelicaSystemError(f"Cannot set structural parameter {self._modelName}.{pk_structure} "
1981+
raise ModelicaSystemError(f"Cannot set structural parameter {self._model_name}.{pk_structure} "
19851982
f"to {pk_value} using {repr(expression)}")
19861983

19871984
self._mod.buildModel()

0 commit comments

Comments
 (0)