@@ -389,7 +389,6 @@ def __init__(
389389 self ._file_name = pathlib .Path (fileName ).resolve () if fileName is not None else None # Model file/package name
390390 self ._has_inputs = False # for model with input quantity
391391 self ._simulated = False # True if the model has already been simulated
392- self ._csvFile : Optional [pathlib .Path ] = None # for storing inputs condition
393392 self ._result_file : Optional [pathlib .Path ] = None # for storing result file
394393 self ._variable_filter = variableFilter
395394
@@ -969,6 +968,9 @@ def simulate(self,
969968 om_cmd .arg_set (key = "overrideFile" , val = overrideFile .as_posix ())
970969
971970 if self ._has_inputs : # if model has input quantities
971+ # csvfile is based on name used for result file
972+ csvfile = self ._result_file .parent / f"{ self ._result_file .stem } .csv"
973+
972974 for i in self ._inputs :
973975 val = self ._inputs [i ]
974976 if val is None :
@@ -980,9 +982,11 @@ def simulate(self,
980982 raise ModelicaSystemError (f"startTime not matched for Input { i } !" )
981983 if float (self ._simulate_options ["stopTime" ]) != val [- 1 ][0 ]:
982984 raise ModelicaSystemError (f"stopTime not matched for Input { i } !" )
983- self ._csvFile = self ._createCSVData () # create csv file
984985
985- om_cmd .arg_set (key = "csvInput" , val = self ._csvFile .as_posix ())
986+ # write csv file and store the name
987+ csvfile = self ._createCSVData (csvfile = csvfile )
988+
989+ om_cmd .arg_set (key = "csvInput" , val = csvfile .as_posix ())
986990
987991 # delete resultfile ...
988992 if self ._result_file .is_file ():
@@ -1231,7 +1235,11 @@ def _checkValidInputs(self, name):
12311235 else :
12321236 raise ModelicaSystemError ('Error!!! Value must be in tuple format' )
12331237
1234- def _createCSVData (self ) -> pathlib .Path :
1238+ def _createCSVData (self , csvfile : Optional [pathlib .Path ] = None ) -> pathlib .Path :
1239+ """
1240+ Create a csv file with inputs for the simulation/optimization of the model. If csvfile is provided as argument,
1241+ this file is used; else a generic file name is created.
1242+ """
12351243 start_time : float = float (self ._simulate_options ["startTime" ])
12361244 stop_time : float = float (self ._simulate_options ["stopTime" ])
12371245
@@ -1272,13 +1280,14 @@ def _createCSVData(self) -> pathlib.Path:
12721280 ]
12731281 csv_rows .append (row )
12741282
1275- csvFile = self ._tempdir / f'{ self ._model_name } .csv'
1283+ if csvfile is None :
1284+ csvFile = self ._tempdir / f'{ self ._model_name } .csv'
12761285
1277- with open (file = csvFile , mode = "w" , encoding = "utf-8" , newline = "" ) as fh :
1286+ with open (file = csvfile , mode = "w" , encoding = "utf-8" , newline = "" ) as fh :
12781287 writer = csv .writer (fh )
12791288 writer .writerows (csv_rows )
12801289
1281- return csvFile
1290+ return csvfile
12821291
12831292 def convertMo2Fmu (self , version : str = "2.0" , fmuType : str = "me_cs" ,
12841293 fileNamePrefix : str = "<default>" ,
@@ -1422,8 +1431,8 @@ def load_module_from_path(module_name, file_path):
14221431 for l in tupleList :
14231432 if l [0 ] < float (self ._simulate_options ["startTime" ]):
14241433 raise ModelicaSystemError ('Input time value is less than simulation startTime' )
1425- self . _csvFile = self ._createCSVData ()
1426- om_cmd .arg_set (key = "csvInput" , val = self . _csvFile .as_posix ())
1434+ csvfile = self ._createCSVData ()
1435+ om_cmd .arg_set (key = "csvInput" , val = csvfile .as_posix ())
14271436
14281437 om_cmd .arg_set (key = "l" , val = str (lintime or self ._linearization_options ["stopTime" ]))
14291438
0 commit comments