Question-and-Answer Resource for the Building Energy Modeling Community
Get started with the Help page

# EnergyPlus FMU running simulation for 1 time step

How can an EnergyPlus FMU (created with https://github.com/lbl-srg/EnergyPlus...) be run for the minimum timestep of 60 seconds? When attempting to run the .fmu model with PyFMI (https://github.com/modelon/PyFMI) with either

from pyfmi import load_fmu
model.initialize()


or

from pyfmi import load_fmu
final_time = 60.0*60*24*1+60
start_time = 60.0*60*24*1
idf_steps_per_hour = 60
ncp = (final_time-start_time)/(3600./idf_steps_per_hour)
opts['ncp'] = ncp
res = model.simulate(
start_time=start_time,
final_time=final_time,
options=opts
)


both return the error: [ERROR][Slave] [error][FMU status:Error] fmiInitializeSlave: The delta between the FMU stop time 86460.000000 and the FMU start time 86400.000000 must be a multiple of 86400. This is required by EnergyPlus. The current delta is 60.000000. Instantiation of Slave failed. 

How can I simulate the EnergyPlus FMU for less than 86400 seconds (1 day) as a time step? The minimal time step for EnergyPlus is 60 seconds so I'm not sure where this 1 day requirement comes in.

Edit: it appears that I can run a single 60s time step with:

start_time = 60.0*60*24*1
final_time = 60.0*60*24*3
model.initialize(start_time, final_time)
t_step = start_time
res = {}
while t_step < final_time:
res[t_step] = model.do_step(current_t=t_step, step_size=step_size, new_step=True)
t_step += step_size


Need to check that this works with non-dummy model. Thanks for reading this far! Anyone have better ideas?

edit retag close merge delete

Sort by ยป oldest newest most voted

The error is not related to the time step but to the length of the simulation. The FMU is expecting a minimum simulation length of a day (or a multiple of a day). The simulation time step can be set to 60s by adjusting the ncp parameter.

more

Thanks for clarifying, do you know if when stepping through the time steps with model.do_stepI can pass control inputs and collect the results? The documentation doesn't show any return object other than the FMU status (https://jmodelica.org/pyfmi/pyfmi.html).

Edit: It appears to work with getting the FMU variable names with model.get_model_variables() and calling each variable by name with model.get().

( 2018-12-18 16:19:03 -0500 )edit