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

Revision history [back]

The first severe error message indicates that the construction assembly name referenced by the EMS Construction Index Variable EMS_Cons_High_Abs is not found in the model. In DesignBuilder, you need to create a construction assembly named High Absorptance Construction to match what the EMS Construction Index Variable is referencing. While you're doing that, you should also make sure that there is a construction assembly named Low Absorptance Construction that the EMS_Cons_Low_Abs EMS Construction Index Variable is referencing.

Besides that fix, another issue that I see is that in your EMS Program, you are setting the Actuator for each surface to the name of a Material object instead of the name of the EMS Construction Index Variable. Your program should be updated like below (assuming you want high absorptance when surface temperature is < 28 C):

EnergyManagementSystem:Program,
  Thermo,
  <ForAllExternalSurfaces>
  if Surface_Outside_Face_Temperature_<LoopSurfaceVariableName> < 28,
  set Surface_Cons_State_<LoopSurfaceVariableName> = EMS_Cons_High_Abs,  ! High absorptance (darker) 
  elseif Surface_Outside_Face_Temperature_<LoopSurfaceVariableName> > 28,
  set Surface_Cons_State_<LoopSurfaceVariableName> = EMS_Cons_Low_Abs,  ! Low absorptance (lighter) 
  endif,
  <LoopNextSurface>
  ;

The first severe error message indicates that the construction assembly name referenced by the EMS Construction Index Variable EMS Construction Index Variable EMS_Cons_High_Abs is not found in the model. In DesignBuilder, you need to create a construction assembly named High Absorptance Construction to match what the EMS Construction Index Variable is referencing. While you're doing that, you should also make sure that there is a construction assembly named Low Absorptance Construction that the EMS_Cons_Low_Abs EMS Construction Index Variable is referencing.

For more background, you can see an example of using EMS to apply thermochromic windows here.

Besides that fix, another issue that I see is that in your EMS Program, you are setting the Actuator for each surface to the name of a Material object instead of the name of the EMS Construction Index Variable. Your program should be updated like below (assuming you want high absorptance when surface temperature is < 28 C):

EnergyManagementSystem:Program,
  Thermo,
  <ForAllExternalSurfaces>
  if Surface_Outside_Face_Temperature_<LoopSurfaceVariableName> < 28,
  set Surface_Cons_State_<LoopSurfaceVariableName> = EMS_Cons_High_Abs,  ! High absorptance (darker) 
  elseif Surface_Outside_Face_Temperature_<LoopSurfaceVariableName> > 28,
  set Surface_Cons_State_<LoopSurfaceVariableName> = EMS_Cons_Low_Abs,  ! Low absorptance (lighter) 
  endif,
  <LoopNextSurface>
  ;