From 887016e2658521c333d31bdfaa4fd03506b5b774 Mon Sep 17 00:00:00 2001 From: Wes Brewer Date: Thu, 26 Feb 2026 21:55:41 -0500 Subject: [PATCH] Fix crash when FMU lacks centralEnergyPlant (e.g. lassen) Guard CEP data extraction with a key check so systems whose FMU does not output a centralEnergyPlant component can still run with cooling enabled, producing CDU data but an empty CEP list. Co-Authored-By: Claude Sonnet 4.6 --- simulation_server/simulation/simulation.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/simulation_server/simulation/simulation.py b/simulation_server/simulation/simulation.py index bb68f4b..5039127 100644 --- a/simulation_server/simulation/simulation.py +++ b/simulation_server/simulation/simulation.py @@ -223,8 +223,9 @@ def run_simulation(sim_config: ServerSimConfig): "facility_flowrate": cdu_data['V_flow_prim_GPM'], } - cep_data = fmu_data['simulator'][1]['centralEnergyPlant'][1] - cooling_sim_cep = [CoolingSimCEP.model_validate({ + if 'centralEnergyPlant' in fmu_data['simulator'][1]: + cep_data = fmu_data['simulator'][1]['centralEnergyPlant'][1] + cooling_sim_cep = [CoolingSimCEP.model_validate({ "timestamp": timestamp, "htw_flowrate": cep_data['hotWaterLoop'][1]['summary']['V_flow_htw_GPM'], "ctw_flowrate": cep_data['coolingTowerLoop'][1]['summary']['V_flow_ctw_GPM'], @@ -247,7 +248,7 @@ def run_simulation(sim_config: ServerSimConfig): "ncts_staged": cep_data['coolingTowerLoop'][1]['summary']['n_CTs'], "facility_return_temp": cep_data['hotWaterLoop'][1]['summary']['T_fac_htw_r_C'], "cdu_loop_bypass_flowrate": fmu_data['simulator'][1]['datacenter'][1]['summary']['V_flow_bypass_GPM'], - })] + })] for cdu_index, cdu_data in cooling_sim_cdu_map.items(): cdu_name, row, col = cdu_info(cdu_index) -- GitLab