How to set different working directories for parallel simulations?

asked 2019-10-24 01:20:48 -0600

scrox gravatar image

Hi!

I want to run simultaneously multiple simulations. The problem is that every simulation exports its files to the same folder, "Output_EPExport_Slave", in the current working directory. It therefore overwrites variables.cfg file and the first simulation fails since it cannot find the corresponding variables.

Is there are way to set different working directories? In my code you can see a work-around. I would like to avoid that. The different folder paths in the load_fmu seems not to set the working directory. Not sure whether that is a Energyplus or PyFMI problem.

from   pyfmi import load_fmu,fmi
import numpy as np
import os      
model1_fmu  = 'file.fmu'
model2_fmu  = 'file.fmu'
model1_path = 'path'
model2_path = 'path'
os.chdir(model1_path)
model1      = load_fmu(model1_fmu,model1_path)
os.chdir(model2_path)
model2      = load_fmu(model2_fmu,model2_path)
final_time  = 60*60*24*3
step_size   = 60*10
start_time  = 0
os.chdir(model1_path)
model1.initialize(start_time,final_time)
os.chdir(model2_path)    
model2.initialize(start_time,final_time)
t_step      = start_time
res_heat1 = []
res_heat2 = []
while t_step < final_time:
    print(t_step)
    temperature = 15.
    shading     = 6
    model1.set('drybulbtemp',temperature)
    model2.set('yShade', shading)
    os.chdir(model1_path)
    status1 = model1.do_step(current_t=t_step, step_size=step_size)
    os.chdir(model2_path)
    status2 = model2.do_step(current_t=t_step, step_size=step_size)
    print('Status: ',status1,' ',status2)

    res_heat1.append(model1.get('heat')[0])
    res_heat2.append(model2.get('heat')[0])

    t_step += step_size
edit retag flag offensive close merge delete

Comments

I know it is not what you are looking for, but you could run two different python instances pointing two different folders: you could avoid all those "chdir" commands.

Gio gravatar imageGio ( 2019-10-25 01:43:30 -0600 )edit

that is possible, maybe with acron in linux. but it would make the simulation set-up not easier and I would lose central steering options with PyFMI

scrox gravatar imagescrox ( 2019-10-27 00:29:04 -0600 )edit