6

How do I run a simulation by using c#?

It is possible to run the simulation by using c# API? Instead to open the model and click on the run tab, I want to run the simulation like this model.runSimulation(). I need this to get the sqlFile from EnergyPlus. Otherwise the Path "/Model/Run/5-EnergyPlus-0" is emtpy.

Thanks for helping

gg_student's avatar
289
gg_student
asked 2016-01-12 09:24:26 -0500
__AmirRoth__'s avatar
4.4k
__AmirRoth__
updated 2016-01-22 07:02:41 -0500
edit flag offensive 0 remove flag close merge delete

Comments

add a comment see more comments

2 Answers

5

Here is my translation of the ruby project to c#.

  • Step 1: Variables
  • Step 2: Create IDF
  • Step 3: Start RunManager
  • Step 4: Found EnergyPlus.exe File
  • Step 5: Simulation
  • Step 6: Read SQL File

       //_path must be your Folder of Saving the Project z.B. C://OpenStudio//Projects//...
        string e _runDirStr =_path + "\\run";
        string _sqlPathStr = _runDirStr + "\\EnergyPlus\\eplusout.sql";
        string _epDirStr = "C:\\EnergyPlusV8-4-0";
        string _epPathStr = _epDirStr + "\\energyplus.exe";
        string idd_pathStr = _epDirStr + "\\Energy+.idd";
        string  outputPathStr = _runDirStr;
    
        Path _epPath = new Path(_epPathStr);
        Path _sqlPath = new Path(_sqlPathStr);
    
        System.IO.Directory.CreateDirectory(_path);
        System.IO.Directory.CreateDirectory(_runDirStr);
    
        SimulationControl control = _model.getSimulationControl();
        control.setDoPlantSizingCalculation(true);
        control.setDoZoneSizingCalculation(true);
        control.setRunSimulationforSizingPeriods(false); //do not use DesignDays
        control.setRunSimulationforWeatherFileRunPeriods(true); //use Weatherfile
    
        //Export IDF
        string idf_name, osm_name;
        idf_name = "simulation_in.idf";
        osm_name = "simulation_ThesisModel.osm";
        EnergyPlusForwardTranslator translator = new EnergyPlusForwardTranslator();
        Workspace idf = translator.translateModel(_model);
        //IdfFile idf_file =  _model.toIdfFile();
        _idfPathStr = _runDirStr + "\\" + idf_name;
        osmPathStr = _runDirStr + "\\" + osm_name;
        idf.save(new Path(_idfPathStr),true);
        _model.save(new Path(osmPathStr), true);
    
        //Runmanager
        Path runManagerPath = new Path(_runDirStr + "\\simulation_runmanager.db");
        RunManager run = new RunManager(runManagerPath, true, false, false, false);
        ToolInfo tool = new ToolInfo(_epPath);
        Job job = JobFactory.createEnergyPlusJob(tool, new Path(idd_pathStr), new Path(_idfPathStr), _weatherFilePath, new Path(outputPathStr));
        run.enqueue(job, true);
        run.setPaused(false);
        run.workPending();
    
        //start Simulation
        //run.runWorkflow(new Path(job.toJSON()),new Path(_idfPath),new Path(_runDir), new Tools(),"");
        Workflow sim = new Workflow(job);
        sim.create(new Path(outputPathStr), new Path(new Path(_idfPathStr)));
    
        //read results
        if (System.IO.File.Exists(_sqlPathStr))
        {
            _model.setSqlFile(new SqlFile(_sqlPath));
        }
    
gg_student's avatar
289
gg_student
answered 2016-01-22 04:36:42 -0500
Julien Marrec's avatar
29.7k
Julien Marrec
updated 2016-01-22 06:25:02 -0500
edit flag offensive 0 remove flag delete link

Comments

Great job, we should accept your answer but it can't be done until January 29th

Julien Marrec's avatar Julien Marrec (2016-01-22 06:26:08 -0500) edit

Thank you. I will do it at January 29th.

gg_student's avatar gg_student (2016-01-22 14:25:08 -0500) edit

hi, I used your code, everything was fine. Visual Studio doesn't find two classes. " RunManager , Workflow , Job " Where can I find their assemblies?

reza3ker's avatar reza3ker (2018-09-08 05:06:56 -0500) edit

Where can I find examples of OpenStudio API that are written by C #?

reza3ker's avatar reza3ker (2018-09-08 05:09:49 -0500) edit

@reza3ker, you should open your own question for clarity.

Julien Marrec's avatar Julien Marrec (2018-09-10 03:42:51 -0500) edit
add a comment see more comments
4

I suggest you check out the DOE Prototype project. It's written in Ruby but it's readable even if you know nothing about Ruby. You just have to transcribe this bit where they launch a run and get some results out of the sql file to C#: Prototype.Model.rb

Julien Marrec's avatar
29.7k
Julien Marrec
answered 2016-01-12 09:39:35 -0500
edit flag offensive 0 remove flag delete link

Comments

Thank you. That is it! I could translate it to c# and know I can run the simulation.

gg_student's avatar gg_student (2016-01-13 04:49:38 -0500) edit

Can you post an answer with your C# translation in there so that it can help others in the future? Or if you don't want, mark this answer as accepted please

Julien Marrec's avatar Julien Marrec (2016-01-14 09:23:11 -0500) edit

I already not finish know. But when I have the full translation, I will post it!

gg_student's avatar gg_student (2016-01-14 09:49:38 -0500) edit

@gg_student did you finished your translation? would be great to see some example

mdengusiak's avatar mdengusiak (2021-01-28 06:28:34 -0500) edit
add a comment see more comments