@@ -915,40 +915,36 @@ def getOptimizationOptions(self, names: Optional[str | list[str]] = None) -> dic
915915
916916 raise ModelicaSystemError ("Unhandled input for getOptimizationOptions()" )
917917
918- def simulate (self ,
919- resultfile : Optional [str ] = None ,
920- simflags : Optional [str ] = None ,
921- simargs : Optional [dict [str , Optional [str | dict [str , str ]]]] = None ,
922- timeout : Optional [float ] = None ) -> None :
923- """Simulate the model according to simulation options.
918+ def simulate_cmd (
919+ self ,
920+ resultfile : pathlib .Path ,
921+ simflags : Optional [str ] = None ,
922+ simargs : Optional [dict [str , Optional [str | dict [str , str ]]]] = None ,
923+ timeout : Optional [int ] = None ,
924+ ) -> ModelicaSystemCmd :
925+ """
926+ This method prepares the simulates model according to the simulation options. It returns an instance of
927+ ModelicaSystemCmd which can be used to run the simulation.
924928
925- See setSimulationOptions().
929+ Due to the tempdir being unique for the ModelicaSystem instance, *NEVER* use this to create several simulations
930+ with the same instance of ModelicaSystem! Restart each simulation process with a new instance of ModelicaSystem.
926931
927- Args:
928- resultfile: Path to a custom result file
929- simflags: String of extra command line flags for the model binary.
930- This argument is deprecated, use simargs instead.
931- simargs: Dict with simulation runtime flags.
932- timeout: Maximum execution time in seconds.
932+ Parameters
933+ ----------
934+ resultfile
935+ simflags
936+ simargs
937+ timeout
933938
934- Examples:
935- mod.simulate()
936- mod.simulate(resultfile="a.mat")
937- mod.simulate(simflags="-noEventEmit -noRestart -override=e=0.3,g=10") # set runtime simulation flags, deprecated
938- mod.simulate(simargs={"noEventEmit": None, "noRestart": None, "override": "override": {"e": 0.3, "g": 10}}) # using simargs
939+ Returns
940+ -------
941+ An instance if ModelicaSystemCmd to run the requested simulation.
939942 """
940943
941944 om_cmd = ModelicaSystemCmd (runpath = self ._tempdir , modelname = self ._model_name , timeout = timeout )
942945
943- if resultfile is None :
944- # default result file generated by OM
945- self ._result_file = self ._tempdir / f"{ self ._model_name } _res.mat"
946- elif os .path .exists (resultfile ):
947- self ._result_file = pathlib .Path (resultfile )
948- else :
949- self ._result_file = self ._tempdir / resultfile
950- # always define the resultfile to use
951- om_cmd .arg_set (key = "r" , val = self ._result_file .as_posix ())
946+ # always define the result file to use
947+ om_cmd .arg_set (key = "r" , val = resultfile .as_posix ())
952948
953949 # allow runtime simulation flags from user input
954950 if simflags is not None :
@@ -984,6 +980,46 @@ def simulate(self,
984980
985981 om_cmd .arg_set (key = "csvInput" , val = self ._csvFile .as_posix ())
986982
983+ return om_cmd
984+
985+ def simulate (self ,
986+ resultfile : Optional [str ] = None ,
987+ simflags : Optional [str ] = None ,
988+ simargs : Optional [dict [str , Optional [str | dict [str , str ]]]] = None ,
989+ timeout : Optional [float ] = None ) -> None :
990+ """Simulate the model according to simulation options.
991+
992+ See setSimulationOptions().
993+
994+ Args:
995+ resultfile: Path to a custom result file
996+ simflags: String of extra command line flags for the model binary.
997+ This argument is deprecated, use simargs instead.
998+ simargs: Dict with simulation runtime flags.
999+ timeout: Maximum execution time in seconds.
1000+
1001+ Examples:
1002+ mod.simulate()
1003+ mod.simulate(resultfile="a.mat")
1004+ mod.simulate(simflags="-noEventEmit -noRestart -override=e=0.3,g=10") # set runtime simulation flags, deprecated
1005+ mod.simulate(simargs={"noEventEmit": None, "noRestart": None, "override": "override": {"e": 0.3, "g": 10}}) # using simargs
1006+ """
1007+
1008+ if resultfile is None :
1009+ # default result file generated by OM
1010+ self ._result_file = self ._tempdir / f"{ self ._model_name } _res.mat"
1011+ elif os .path .exists (resultfile ):
1012+ self ._result_file = pathlib .Path (resultfile )
1013+ else :
1014+ self ._result_file = self ._tempdir / resultfile
1015+
1016+ om_cmd = self .simulate_cmd (
1017+ resultfile = self ._result_file ,
1018+ simflags = simflags ,
1019+ simargs = simargs ,
1020+ timeout = timeout ,
1021+ )
1022+
9871023 # delete resultfile ...
9881024 if self ._result_file .is_file ():
9891025 self ._result_file .unlink ()
0 commit comments