Hi
I am using eppy to run a series of premade IDF files. I have used the code segment described in "Running in parallel processes using Generators." in the eppy documentation. The code segment works perfectly for smaller series of IDF files, but I start getting errors, then I add up to 10000 plus IDF files in the queue. My error right now:
Program Version,EnergyPlus, Version 8.9.0-40101eaafd, YMD=2022.07.11 15:00, * Severe * <root> - Missing required property 'GlobalGeometryRules'. * Fatal * Errors occurred on processing input file. Preceding condition(s) cause termination. ...Summary of Errors that led to program termination: ..... Reference severe error count=1 ..... Last severe error=<root> - Missing required property 'GlobalGeometryRules'. *** Warning: Node connection errors not checked - most system input has not been read (see previous warning). *** Fatal error -- final processing. Program exited before simulations began. See previous error messages. *** EnergyPlus Warmup Error Summary. During Warmup: 0 Warning; 0 Severe Errors. *** EnergyPlus Sizing Error Summary. During Sizing: 0 Warning; 0 Severe Errors. *** EnergyPlus Terminated--Fatal Error Detected. 0 Warning; 1 Severe Errors; Elapsed Time=00hr 00min 0.40sec multiprocessing.pool.RemoteTraceback: """ Traceback (most recent call last): File "C:\Users\ms-admin\AppData\Local\Programs\Python\Python38\lib\site-packages\eppy\runner\run_functions.py", line 374, in run check_call(cmd) File "C:\Users\ms-admin\AppData\Local\Programs\Python\Python38\lib\subprocess.py", line 364, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '['C:/EnergyPlusV8-9-0\energyplus.exe', '--weather', 'E:\BetweenBlinds\Between_LosAngeles__Beijing\LAX\EnergySim\LAX.epw', '--output-directory', 'E:\BetweenBlinds\Between_LosAngeles__Beijing\LAX\EnergySim\Unlimited\smallOffice__WFR10__NE__BetweenBlinds15__70__LOWE__2Layer__PO__300_Wm2\EnergyPlus', '--expandobjects', '--readvars', '--output-prefix', 'smallOffice__WFR10__NE__BetweenBlinds15__70__LOWE__2Layer__PO__300_Wm2', '--output-suffix', 'C', 'C:\Windows\system32\multi_runs\idf_45554\in.idf']' returned non-zero exit status 1.
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "C:\Users\ms-admin\AppData\Local\Programs\Python\Python38\lib\multiprocessing\pool.py", line 125, in worker result = (True, func(args, *kwds)) File "C:\Users\ms-admin\AppData\Local\Programs\Python\Python38\lib\site-packages\eppy\runner\run_functions.py", line 215, in multirunner run(args[0], *args[1]) File "C:\Users\ms-admin\AppData\Local\Programs\Python\Python38\lib\site-packages\eppy\runner\run_functions.py", line 389, in run raise EnergyPlusRunError(message) eppy.runner.run_functions.EnergyPlusRunError:
But the GlobalGeometryRules are in the IDF files for the given file. Therefore I am inclined to believe the error is occurring. Then I run many IDF files (10000+). Therefore I would be interested if anyone knew how to catch these errors in the Eppy foundation before it crashes my program.
def make_eplaunch_options(idf):
"""Make options for run, so that it runs like EPLaunch on Windows"""
idfversion = idf.idfobjects['version'][0].Version_Identifier.split('.')
idfversion.extend([0] * (3 - len(idfversion)))
idfversionstr = '-'.join([str(item) for item in idfversion])
fname = idf.idfname
options = {
'ep_version':idfversionstr, # runIDFs needs the version number
'output_prefix':os.path.basename(fname).split('.')[0],
'output_suffix':'C',
'output_directory':os.path.dirname(fname),
'readvars':True,
'expandobjects':True
}
return options
def energy_simulations(recipe, log, config, fnames):
"""
Run all no-MSF energy simulations
"""
iddfile = os.path.join(config.getValue('path', "energyplus"),"Energy+.idd")
log.debug("Energyplus version:" + iddfile)
IDF.setiddname(iddfile)
epwfile = recipe.location_folder + "\\EnergySim\\{}.epw".format(recipe.IATA)
while len(fnames) > 0:
idfs = (IDF(fname, epwfile) for fname in fnames)
runs = ((idf, make_eplaunch_options(idf) ) for idf in idfs)
num_CPUs = recipe.threadcapacity
log.debug("Cores in use:" + str(num_CPUs))
runIDFs(runs, num_CPUs)
#Checks that all simulation have runned if not they will be re-run
problems = []
for path in fnames:
if not os.path.exists((path.split(".")[0] + ".csv")):
problems.append(path)
fnames = problems
log.debug("Problems cases in No-MSF:" + str(fnames))
Please write if you need more information.
Best Rasmus