简体   繁体   中英

Is there a way to change directory in Modelica/Dymola automatically?

I have the following problem:

I have over 20 different models which I want to simulate one after another but I want to change the simulation directory each time.

Right now I'm manually changing directory after each simulation (from ./ModelOne to ./ModelTwo) and I'd like to know if there's a way to change it automatically when I initialize or translate the new model.

Regards Nev

the best way is to write a script I think:

pathOfSave =     {"E:\\work\\modelica\\SimulationResult\\Model1\\","E:\\work\\modelica\\SimulationResult\\Model2\\"};
nbSim = 2;
pathOfMod = {   "MyModel.",
                "MyModel.};

modelsToSimulate = {    ""Model1" ,
                        "Model2"};


//If equdistant=true: ensure that the same number of data points is written in all result files
//store variables at events is disabled.
experimentSetupOutput(equdistant=false, events=false);

//Keep in the plot memory the last nbSim results
experimentSetupOutput(equdistant=false, events=false);

for i in 1:nbSim loop
    //delete the result file if it already exists
    Modelica.Utilities.Files.removeFile(pathOfSave + modelsToSimulate[i]);

    //translate models
    translateModel(pathOfMod[i]+modelsToSimulate[i]);

    // simulate
    simulateModel(
      pathOfMod[i]+modelsToSimulate[i],
      method="dassl",
      stopTime=186350,
      numberOfIntervals=nbOfPoi,
      resultFile=pathOfSave + modelsToSimulate[i]);

end for;

You can also put the command cd("mynewpath") in the initial algorithm section, if you want it tobe attached to the model.

model example
  Real variable;
protected 
  parameter String currDir = Modelica.Utilities.System.getWorkDirectory();
initial algorithm 
  cd("C:\\Users\\xxx\\Documents\\Dymola\\MyModelFolder");
equation 
  variable = time;
  when terminal() then
    cd(currDir);
  end when;
end example;

In any case you can find all commands of dymola in the manual one under the section "builtin commands".

I hope this helps, Marco

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM