@@ -410,7 +410,6 @@ def __init__(
410410 self .inputFlag = False # for model with input quantity
411411 self .simulationFlag = False # if the model is simulated?
412412 self .outputFlag = False
413- self .csvFile : Optional [pathlib .Path ] = None # for storing inputs condition
414413 self .resultfile : Optional [pathlib .Path ] = None # for storing result file
415414 self .variableFilter = variableFilter
416415
@@ -901,6 +900,9 @@ def simulate(self, resultfile: Optional[str] = None, simflags: Optional[str] = N
901900 om_cmd .arg_set (key = "overrideFile" , val = overrideFile .as_posix ())
902901
903902 if self .inputFlag : # if model has input quantities
903+ # csvfile is based on name used for result file
904+ csvfile = resultfile .parent / f"{ resultfile .stem } .csv"
905+
904906 for i in self .inputlist :
905907 val = self .inputlist [i ]
906908 if val is None :
@@ -912,9 +914,11 @@ def simulate(self, resultfile: Optional[str] = None, simflags: Optional[str] = N
912914 raise ModelicaSystemError (f"startTime not matched for Input { i } !" )
913915 if float (self .simulateOptions ["stopTime" ]) != val [- 1 ][0 ]:
914916 raise ModelicaSystemError (f"stopTime not matched for Input { i } !" )
915- self .csvFile = self .createCSVData () # create csv file
916917
917- om_cmd .arg_set (key = "csvInput" , val = self .csvFile .as_posix ())
918+ # write csv file and store the name
919+ csvfile = self .createCSVData (csvfile = csvfile )
920+
921+ om_cmd .arg_set (key = "csvInput" , val = csvfile .as_posix ())
918922
919923 # delete resultfile ...
920924 if self .resultfile .is_file ():
@@ -1135,7 +1139,11 @@ def checkValidInputs(self, name):
11351139 else :
11361140 raise ModelicaSystemError ('Error!!! Value must be in tuple format' )
11371141
1138- def createCSVData (self ) -> pathlib .Path :
1142+ def createCSVData (self , csvfile : Optional [pathlib .Path ] = None ) -> pathlib .Path :
1143+ """
1144+ Create a csv file with inputs for the simulation/optimization of the model. If csvfile is provided as argument,
1145+ this file is used; else a generic file name is created.
1146+ """
11391147 start_time : float = float (self .simulateOptions ["startTime" ])
11401148 stop_time : float = float (self .simulateOptions ["stopTime" ])
11411149
@@ -1176,13 +1184,14 @@ def createCSVData(self) -> pathlib.Path:
11761184 ]
11771185 csv_rows .append (row )
11781186
1179- csvFile = self .tempdir / f'{ self .modelName } .csv'
1187+ if csvfile is None :
1188+ csvfile = self .tempdir / f'{ self .modelName } .csv'
11801189
1181- with open (file = csvFile , mode = "w" , encoding = "utf-8" , newline = "" ) as fh :
1190+ with open (file = csvfile , mode = "w" , encoding = "utf-8" , newline = "" ) as fh :
11821191 writer = csv .writer (fh )
11831192 writer .writerows (csv_rows )
11841193
1185- return csvFile
1194+ return csvfile
11861195
11871196 # to convert Modelica model to FMU
11881197 def convertMo2Fmu (self , version = "2.0" , fmuType = "me_cs" , fileNamePrefix = "<default>" , includeResources = True ): # 19
@@ -1298,8 +1307,8 @@ def load_module_from_path(module_name, file_path):
12981307 for l in tupleList :
12991308 if l [0 ] < float (self .simulateOptions ["startTime" ]):
13001309 raise ModelicaSystemError ('Input time value is less than simulation startTime' )
1301- self . csvFile = self .createCSVData ()
1302- om_cmd .arg_set (key = "csvInput" , val = self . csvFile .as_posix ())
1310+ csvfile = self .createCSVData ()
1311+ om_cmd .arg_set (key = "csvInput" , val = csvfile .as_posix ())
13031312
13041313 om_cmd .arg_set (key = "l" , val = str (lintime or self .linearOptions ["stopTime" ]))
13051314
0 commit comments