Skip to content

ControllerMechanicalVentilation.systemOutdoorAirMethod = SizingSystem.systemOutdoorAirMethod causing fatal error #5397

@MatthewSteen

Description

@MatthewSteen

Issue overview

When the SizingSystem.systemOutdoorAirMethod = Standard62.1SimplifiedProcedure it causes a fatal error because it's passed to ControllerMechanicalVentilation.systemOutdoorAirMethod.

Program Version,EnergyPlus, Version 24.2.0-94a887817b, YMD=2025.04.17 15:21,
   ** Severe  ** <root>[Controller:MechanicalVentilation][Controller Mechanical Ventilation 1][system_outdoor_air_method] - "Standard62.1SimplifiedProcedure" - Failed to match against any enum values.
   **  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>[Controller:MechanicalVentilation][Controller Mechanical Ventilation 1][system_outdoor_air_method] - "Standard62.1SimplifiedProcedure" - Failed to match against any enum values.
   ************* 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.10sec

Current Behavior

The code for ControllerMechanicalVentilation.systemOutdoorAirMethod is expecting parity with SizingSystem.systemOutdoorAirMethod, which is incorrect per EnergyPlus IDD.

result = sizingSystem.systemOutdoorAirMethod();

EnergyPlus 24.2.0

Sizing:System,
...
  A8, \field System Outdoor Air Method
      \type choice
      \key ZoneSum
      \key Standard62.1VentilationRateProcedure
      \key Standard62.1SimplifiedProcedure
      \default ZoneSum
Controller:MechanicalVentilation,
...
   A4,  \field System Outdoor Air Method
        \type choice
        \key ZoneSum
        \key Standard62.1VentilationRateProcedure
        \key Standard62.1VentilationRateProcedureWithLimit
        \key IndoorAirQualityProcedure
        \key ProportionalControlBasedOnDesignOccupancy
        \key ProportionalControlBasedOnOccupancySchedule
        \key IndoorAirQualityProcedureGenericContaminant
        \key IndoorAirQualityProcedureCombined
        \key ProportionalControlBasedOnDesignOARate

Expected Behavior

No fatal error.

Steps to Reproduce

require 'openstudio'

include OpenStudio::Model

m = Model.new
al = AirLoopHVAC.new(m)
aloas = AirLoopHVACOutdoorAirSystem.new(m, ControllerOutdoorAir.new(m))

aloas.addToNode(al.supplyInletNode)
al.sizingSystem.setSystemOutdoorAirMethod('Standard62.1SimplifiedProcedure')

w = OpenStudio::EnergyPlus::ForwardTranslator.new.translateModel(m)
puts w.getObjectsByType('Controller:MechanicalVentilation'.to_IddObjectType)
Controller:MechanicalVentilation,
  Controller Mechanical Ventilation 1,    !- Name
  Always On Discrete,                     !- Availability Schedule Name
  No,                                     !- Demand Controlled Ventilation
  Standard62.1SimplifiedProcedure,        !- System Outdoor Air Method
  ;                                       !- Zone Maximum Outdoor Air Fraction {dimensionless}

Possible Solution

  1. Decouple the ControllerMechanicalVentilation.systemOutdoorAirMethod from SizingSystem.systemOutdoorAirMethod.

or

  1. Only allow common options.

Details

Environment

Some additional details about your environment for this issue (if relevant):

  • Platform (Operating system, version):
  • Version of OpenStudio (if using an intermediate build, include SHA):

Context

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions