Skip to main content

JSON Schemas

JSON Schema documents associated with ECaaS conform to the Draft 2020-12 specification of JSON Schema. The OpenAPI 3.1 definition for the API embeds these documents directly without further transformation, so an alternative view for the following schema definitions can be found within the relevant parts of the API documentation.

The following is the current JSON schema representing an input for an FHS calculation (download):

{
    "$schema": "https://json-schema.org/draft/2019-09/schema",
    "type": "object",
    "unevaluatedProperties": false,
    "properties": {
        "metadata": {
            "type": "object",
            "properties": {
                "hem_core_version": {
                    "type": "string",
                    "description": "The core version the input is written for. If there is a mismatch a warning will be printed"
                }
            },
            "description": "Metadata for the input file"
        },
        "PartGcompliance": {
            "description": "Indication for whether Part G has been complied with",
            "type": "boolean"
        },
        "PartO_active_cooling_required": {
            "type": "boolean"
        },
        "BuildingLength": {
            "type": "number",
            "minimum": 0,
            "description": "The maximum horizontal distance (in metres) across the building footprint"
        },
        "BuildingWidth": {
            "type": "number",
            "minimum": 0,
            "description": "The maximum horizontal distance (in metres) perpendicular to the building length"
        },
        "GroundFloorArea": {
            "type": "number",
            "minimum": 0
        },
        "NumberOfBedrooms": {
            "type": "integer",
            "minimum": 0
        },
        "NumberOfWetRooms": {
            "type": "integer",
            "minimum": 0,
            "description": "A wet room is any room used for domestic activities (such as cooking, clothes washing and bathing) that produce significant amounts of airborne moisture, e.g. a kitchen, utility room or bathroom. For the purposes of Part F of the Building Regulations, sanitary accommodation is also regarded as a wet room."
        },
        "NumberOfHotTappedRooms": {
            "type": "integer",
            "minimum": 1,
            "description": "A tapped room is any room with a hot water tapping point (e.g sink, bath or shower) with hot water from the central system, not including instantaneous hot water that's fed from the cold water pipework, for example a room with just an electric shower and/or electric water heater over the sink."
        },
        "NumberOfUtilityRooms": {
            "type": "integer",
            "minimum": 0,
            "description": "A utility room is any that contains a sink or other feature or equipment that may reasonably be expected to produce significant quantities of water vapour"
        },
        "NumberOfBathrooms": {
            "type": "integer",
            "minimum": 0,
            "description": "A bathroom is any room that contains a bath or shower"
        },
        "NumberOfSanitaryAccommodations": {
            "type": "integer",
            "minimum": 0,
            "description": "Any space containing one or more flush toilets or urinals but not a bath or shower. Multiple cubicles counts as one space as long as there is free circulation of air throughout"
        },
        "NumberOfHabitableRooms": {
            "type": "integer",
            "minimum": 1,
            "description": "A habitable room is any that is not used solely as a kitchen, bathroom, utility, cellar or sanitary accommodation"
        },
        "HeatingControlType": {
            "enum": [
                "SeparateTempControl",
                "SeparateTimeAndTempControl"
            ]
        },
        "KitchenExtractorHoodExternal": {
            "type": "boolean",
            "description": "Does the kitchen have a cooker extractor hood which extracts to the outside of the building?"
        },
        "ExternalConditions": {
            "type": "object",
            "unevaluatedProperties": false,
            "required": [
                "shading_segments"
            ],
            "properties": {
                "shading_segments": {
                    "type": "array",
                    "minItems": 8,
                    "maxItems": 36,
                    "items": {
                        "type": "object",
                        "unevaluatedProperties": false,
                        "required": [
                            "start360",
                            "end360"
                        ],
                        "properties": {
                            "start360": {
                                "description": "Starting angle of the shading segment (clockwise). (unit: \u00b0)",
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 360
                            },
                            "end360": {
                                "description": "The end angle of the shading segment (clockwise). (unit: \u00b0)",
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 360
                            },
                            "shading": {
                                "type": "array",
                                "items": {
                                    "type": "object",
                                    "unevaluatedProperties": false,
                                    "required": [
                                        "type",
                                        "height",
                                        "distance"
                                    ],
                                    "properties": {
                                        "type": {
                                            "enum": [
                                                "obstacle",
                                                "overhang"
                                            ]
                                        },
                                        "height": {
                                            "description": "Height of the shading object. (Unit: m)",
                                            "type": "number",
                                            "exclusiveMinimum": 0,
                                            "maximum": 400
                                        },
                                        "distance": {
                                            "description": "Distance of the shading object from the building. (Unit: m)",
                                            "type": "number",
                                            "exclusiveMinimum": 0,
                                            "maximum": 72000
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "Appliances": {
            "type": "object",
            "unevaluatedProperties": false,
            "patternProperties": {
                "Clothes_washing|Clothes_drying|Dishwasher|Fridge|Fridge-Freezer|Freezer|Hobs|Otherdevices|Oven": {
                    "enum": [
                        "Not Installed",
                        "Default"
                    ]
                }
            },
            "not": {
                "allOf": [
                    {
                        "properties": {
                            "Fridge": {
                                "const": "Not Installed"
                            }
                        }
                    },
                    {
                        "properties": {
                            "Fridge-Freezer": {
                                "const": "Not Installed"
                            }
                        }
                    }
                ]
            }
        },
        "ColdWaterSource": {
            "type": "object",
            "unevaluatedProperties": false,
            "properties": {
                "header tank": {
                    "description": "The content of this object can be blank, as the FHS wrapper will generate the HEM ColdWaterSource.",
                    "type": "object"
                },
                "mains water": {
                    "description": "The content of this object can be blank, as the FHS wrapper will generate the HEM ColdWaterSource.",
                    "type": "object"
                }
            },
            "oneOf": [
                {
                    "required": [
                        "header tank"
                    ]
                },
                {
                    "required": [
                        "mains water"
                    ]
                }
            ]
        },
        "PreHeatedWaterSource": {
            "type": "object",
            "unevaluatedProperties": false,
            "properties": {
                "preheated tank": {
                    "$ref": "#/$defs/StorageTank",
                    "properties": {
                        "ColdWaterSource": {
                            "type": "string",
                            "reference_to": [
                                "$.cold_water_source",
                                "$.wwhrs"
                            ]
                        }
                    },
                    "required": [
                        "ColdWaterSource"
                    ],
                    "not": {
                        "properties": {
                            "ColdWaterSource": {
                                "const": "preheated tank"
                            }
                        }
                    }
                }
            },
            "required": [
                "preheated tank"
            ]
        },
        "EnergySupply": {
            "type": "object",
            "properties": {
                "mains elec": {
                    "type": "object",
                    "unevaluatedProperties": false,
                    "$ref": "#/$defs/ElectricityFuelProperties",
                    "properties": {
                        "fuel": {
                            "const": "electricity"
                        }
                    },
                    "required": [
                        "fuel"
                    ]
                }
            },
            "required": [
                "mains elec"
            ],
            "additionalProperties": {
                "type": "object",
                "required": [
                    "fuel"
                ],
                "unevaluatedProperties": false,
                "properties": {
                    "fuel": {
                        "enum": [
                            "mains_gas",
                            "electricity",
                            "LPG_bulk",
                            "LPG_bottled",
                            "LPG_condition_11F"
                        ]
                    }
                },
                "allOf": [
                    {
                        "if": {
                            "properties": {
                                "fuel": {
                                    "const": "electricity"
                                }
                            }
                        },
                        "then": {
                            "$ref": "#/$defs/ElectricityFuelProperties"
                        }
                    },
                    {
                        "if": {
                            "properties": {
                                "fuel": {
                                    "enum": [
                                        "LPG_bulk",
                                        "LPG_bottled",
                                        "LPG_condition_11F"
                                    ]
                                }
                            }
                        },
                        "then": {
                            "required": [
                                "is_export_capable"
                            ],
                            "properties": {
                                "is_export_capable": {
                                    "type": "boolean"
                                }
                            }
                        }
                    }
                ]
            }
        },
        "OnSiteGeneration": {
            "type": "object",
            "additionalProperties": {
                "unevaluatedProperties": false,
                "type": "object",
                "required": [
                    "type",
                    "peak_power",
                    "ventilation_strategy",
                    "pitch",
                    "orientation360",
                    "base_height",
                    "height",
                    "width",
                    "EnergySupply",
                    "shading",
                    "inverter_peak_power_dc",
                    "inverter_peak_power_ac",
                    "inverter_is_inside",
                    "inverter_type"
                ],
                "properties": {
                    "type": {
                        "enum": [
                            "PhotovoltaicSystem"
                        ]
                    },
                    "peak_power": {
                        "type": "number",
                        "minimum": 0.001,
                        "maximum": 100,
                        "description": "Peak power; represents the electrical power of a photovoltaic system with a given area for a solar irradiance of 1 kW/m² on this surface (at 25 degrees) (unit: kW)"
                    },
                    "ventilation_strategy": {
                        "enum": [
                            "unventilated",
                            "moderately_ventilated",
                            "strongly_or_forced_ventilated",
                            "rear_surface_free"
                        ]
                    },
                    "pitch": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 90,
                        "description": "The tilt angle (inclination) of the PV panel from horizontal, measured upwards facing, 0 to 90 (unit: ˚)"
                    },
                    "orientation360": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 360,
                        "description": "The orientation angle of the inclined surface, expressed as the geographical azimuth angle of the horizontal projection of the inclined surface normal, 0 to 360 (unit: ˚)"
                    },
                    "base_height": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 500,
                        "description": "The distance between the ground and the lowest edge of the PV array (unit: m)"
                    },
                    "height": {
                        "type": "number",
                        "exclusiveMinimum": 0,
                        "maximum": 100,
                        "description": "Height of the PV array (unit: m)"
                    },
                    "width": {
                        "type": "number",
                        "exclusiveMinimum": 0,
                        "maximum": 100,
                        "description": "Width of the PV panel (unit: m)"
                    },
                    "EnergySupply": {
                        "type": "string",
                        "description": "References a key (e.g., 'mains elec', 'mains gas') in $.EnergySupply"
                    },
                    "shading": {
                        "$ref": "#/$defs/WindowShading"
                    },
                    "inverter_peak_power_dc": {
                        "type": "number",
                        "exclusiveMinimum": 0,
                        "description": "Peak power; represents the peak electrical DC power input to the inverter (unit: kW)"
                    },
                    "inverter_peak_power_ac": {
                        "type": "number",
                        "exclusiveMinimum": 0,
                        "description": "Peak power; represents the peak electrical AC power output from the inverter (unit: kW)"
                    },
                    "inverter_is_inside": {
                        "type": "boolean",
                        "description": "Whether the inverter is considered inside the building"
                    },
                    "inverter_type": {
                        "enum": [
                            "string_inverter",
                            "optimised_inverter"
                        ]
                    }
                }
            }
        },
        "HotWaterSource": {
            "type": "object",
            "unevaluatedProperties": false,
            "properties": {
                "hw cylinder": {
                    "type": "object",
                    "unevaluatedProperties": false,
                    "required": [
                        "type"
                    ],
                    "properties": {
                        "type": {
                            "enum": [
                                "StorageTank",
                                "SmartHotWaterTank",
                                "CombiBoiler",
                                "PointOfUse",
                                "HIU",
                                "HeatBattery"
                            ]
                        }
                    },
                    "allOf": [
                        {
                            "if": {
                                "properties": {
                                    "type": {
                                        "const": "HIU"
                                    }
                                }
                            },
                            "then": {
                                "properties": {
                                    "ColdWaterSource": {
                                        "enum": [
                                            "header tank",
                                            "mains water"
                                        ],
                                        "description": "References a key (e.g., \"mains water\") in $.ColdWaterSource"
                                    },
                                    "HeatSourceWet": {
                                        "type": "string",
                                        "description": "References a key (e.g., 'boiler', 'hp', 'HeatNetwork', 'hb1') in $.HeatSourceWet"
                                    }
                                },
                                "required": [
                                    "ColdWaterSource",
                                    "HeatSourceWet"
                                ]
                            }
                        },
                        {
                            "if": {
                                "properties": {
                                    "type": {
                                        "const": "SmartHotWaterTank"
                                    }
                                }
                            },
                            "then": {
                                "$ref": "#/$defs/SmartHotWaterTank"
                            }
                        },
                        {
                            "if": {
                                "properties": {
                                    "type": {
                                        "const": "StorageTank"
                                    }
                                }
                            },
                            "then": {
                                "$ref": "#/$defs/StorageTank"
                            }
                        },
                        {
                            "if": {
                                "properties": {
                                    "type": {
                                        "const": "PointOfUse"
                                    }
                                }
                            },
                            "then": {
                                "required": [
                                    "ColdWaterSource",
                                    "efficiency",
                                    "EnergySupply"
                                ],
                                "properties": {
                                    "ColdWaterSource": {
                                        "enum": [
                                            "header tank",
                                            "mains water"
                                        ],
                                        "description": "References a key (e.g., \"mains water\") in $.ColdWaterSource"
                                    },
                                    "efficiency": {
                                        "type": "number",
                                        "minimum": 0.1,
                                        "maximum": 1,
                                        "description": "Thermal efficiency of the point-of-use water heater (dimensionless, 0-1)"
                                    },
                                    "EnergySupply": {
                                        "type": "string",
                                        "description": "References a key (e.g., 'mains elec', 'mains gas') in $.EnergySupply"
                                    }
                                }
                            }
                        },
                        {
                            "if": {
                                "properties": {
                                    "type": {
                                        "const": "CombiBoiler"
                                    }
                                }
                            },
                            "then": {
                                "oneOf": [
                                    {
                                        "required": [
                                            "product_reference",
                                            "ColdWaterSource",
                                            "HeatSourceWet"
                                        ],
                                        "properties": {
                                            "product_reference": {
                                                "description": "A unique reference to a product held within the HEM database (PCDB)",
                                                "title": "Reference to the product in the HEM database",
                                                "type": "string"
                                            },
                                            "ColdWaterSource": {
                                                "enum": [
                                                    "header tank",
                                                    "mains water"
                                                ],
                                                "description": "References a key (e.g., \"mains water\") in $.ColdWaterSource"
                                            },
                                            "HeatSourceWet": {
                                                "description": "References a key (e.g., 'boiler', 'hp', 'HeatNetwork', 'hb1') in $.HeatSourceWet",
                                                "reference_to": "$.heat_source_wet",
                                                "title": "Heatsourcewet",
                                                "type": "string"
                                            }
                                        }
                                    },
                                    {
                                        "required": [
                                            "ColdWaterSource",
                                            "HeatSourceWet",
                                            "separate_DHW_tests",
                                            "rejected_energy_1"
                                        ],
                                        "properties": {
                                            "ColdWaterSource": {
                                                "enum": [
                                                    "header tank",
                                                    "mains water"
                                                ],
                                                "description": "References a key (e.g., \"mains water\") in $.ColdWaterSource"
                                            },
                                            "HeatSourceWet": {
                                                "description": "References a key (e.g., 'boiler', 'hp', 'HeatNetwork', 'hb1') in $.HeatSourceWet",
                                                "reference_to": "$.heat_source_wet",
                                                "title": "Heatsourcewet",
                                                "type": "string"
                                            },
                                            "rejected_energy_1": {
                                                "anyOf": [
                                                    {
                                                        "minimum": 0,
                                                        "type": "number"
                                                    },
                                                    {
                                                        "type": "null"
                                                    }
                                                ],
                                                "default": null,
                                                "description": "Rejected energy factor 1 for combi boiler efficiency calculations (unit: kWh)",
                                                "title": "Rejected Energy 1"
                                            },
                                            "rejected_factor_3": {
                                                "anyOf": [
                                                    {
                                                        "minimum": 0,
                                                        "type": "number"
                                                    },
                                                    {
                                                        "type": "null"
                                                    }
                                                ],
                                                "default": null,
                                                "description": "Rejected energy factor 3 for combi boiler efficiency calculations (dimensionless)",
                                                "title": "Rejected Factor 3"
                                            },
                                            "separate_DHW_tests": {
                                                "enum": [
                                                    "M&L",
                                                    "M&S",
                                                    "M_only",
                                                    "No_additional_tests"
                                                ],
                                                "description": "Type of separate domestic hot water test performed on the combi boiler (M&L, M&S, M_only, or No_additional_tests)"
                                            },
                                            "storage_loss_factor_1": {
                                                "anyOf": [
                                                    {
                                                        "minimum": 0,
                                                        "type": "number"
                                                    },
                                                    {
                                                        "type": "null"
                                                    }
                                                ],
                                                "default": null,
                                                "description": "Storage loss factor 1 for combi boiler efficiency calculations (unit: kWh/day)",
                                                "title": "Storage Loss Factor 1"
                                            },
                                            "storage_loss_factor_2": {
                                                "anyOf": [
                                                    {
                                                        "minimum": 0,
                                                        "type": "number"
                                                    },
                                                    {
                                                        "type": "null"
                                                    }
                                                ],
                                                "default": null,
                                                "description": "Storage loss factor 2 for combi boiler efficiency calculations (dimensionless)",
                                                "title": "Storage Loss Factor 2"
                                            }
                                        },
                                        "if": {
                                            "anyOf": [
                                                {
                                                    "properties": {
                                                        "separate_DHW_tests": {
                                                            "const": "M&L"
                                                        }
                                                    }
                                                },
                                                {
                                                    "properties": {
                                                        "separate_DHW_tests": {
                                                            "const": "M&S"
                                                        }
                                                    }
                                                }
                                            ]
                                        },
                                        "then": {
                                            "required": [
                                                "storage_loss_factor_2",
                                                "rejected_factor_3"
                                            ]
                                        },
                                        "else": {
                                            "required": [
                                                "storage_loss_factor_1"
                                            ]
                                        }
                                    }
                                ]
                            }
                        },
                        {
                            "if": {
                                "properties": {
                                    "type": {
                                        "const": "HeatBattery"
                                    }
                                }
                            },
                            "then": {
                                "required": [
                                    "ColdWaterSource",
                                    "HeatSourceWet"
                                ],
                                "properties": {
                                    "ColdWaterSource": {
                                        "enum": [
                                            "header tank",
                                            "mains water"
                                        ],
                                        "description": "References a key (e.g., \"mains water\") in $.ColdWaterSource"
                                    },
                                    "HeatSourceWet": {
                                        "type": "string",
                                        "description": "References a key (e.g., 'boiler', 'hp', 'HeatNetwork', 'hb1') in $.HeatSourceWet"
                                    }
                                }
                            }
                        }
                    ]
                }
            }
        },
        "HeatSourceWet": {
            "type": "object",
            "additionalProperties": {
                "type": "object",
                "unevaluatedProperties": false,
                "required": [
                    "type",
                    "is_heat_network"
                ],
                "properties": {
                    "type": {
                        "enum": [
                            "HeatPump",
                            "Boiler",
                            "HIU",
                            "HeatBattery"
                        ]
                    },
                    "is_heat_network": {
                        "type": "boolean",
                        "description": "Is this HeatSourceWet a heat network? Put false if it is a HeatPump that is supplied by a HeatNetwork. In that case you will instead describe the heat network source under EnergySupply_heat_network not the EnergySupply of the pump"
                    }
                },
                "if": {
                    "properties": {
                        "is_heat_network": {
                            "const": true
                        }
                    }
                },
                "then": {
                    "properties": {
                        "heat_network_type": {
                            "enum": [
                                "sleeved DHN",
                                "unsleeved DHN",
                                "communal"
                            ],
                            "description": "What type of heat network is present?"
                        }
                    },
                    "required": [
                        "heat_network_type"
                    ],
                    "oneOf": [
                        {
                            "required": [
                                "EnergySupply"
                            ],
                            "properties": {
                                "EnergySupply": {
                                    "oneOf": [
                                        {
                                            "type": "string"
                                        },
                                        {
                                            "type": "object",
                                            "unevaluatedProperties": false,
                                            "required": [
                                                "name",
                                                "factor",
                                                "is_export_capable"
                                            ],
                                            "properties": {
                                                "name": {
                                                    "type": "string"
                                                },
                                                "is_export_capable": {
                                                    "type": "boolean"
                                                },
                                                "factor": {
                                                    "type": "object",
                                                    "unevaluatedProperties": false,
                                                    "required": [
                                                        "Emissions Factor kgCO2e/kWh",
                                                        "Emissions Factor kgCO2e/kWh including out-of-scope emissions",
                                                        "Primary Energy Factor kWh/kWh delivered"
                                                    ],
                                                    "properties": {
                                                        "Emissions Factor kgCO2e/kWh": {
                                                            "type": "number"
                                                        },
                                                        "Emissions Factor kgCO2e/kWh including out-of-scope emissions": {
                                                            "type": "number"
                                                        },
                                                        "Primary Energy Factor kWh/kWh delivered": {
                                                            "type": "number"
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    ]
                                }
                            }
                        },
                        {
                            "required": [
                                "heat_network_reference",
                                "sub_heat_network_name"
                            ],
                            "properties": {
                                "heat_network_reference": {
                                    "description": "A unique (product) reference to a heat network held within the HEM database (PCDB)",
                                    "title": "Reference to the heat network in the HEM database",
                                    "type": "string"
                                },
                                "sub_heat_network_name": {
                                    "description": "The name of a sub heat network that is part of the heat network referenced by heat_network_reference",
                                    "title": "Name of the sub heat network",
                                    "type": "string"
                                }
                            }
                        }
                    ]
                },
                "else": {
                    "required": [
                        "EnergySupply"
                    ],
                    "properties": {
                        "EnergySupply": {
                            "type": "string",
                            "description": "References a key (e.g., 'mains elec', 'mains gas') in $.EnergySupply"
                        }
                    }
                },
                "allOf": [
                    {
                        "if": {
                            "properties": {
                                "type": {
                                    "const": "HeatPump"
                                }
                            }
                        },
                        "then": {
                            "anyOf": [
                                {
                                    "properties": {
                                        "product_reference": {
                                            "description": "A unique reference to a product held within the HEM database (PCDB)",
                                            "title": "Reference to the product in the HEM database",
                                            "type": "string"
                                        },
                                        "type": {
                                            "const": "HeatPump",
                                            "title": "Type",
                                            "type": "string"
                                        },
                                        "BufferTank": {
                                            "type": "object",
                                            "unevaluatedProperties": false,
                                            "properties": {
                                                "daily_losses": {
                                                    "type": "number",
                                                    "exclusiveMinimum": 0,
                                                    "description": "Standing heat loss (unit: kWh/day)"
                                                },
                                                "pump_fixed_flow_rate": {
                                                    "type": "number",
                                                    "exclusiveMinimum": 0,
                                                    "description": "Flow rate of the buffer tank - emitters loop (unit: l/min)"
                                                },
                                                "pump_power_at_flow_rate": {
                                                    "type": "number",
                                                    "exclusiveMinimum": 0,
                                                    "description": "Pump power of the buffer tank - emitters loop (unit: kW)"
                                                },
                                                "volume": {
                                                    "type": "number",
                                                    "exclusiveMinimum": 0,
                                                    "description": "Volume of the buffer tank (unit: litre)"
                                                }
                                            },
                                            "required": [
                                                "daily_losses",
                                                "pump_fixed_flow_rate",
                                                "pump_power_at_flow_rate",
                                                "volume"
                                            ],
                                            "description": "Optional buffer tank configuration for the heat pump system"
                                        },
                                        "boiler_product_reference": {
                                            "description": "A unique reference to a boiler product held within the HEM database (PCDB), if there is a need for a reference to a boiler product to be passed, and the heat pump is not packaged with a boiler.",
                                            "title": "Reference to the product in the HEM database",
                                            "type": "string"
                                        },
                                        "boiler": {
                                            "type": "object",
                                            "description": "A container for a boiler's cost_schedule_hybrid, if this is available. This field will be merged onto the data for any boiler packaged with the indicated heat pump product.",
                                            "properties": {
                                                "cost_schedule_hybrid": {
                                                    "$ref": "#/$defs/BoilerCostScheduleHybrid"
                                                }
                                            },
                                            "required": [
                                                "cost_schedule_hybrid"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "type",
                                        "product_reference"
                                    ],
                                    "title": "HeatSourceWetHeatPumpWithProductReference",
                                    "type": "object"
                                },
                                {
                                    "required": [
                                        "source_type",
                                        "sink_type",
                                        "backup_ctrl_type",
                                        "modulating_control",
                                        "temp_lower_operating_limit",
                                        "min_temp_diff_flow_return_for_hp_to_operate",
                                        "var_flow_temp_ctrl_during_test",
                                        "power_source_circ_pump",
                                        "power_standby",
                                        "power_crankcase_heater",
                                        "power_off",
                                        "test_data_EN14825",
                                        "time_constant_onoff_operation"
                                    ],
                                    "properties": {
                                        "source_type": {
                                            "enum": [
                                                "Ground",
                                                "OutsideAir",
                                                "ExhaustAirMEV",
                                                "ExhaustAirMVHR",
                                                "ExhaustAirMixed",
                                                "WaterGround",
                                                "WaterSurface",
                                                "HeatNetwork"
                                            ],
                                            "description": "Type of heat source for the heat pump"
                                        },
                                        "sink_type": {
                                            "enum": [
                                                "Air",
                                                "Water",
                                                "Glycol25"
                                            ],
                                            "description": "Type of heat sink for the heat pump"
                                        },
                                        "backup_ctrl_type": {
                                            "enum": [
                                                "None",
                                                "TopUp",
                                                "Substitute"
                                            ],
                                            "description": "Type of backup control for the heat pump system"
                                        },
                                        "modulating_control": {
                                            "type": "boolean",
                                            "description": "Whether the heat pump uses modulating control"
                                        },
                                        "min_modulation_rate_20": {
                                            "type": "number",
                                            "minimum": 0,
                                            "maximum": 1,
                                            "description": "Minimum modulation rate at 20\u00b0C flow temperature (dimensionless, 0-1)"
                                        },
                                        "min_modulation_rate_35": {
                                            "type": "number",
                                            "minimum": 0,
                                            "maximum": 1,
                                            "description": "Minimum modulation rate at 35\u00b0C flow temperature (dimensionless, 0-1)"
                                        },
                                        "min_modulation_rate_55": {
                                            "type": "number",
                                            "minimum": 0,
                                            "maximum": 1,
                                            "description": "Minimum modulation rate at 55\u00b0C flow temperature (dimensionless, 0-1)"
                                        },
                                        "temp_return_feed_max": {
                                            "type": "number",
                                            "minimum": 4,
                                            "maximum": 80,
                                            "description": "Maximum return feed temperature (unit: \u02daC)"
                                        },
                                        "temp_lower_operating_limit": {
                                            "type": "number",
                                            "minimum": -30,
                                            "maximum": 0,
                                            "description": "Lower temperature limit for heat pump operation (unit: \u02daC)"
                                        },
                                        "min_temp_diff_flow_return_for_hp_to_operate": {
                                            "type": "number",
                                            "minimum": 0,
                                            "maximum": 50,
                                            "description": "Minimum temperature difference between flow and return for heat pump operation (unit: K)"
                                        },
                                        "var_flow_temp_ctrl_during_test": {
                                            "type": "boolean",
                                            "description": "Whether variable flow temperature control was used during testing"
                                        },
                                        "power_heating_circ_pump": {
                                            "type": "number",
                                            "minimum": 0,
                                            "maximum": 1,
                                            "description": "Power consumption of heating circuit pump (unit: kW)"
                                        },
                                        "power_source_circ_pump": {
                                            "type": "number",
                                            "minimum": 0,
                                            "maximum": 1,
                                            "description": "Power consumption of source circuit pump (unit: kW)"
                                        },
                                        "power_standby": {
                                            "type": "number",
                                            "minimum": 0,
                                            "description": "Power consumption in standby mode (unit: kW)"
                                        },
                                        "power_crankcase_heater": {
                                            "type": "number",
                                            "minimum": 0,
                                            "description": "Power consumption of crankcase heater (unit: kW)"
                                        },
                                        "power_off": {
                                            "type": "number",
                                            "minimum": 0,
                                            "description": "Power consumption when heat pump is off (unit: kW)"
                                        },
                                        "BufferTank": {
                                            "type": "object",
                                            "unevaluatedProperties": false,
                                            "properties": {
                                                "daily_losses": {
                                                    "type": "number",
                                                    "exclusiveMinimum": 0,
                                                    "description": "Standing heat loss (unit: kWh/day)"
                                                },
                                                "pump_fixed_flow_rate": {
                                                    "type": "number",
                                                    "exclusiveMinimum": 0,
                                                    "description": "Flow rate of the buffer tank - emitters loop (unit: l/min)"
                                                },
                                                "pump_power_at_flow_rate": {
                                                    "type": "number",
                                                    "exclusiveMinimum": 0,
                                                    "description": "Pump power of the buffer tank - emitters loop (unit: kW)"
                                                },
                                                "volume": {
                                                    "type": "number",
                                                    "exclusiveMinimum": 0,
                                                    "description": "Volume of the buffer tank (unit: litre)"
                                                }
                                            },
                                            "required": [
                                                "daily_losses",
                                                "pump_fixed_flow_rate",
                                                "pump_power_at_flow_rate",
                                                "volume"
                                            ]
                                        },
                                        "power_heating_warm_air_fan": {
                                            "type": "number",
                                            "minimum": 0,
                                            "description": "Power consumption of warm air fan (unit: kW)"
                                        },
                                        "time_constant_onoff_operation": {
                                            "type": "number",
                                            "exclusiveMinimum": 0,
                                            "description": "Time constant for on/off operation (unit: seconds)"
                                        }
                                    },
                                    "allOf": [
                                        {
                                            "if": {
                                                "not": {
                                                    "properties": {
                                                        "backup_ctrl_type": {
                                                            "const": "None"
                                                        }
                                                    }
                                                }
                                            },
                                            "then": {
                                                "oneOf": [
                                                    {
                                                        "required": [
                                                            "boiler"
                                                        ]
                                                    },
                                                    {
                                                        "required": [
                                                            "power_max_backup"
                                                        ]
                                                    }
                                                ],
                                                "properties": {
                                                    "boiler": {
                                                        "unevaluatedProperties": false,
                                                        "description": "Boiler used as backup for heat pump systems",
                                                        "properties": {
                                                            "EnergySupply": {
                                                                "description": "References a key (e.g., 'mains elec', 'mains gas') in $.EnergySupply",
                                                                "reference_to": "$.energy_supply",
                                                                "title": "Energysupply",
                                                                "type": "string"
                                                            },
                                                            "EnergySupply_aux": {
                                                                "description": "References a key in $.EnergySupply for auxiliary electrical power",
                                                                "reference_to": "$.energy_supply",
                                                                "title": "Energysupply Aux",
                                                                "type": "string"
                                                            },
                                                            "boiler_location": {
                                                                "description": "Location of the boiler (internal or external to the building)",
                                                                "enum": [
                                                                    "internal",
                                                                    "external"
                                                                ],
                                                                "title": "HeatSourceLocation",
                                                                "type": "string"
                                                            },
                                                            "efficiency_full_load": {
                                                                "description": "Boiler net efficiency at full load (dimensionless, 0-1)",
                                                                "maximum": 1,
                                                                "exclusiveMinimum": 0,
                                                                "title": "Efficiency Full Load",
                                                                "type": "number"
                                                            },
                                                            "efficiency_part_load": {
                                                                "description": "Boiler net efficiency at part load (dimensionless, 0-1.12). Net efficiencies may exceed 1 in test data.",
                                                                "exclusiveMinimum": 0,
                                                                "maximum": 1.12,
                                                                "title": "Efficiency Part Load",
                                                                "type": "number"
                                                            },
                                                            "electricity_circ_pump": {
                                                                "description": "Electrical power consumption of circulation pump (unit: kW)",
                                                                "minimum": 0,
                                                                "title": "Electricity Circ Pump",
                                                                "type": "number"
                                                            },
                                                            "electricity_full_load": {
                                                                "description": "Electrical power consumption at full load (unit: kW)",
                                                                "minimum": 0,
                                                                "title": "Electricity Full Load",
                                                                "type": "number"
                                                            },
                                                            "electricity_part_load": {
                                                                "description": "Electrical power consumption at part load (unit: kW)",
                                                                "minimum": 0,
                                                                "title": "Electricity Part Load",
                                                                "type": "number"
                                                            },
                                                            "electricity_standby": {
                                                                "description": "Electrical power consumption in standby mode (unit: kW)",
                                                                "minimum": 0,
                                                                "title": "Electricity Standby",
                                                                "type": "number"
                                                            },
                                                            "modulation_load": {
                                                                "description": "Modulation load ratio (dimensionless, 0-1)",
                                                                "maximum": 1,
                                                                "minimum": 0,
                                                                "title": "Modulation Load",
                                                                "type": "number"
                                                            },
                                                            "rated_power": {
                                                                "description": "Rated power output of the boiler (unit: kW)",
                                                                "exclusiveMinimum": 0,
                                                                "title": "Rated Power",
                                                                "type": "number"
                                                            },
                                                            "cost_schedule_hybrid": {
                                                                "anyOf": [
                                                                    {
                                                                        "$ref": "#/$defs/BoilerCostScheduleHybrid"
                                                                    },
                                                                    {
                                                                        "type": "null"
                                                                    }
                                                                ],
                                                                "default": null
                                                            }
                                                        },
                                                        "required": [
                                                            "EnergySupply",
                                                            "EnergySupply_aux",
                                                            "boiler_location",
                                                            "efficiency_full_load",
                                                            "efficiency_part_load",
                                                            "electricity_circ_pump",
                                                            "electricity_full_load",
                                                            "electricity_part_load",
                                                            "electricity_standby",
                                                            "modulation_load",
                                                            "rated_power"
                                                        ],
                                                        "title": "HeatPumpBoiler",
                                                        "type": "object"
                                                    },
                                                    "power_max_backup": {
                                                        "type": "number",
                                                        "exclusiveMinimum": 0,
                                                        "description": "Backup resistive heater maximum power (unit: kW)"
                                                    }
                                                }
                                            }
                                        },
                                        {
                                            "if": {
                                                "properties": {
                                                    "source_type": {
                                                        "const": "HeatNetwork"
                                                    }
                                                }
                                            },
                                            "then": {
                                                "required": [
                                                    "temp_distribution_heat_network",
                                                    "EnergySupply_heat_network"
                                                ],
                                                "properties": {
                                                    "temp_distribution_heat_network": {
                                                        "type": "number",
                                                        "exclusiveMinimum": 0,
                                                        "description": "Distribution temperature for heat network (unit: \u02daC)"
                                                    },
                                                    "EnergySupply_heat_network": {
                                                        "oneOf": [
                                                            {
                                                                "type": "string"
                                                            },
                                                            {
                                                                "type": "object",
                                                                "unevaluatedProperties": false,
                                                                "required": [
                                                                    "name",
                                                                    "factor",
                                                                    "is_export_capable"
                                                                ],
                                                                "properties": {
                                                                    "name": {
                                                                        "type": "string"
                                                                    },
                                                                    "is_export_capable": {
                                                                        "type": "boolean"
                                                                    },
                                                                    "factor": {
                                                                        "type": "object",
                                                                        "unevaluatedProperties": false,
                                                                        "required": [
                                                                            "Emissions Factor kgCO2e/kWh",
                                                                            "Emissions Factor kgCO2e/kWh including out-of-scope emissions",
                                                                            "Primary Energy Factor kWh/kWh delivered"
                                                                        ],
                                                                        "properties": {
                                                                            "Emissions Factor kgCO2e/kWh": {
                                                                                "type": "number"
                                                                            },
                                                                            "Emissions Factor kgCO2e/kWh including out-of-scope emissions": {
                                                                                "type": "number"
                                                                            },
                                                                            "Primary Energy Factor kWh/kWh delivered": {
                                                                                "type": "number"
                                                                            }
                                                                        }
                                                                    }
                                                                }
                                                            }
                                                        ],
                                                        "description": "References a key in $.EnergySupply for heat network energy supply"
                                                    }
                                                }
                                            }
                                        },
                                        {
                                            "if": {
                                                "properties": {
                                                    "source_type": {
                                                        "const": "ExhaustAirMixed"
                                                    }
                                                }
                                            },
                                            "then": {
                                                "required": [
                                                    "eahp_mixed_max_temp",
                                                    "eahp_mixed_min_temp"
                                                ],
                                                "properties": {
                                                    "eahp_mixed_max_temp": {
                                                        "type": "number",
                                                        "minimum": -273.15,
                                                        "description": "Maximum temperature for exhaust air heat pump mixed operation (unit: \u02daC)"
                                                    },
                                                    "eahp_mixed_min_temp": {
                                                        "type": "number",
                                                        "minimum": -273.15,
                                                        "description": "Minimum temperature for exhaust air heat pump mixed operation (unit: \u02daC)"
                                                    },
                                                    "test_data_EN14825": {
                                                        "type": "array",
                                                        "items": {
                                                            "type": "object",
                                                            "unevaluatedProperties": false,
                                                            "required": [
                                                                "test_letter",
                                                                "capacity",
                                                                "cop",
                                                                "design_flow_temp",
                                                                "temp_outlet",
                                                                "temp_source",
                                                                "temp_test",
                                                                "air_flow_rate",
                                                                "eahp_mixed_ext_air_ratio"
                                                            ],
                                                            "properties": {
                                                                "test_letter": {
                                                                    "enum": [
                                                                        "A",
                                                                        "B",
                                                                        "C",
                                                                        "D",
                                                                        "F"
                                                                    ]
                                                                },
                                                                "capacity": {
                                                                    "type": "number",
                                                                    "exclusiveMinimum": 0,
                                                                    "description": "Heat output capacity at this test condition (unit: kW)"
                                                                },
                                                                "cop": {
                                                                    "type": "number",
                                                                    "exclusiveMinimum": 0,
                                                                    "description": "Coefficient of performance at this test condition (dimensionless)"
                                                                },
                                                                "design_flow_temp": {
                                                                    "type": "number",
                                                                    "exclusiveMinimum": 0,
                                                                    "description": "Design flow temperature for the heating system (unit: Celsius)"
                                                                },
                                                                "temp_outlet": {
                                                                    "type": "number",
                                                                    "exclusiveMinimum": 0,
                                                                    "description": "Heat pump outlet temperature for the test condition (unit: Celsius)"
                                                                },
                                                                "temp_source": {
                                                                    "type": "number",
                                                                    "minimum": -273.15,
                                                                    "description": "Heat pump source temperature for the test condition (unit: Celsius)"
                                                                },
                                                                "temp_test": {
                                                                    "type": "number",
                                                                    "minimum": -273.15,
                                                                    "description": "Ambient air temperature for the test condition (unit: Celsius)"
                                                                },
                                                                "air_flow_rate": {
                                                                    "type": "number",
                                                                    "exclusiveMinimum": 0,
                                                                    "description": "Air flow rate through the heat pump for the test condition (unit: m\u00b3/h)"
                                                                },
                                                                "eahp_mixed_ext_air_ratio": {
                                                                    "type": "number",
                                                                    "minimum": 0,
                                                                    "maximum": 1,
                                                                    "description": "Ratio of external air to recirculated air for exhaust air heat pumps (dimensionless)"
                                                                }
                                                            }
                                                        },
                                                        "description": "EN14825 test data for the heat pump"
                                                    }
                                                }
                                            },
                                            "else": {
                                                "properties": {
                                                    "test_data_EN14825": {
                                                        "type": "array",
                                                        "items": {
                                                            "type": "object",
                                                            "unevaluatedProperties": false,
                                                            "required": [
                                                                "test_letter",
                                                                "capacity",
                                                                "cop",
                                                                "design_flow_temp",
                                                                "temp_outlet",
                                                                "temp_source",
                                                                "temp_test"
                                                            ],
                                                            "properties": {
                                                                "test_letter": {
                                                                    "enum": [
                                                                        "A",
                                                                        "B",
                                                                        "C",
                                                                        "D",
                                                                        "F"
                                                                    ]
                                                                },
                                                                "capacity": {
                                                                    "type": "number",
                                                                    "exclusiveMinimum": 0,
                                                                    "description": "Heat output capacity at this test condition (unit: kW)"
                                                                },
                                                                "cop": {
                                                                    "type": "number",
                                                                    "exclusiveMinimum": 0,
                                                                    "description": "Coefficient of performance at this test condition (dimensionless)"
                                                                },
                                                                "air_flow_rate": {
                                                                    "type": "number",
                                                                    "exclusiveMinimum": 0,
                                                                    "description": "Air flow rate through the heat pump for the test condition (unit: m\u00b3/h)"
                                                                },
                                                                "design_flow_temp": {
                                                                    "type": "number",
                                                                    "exclusiveMinimum": 0,
                                                                    "description": "Design flow temperature for the heating system (unit: Celsius)"
                                                                },
                                                                "temp_outlet": {
                                                                    "type": "number",
                                                                    "exclusiveMinimum": 0,
                                                                    "description": "Heat pump outlet temperature for the test condition (unit: Celsius)"
                                                                },
                                                                "temp_source": {
                                                                    "type": "number",
                                                                    "minimum": -273.15,
                                                                    "description": "Heat pump source temperature for the test condition (unit: Celsius)"
                                                                },
                                                                "temp_test": {
                                                                    "type": "number",
                                                                    "minimum": -273.15,
                                                                    "description": "Ambient air temperature for the test condition (unit: Celsius)"
                                                                }
                                                            }
                                                        },
                                                        "description": "EN14825 test data for the heat pump"
                                                    }
                                                }
                                            }
                                        }
                                    ]
                                }
                            ]
                        }
                    },
                    {
                        "if": {
                            "properties": {
                                "type": {
                                    "const": "Boiler"
                                }
                            }
                        },
                        "then": {
                            "oneOf": [
                                {
                                    "required": [
                                        "product_reference"
                                    ],
                                    "properties": {
                                        "product_reference": {
                                            "description": "A unique reference to a product held within the HEM database (PCDB)",
                                            "title": "Reference to the product in the HEM database",
                                            "type": "string"
                                        },
                                        "specified_location": {
                                            "description": "An explicitly specified boiler location. Only required if the referenced PCDB product has a boiler_location value of 'unknown'.",
                                            "title": "A boiler location, if the referenced PCDB product does not specify it",
                                            "enum": [
                                                "internal",
                                                "external"
                                            ]
                                        }
                                    },
                                    "description": "Standalone boiler heat source"
                                },
                                {
                                    "required": [
                                        "EnergySupply_aux",
                                        "rated_power",
                                        "efficiency_full_load",
                                        "efficiency_part_load",
                                        "boiler_location",
                                        "modulation_load",
                                        "electricity_circ_pump",
                                        "electricity_part_load",
                                        "electricity_full_load",
                                        "electricity_standby"
                                    ],
                                    "properties": {
                                        "EnergySupply_aux": {
                                            "type": "string",
                                            "description": "References a key in $.EnergySupply for auxiliary electrical power"
                                        },
                                        "rated_power": {
                                            "type": "number",
                                            "exclusiveMinimum": 0,
                                            "description": "Rated power output of the boiler (unit: kW)"
                                        },
                                        "efficiency_full_load": {
                                            "type": "number",
                                            "minimum": 0.1,
                                            "maximum": 1,
                                            "description": "Boiler net efficiency at full load (dimensionless, 0-1)"
                                        },
                                        "efficiency_part_load": {
                                            "type": "number",
                                            "minimum": 0.1,
                                            "maximum": 1.12,
                                            "description": "Boiler net efficiency at part load (dimensionless, 0-1.12). Net efficiencies may exceed 1 in test data."
                                        },
                                        "boiler_location": {
                                            "enum": [
                                                "internal",
                                                "external"
                                            ],
                                            "description": "Location of the boiler (internal or external to the building)"
                                        },
                                        "modulation_load": {
                                            "type": "number",
                                            "minimum": 0.1,
                                            "maximum": 1,
                                            "description": "Modulation load ratio (dimensionless, 0-1)"
                                        },
                                        "electricity_circ_pump": {
                                            "type": "number",
                                            "minimum": 0.001,
                                            "maximum": 1,
                                            "description": "Electrical power consumption of circulation pump (unit: kW)"
                                        },
                                        "electricity_part_load": {
                                            "type": "number",
                                            "minimum": 0,
                                            "maximum": 1,
                                            "description": "Electrical power consumption at part load (unit: kW)"
                                        },
                                        "electricity_full_load": {
                                            "type": "number",
                                            "minimum": 0,
                                            "maximum": 1,
                                            "description": "Electrical power consumption at full load (unit: kW)"
                                        },
                                        "electricity_standby": {
                                            "type": "number",
                                            "minimum": 0,
                                            "maximum": 0.1,
                                            "description": "Electrical power consumption in standby mode (unit: kW)"
                                        }
                                    },
                                    "description": "Standalone boiler heat source"
                                }
                            ]
                        }
                    },
                    {
                        "if": {
                            "properties": {
                                "type": {
                                    "const": "HeatBattery"
                                }
                            }
                        },
                        "then": {
                            "required": [
                                "battery_type"
                            ],
                            "properties": {
                                "battery_type": {
                                    "type": "string",
                                    "enum": [
                                        "dry_core",
                                        "pcm"
                                    ]
                                }
                            },
                            "allOf": [
                                {
                                    "if": {
                                        "properties": {
                                            "battery_type": {
                                                "const": "pcm"
                                            }
                                        }
                                    },
                                    "then": {
                                        "oneOf": [
                                            {
                                                "required": [
                                                    "product_reference",
                                                    "number_of_units"
                                                ],
                                                "properties": {
                                                    "product_reference": {
                                                        "description": "A unique reference to a product held within the HEM database (PCDB)",
                                                        "title": "Reference to the product in the HEM database",
                                                        "type": "string"
                                                    },
                                                    "number_of_units": {
                                                        "type": "integer",
                                                        "minimum": 1,
                                                        "description": "Number of heat battery units"
                                                    }
                                                },
                                                "description": "PCM (Phase Change Material) Heat Battery"
                                            },
                                            {
                                                "required": [
                                                    "electricity_circ_pump",
                                                    "electricity_standby",
                                                    "rated_charge_power",
                                                    "max_rated_losses",
                                                    "number_of_units",
                                                    "simultaneous_charging_and_discharging",
                                                    "heat_storage_kJ_per_K_above_Phase_transition",
                                                    "heat_storage_kJ_per_K_below_Phase_transition",
                                                    "heat_storage_kJ_per_K_during_Phase_transition",
                                                    "phase_transition_temperature_upper",
                                                    "phase_transition_temperature_lower",
                                                    "max_temperature",
                                                    "velocity_in_HEX_tube_at_1_l_per_min_m_per_s",
                                                    "inlet_diameter_mm",
                                                    "A",
                                                    "B",
                                                    "flow_rate_l_per_min"
                                                ],
                                                "properties": {
                                                    "electricity_circ_pump": {
                                                        "type": "number",
                                                        "minimum": 0.001,
                                                        "maximum": 1,
                                                        "description": "References a key (e.g., 'mains elec', 'mains gas') in $.EnergySupply"
                                                    },
                                                    "electricity_standby": {
                                                        "type": "number",
                                                        "exclusiveMinimum": 0,
                                                        "maximum": 0.1,
                                                        "description": "Electrical power consumption in standby mode (unit: kW)"
                                                    },
                                                    "rated_charge_power": {
                                                        "type": "number",
                                                        "exclusiveMinimum": 0,
                                                        "description": "Rated charging power (unit: kW)"
                                                    },
                                                    "max_rated_losses": {
                                                        "type": "number",
                                                        "exclusiveMinimum": 0,
                                                        "description": "Maximum rated heat losses (unit: kW)"
                                                    },
                                                    "number_of_units": {
                                                        "type": "integer",
                                                        "minimum": 1,
                                                        "description": "Number of heat battery units"
                                                    },
                                                    "simultaneous_charging_and_discharging": {
                                                        "type": "boolean",
                                                        "description": "Whether the heat battery can charge and discharge simultaneously"
                                                    },
                                                    "heat_storage_kJ_per_K_above_Phase_transition": {
                                                        "type": "number",
                                                        "exclusiveMinimum": 0,
                                                        "description": "Heat capacity of storage above phase transition (unit: kJ/K)"
                                                    },
                                                    "heat_storage_kJ_per_K_below_Phase_transition": {
                                                        "type": "number",
                                                        "exclusiveMinimum": 0,
                                                        "description": "Heat capacity of storage below phase transition (unit: kJ/K)"
                                                    },
                                                    "heat_storage_kJ_per_K_during_Phase_transition": {
                                                        "type": "number",
                                                        "exclusiveMinimum": 0,
                                                        "description": "Heat capacity of storage during phase transition (unit: kJ/K)"
                                                    },
                                                    "phase_transition_temperature_upper": {
                                                        "type": "number",
                                                        "minimum": -273.15,
                                                        "description": "Upper temperature limit for phase transition (unit: \u02daC)"
                                                    },
                                                    "phase_transition_temperature_lower": {
                                                        "type": "number",
                                                        "minimum": -273.15,
                                                        "description": "Lower temperature limit for phase transition (unit: \u02daC)"
                                                    },
                                                    "velocity_in_HEX_tube_at_1_l_per_min_m_per_s": {
                                                        "type": "number",
                                                        "exclusiveMinimum": 0,
                                                        "description": "Velocity in heat exchanger tube at 1 litre/minute flow rate (unit: m/s)"
                                                    },
                                                    "A": {
                                                        "type": "number",
                                                        "description": "Heat battery parameter A (dimensionless)"
                                                    },
                                                    "B": {
                                                        "type": "number",
                                                        "description": "Heat battery parameter B (dimensionless)"
                                                    },
                                                    "inlet_diameter_mm": {
                                                        "type": "number",
                                                        "description": "Inlet diameter of capillary tubes (unit: mm)"
                                                    },
                                                    "max_temperature": {
                                                        "type": "number",
                                                        "minimum": -273.15,
                                                        "description": "Maximum operating temperature (unit: \u02daC)"
                                                    },
                                                    "flow_rate_l_per_min": {
                                                        "type": "number",
                                                        "exclusiveMinimum": 0,
                                                        "description": "Flow rate through the heat battery (unit: litre/minute)"
                                                    }
                                                },
                                                "description": "PCM (Phase Change Material) Heat Battery"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "if": {
                                        "properties": {
                                            "battery_type": {
                                                "const": "dry_core"
                                            }
                                        }
                                    },
                                    "then": {
                                        "oneOf": [
                                            {
                                                "required": [
                                                    "product_reference",
                                                    "number_of_units"
                                                ],
                                                "properties": {
                                                    "product_reference": {
                                                        "description": "A unique reference to a product held within the HEM database (PCDB)",
                                                        "title": "Reference to the product in the HEM database",
                                                        "type": "string"
                                                    },
                                                    "number_of_units": {
                                                        "type": "integer",
                                                        "minimum": 1
                                                    }
                                                }
                                            },
                                            {
                                                "required": [
                                                    "EnergySupply",
                                                    "electricity_circ_pump",
                                                    "electricity_standby",
                                                    "pwr_in",
                                                    "rated_power_instant",
                                                    "heat_storage_capacity",
                                                    "number_of_units",
                                                    "dry_core_min_output",
                                                    "dry_core_max_output",
                                                    "fan_pwr",
                                                    "state_of_charge_init"
                                                ],
                                                "properties": {
                                                    "electricity_circ_pump": {
                                                        "type": "number"
                                                    },
                                                    "electricity_standby": {
                                                        "type": "number"
                                                    },
                                                    "pwr_in": {
                                                        "type": "number",
                                                        "description": "Charging power (kW)"
                                                    },
                                                    "rated_power_instant": {
                                                        "type": "number",
                                                        "description": "Rated instantaneous power output (kW)"
                                                    },
                                                    "heat_storage_capacity": {
                                                        "type": "number",
                                                        "description": "Heat storage capacity (kWh)"
                                                    },
                                                    "EnergySupply": {
                                                        "type": "string"
                                                    },
                                                    "number_of_units": {
                                                        "type": "integer",
                                                        "minimum": 1
                                                    },
                                                    "dry_core_min_output": {
                                                        "type": "array",
                                                        "items": {
                                                            "items": {
                                                                "type": "number"
                                                            },
                                                            "maxItems": 2,
                                                            "minItems": 2,
                                                            "type": "array"
                                                        },
                                                        "description": "Lookup table for minimum output based on charge level"
                                                    },
                                                    "dry_core_max_output": {
                                                        "type": "array",
                                                        "items": {
                                                            "items": {
                                                                "type": "number"
                                                            },
                                                            "maxItems": 2,
                                                            "minItems": 2,
                                                            "type": "array"
                                                        },
                                                        "description": "Lookup table for maximum output based on charge level"
                                                    },
                                                    "fan_pwr": {
                                                        "type": "number",
                                                        "description": "Fan power (W)"
                                                    },
                                                    "state_of_charge_init": {
                                                        "description": "State of charge at initialisation of dry core heat storage (ratio). NB. this field is marked for removal, and only a value of 1 is accepted.",
                                                        "const": 1.0,
                                                        "title": "State Of Charge Init",
                                                        "type": "number"
                                                    }
                                                }
                                            }
                                        ]
                                    }
                                }
                            ]
                        }
                    },
                    {
                        "if": {
                            "properties": {
                                "type": {
                                    "const": "HIU"
                                }
                            }
                        },
                        "then": {
                            "oneOf": [
                                {
                                    "required": [
                                        "product_reference",
                                        "building_level_distribution_losses"
                                    ],
                                    "properties": {
                                        "product_reference": {
                                            "description": "A unique reference to a product held within the HEM database (PCDB)",
                                            "title": "Reference to the product in the HEM database",
                                            "type": "string"
                                        },
                                        "building_level_distribution_losses": {
                                            "type": "number",
                                            "minimum": 0,
                                            "description": "Heat losses from building-level distribution pipework (unit: W)"
                                        }
                                    }
                                },
                                {
                                    "required": [
                                        "HIU_daily_loss",
                                        "power_max",
                                        "building_level_distribution_losses"
                                    ],
                                    "properties": {
                                        "HIU_daily_loss": {
                                            "type": "number",
                                            "exclusiveMinimum": 0
                                        },
                                        "power_max": {
                                            "type": "number",
                                            "exclusiveMinimum": 0,
                                            "description": "Maximum power output of the HIU (unit: kW)"
                                        },
                                        "building_level_distribution_losses": {
                                            "type": "number",
                                            "minimum": 0,
                                            "description": "Heat losses from building-level distribution pipework (unit: W)"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                ]
            },
            "description": "Dictionary of available wet heat sources, keyed by user-defined names (e.g., 'boiler', 'hp', 'HeatNetwork', 'hb1'). Other models reference these keys via their heat_source_wet fields."
        },
        "HotWaterDemand": {
            "type": "object",
            "unevaluatedProperties": false,
            "required": [
                "Other"
            ],
            "properties": {
                "Shower": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "object",
                        "unevaluatedProperties": false,
                        "required": [
                            "type",
                            "ColdWaterSource"
                        ],
                        "properties": {
                            "type": {
                                "enum": [
                                    "MixerShower",
                                    "InstantElecShower"
                                ]
                            },
                            "ColdWaterSource": {
                                "enum": [
                                    "header tank",
                                    "mains water"
                                ],
                                "description": "References a key (e.g., \"mains water\") in $.ColdWaterSource"
                            }
                        },
                        "if": {
                            "properties": {
                                "type": {
                                    "const": "MixerShower"
                                }
                            }
                        },
                        "then": {
                            "oneOf": [
                                {
                                    "required": [
                                        "product_reference"
                                    ],
                                    "properties": {
                                        "product_reference": {
                                            "description": "A unique reference to a product held within the HEM database (PCDB)",
                                            "title": "Reference to the product in the HEM database",
                                            "type": "string"
                                        }
                                    }
                                },
                                {
                                    "required": [
                                        "flowrate",
                                        "allow_low_flowrate"
                                    ],
                                    "properties": {
                                        "flowrate": {
                                            "type": "number",
                                            "minimum": 8,
                                            "maximum": 15
                                        },
                                        "allow_low_flowrate": {
                                            "type": "boolean"
                                        },
                                        "HotWaterSource": {
                                            "type": "string",
                                            "description": "Reference to HotWaterSource object that provides hot water to this shower."
                                        },
                                        "WWHRS": {
                                            "type": "string",
                                            "description": "Reference to a key in Input.WWHRS"
                                        },
                                        "WWHRS_configuration": {
                                            "enum": [
                                                "A",
                                                "B",
                                                "C"
                                            ],
                                            "description": "WWHRS system configuration for this shower connection"
                                        }
                                    },
                                    "allOf": [
                                        {
                                            "if": {
                                                "properties": {
                                                    "allow_low_flowrate": {
                                                        "const": true
                                                    }
                                                }
                                            },
                                            "then": {
                                                "properties": {
                                                    "flowrate": {
                                                        "exclusiveMinimum": 0,
                                                        "description": "Shower flow rate (unit: litre/minute)"
                                                    }
                                                }
                                            }
                                        },
                                        {
                                            "if": {
                                                "properties": {
                                                    "allow_low_flowrate": {
                                                        "const": false
                                                    }
                                                }
                                            },
                                            "then": {
                                                "properties": {
                                                    "flowrate": {
                                                        "minimum": 8
                                                    }
                                                }
                                            }
                                        }
                                    ]
                                }
                            ]
                        },
                        "else": {
                            "required": [
                                "rated_power",
                                "EnergySupply"
                            ],
                            "properties": {
                                "rated_power": {
                                    "type": "number",
                                    "exclusiveMinimum": 0,
                                    "maximum": 30,
                                    "description": "Shower's rated electrical power (unit: kW)"
                                },
                                "EnergySupply": {
                                    "type": "string",
                                    "description": "References a key (e.g., 'mains elec', 'mains gas') in $.EnergySupply"
                                }
                            }
                        }
                    }
                },
                "Bath": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "object",
                        "unevaluatedProperties": false,
                        "required": [
                            "size",
                            "ColdWaterSource"
                        ],
                        "properties": {
                            "size": {
                                "type": "number",
                                "exclusiveMinimum": 0,
                                "description": "Volume held by bath (unit: litre)"
                            },
                            "ColdWaterSource": {
                                "enum": [
                                    "header tank",
                                    "mains water"
                                ],
                                "description": "References a key (e.g., \"mains water\") in $.ColdWaterSource"
                            },
                            "HotWaterSource": {
                                "type": "string",
                                "description": "Reference to HotWaterSource object that provides hot water to this bath."
                            }
                        }
                    }
                },
                "Other": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "object",
                        "unevaluatedProperties": false,
                        "required": [
                            "flowrate",
                            "ColdWaterSource"
                        ],
                        "properties": {
                            "flowrate": {
                                "type": "number",
                                "minimum": 0.1,
                                "maximum": 15,
                                "description": "Tap/outlet flow rate (unit: litre/minute)"
                            },
                            "ColdWaterSource": {
                                "enum": [
                                    "header tank",
                                    "mains water"
                                ],
                                "description": "References a key (e.g., \"mains water\") in $.ColdWaterSource"
                            },
                            "HotWaterSource": {
                                "type": "string",
                                "description": "Reference to HotWaterSource object that provides hot water to this tapping point."
                            }
                        }
                    },
                    "minProperties": 1
                }
            }
        },
        "Events": {
            "type": "object"
        },
        "WWHRS": {
            "type": "object",
            "additionalProperties": {
                "type": "object",
                "unevaluatedProperties": false,
                "oneOf": [
                    {
                        "properties": {
                            "product_reference": {
                                "description": "A unique reference to a product held within the HEM database (PCDB)",
                                "title": "Reference to the product in the HEM database",
                                "type": "string"
                            },
                            "ColdWaterSource": {
                                "enum": [
                                    "header tank",
                                    "mains water"
                                ],
                                "description": "References a key (e.g., \"mains water\") in $.ColdWaterSource"
                            }
                        },
                        "required": [
                            "product_reference",
                            "ColdWaterSource"
                        ]
                    },
                    {
                        "required": [
                            "type",
                            "ColdWaterSource",
                            "flow_rates"
                        ],
                        "properties": {
                            "type": {
                                "type": "string",
                                "const": "WWHRS_Instantaneous"
                            },
                            "ColdWaterSource": {
                                "enum": [
                                    "header tank",
                                    "mains water"
                                ],
                                "description": "References a key (e.g., \"mains water\") in $.ColdWaterSource"
                            },
                            "flow_rates": {
                                "type": "array",
                                "items": {
                                    "type": "number",
                                    "minimum": 0.1,
                                    "maximum": 500
                                },
                                "description": "Test flow rates in litres per minute (e.g., [5, 7, 9, 11, 13])"
                            },
                            "system_a_efficiencies": {
                                "type": "array",
                                "items": {
                                    "exclusiveMinimum": 0,
                                    "maximum": 100,
                                    "type": "number"
                                },
                                "description": "Measured efficiencies for System A at the test flow rates"
                            },
                            "system_a_utilisation_factor": {
                                "type": "number",
                                "maximum": 1,
                                "exclusiveMinimum": 0,
                                "description": "Utilisation factor for System A"
                            },
                            "system_b_efficiencies": {
                                "type": "array",
                                "items": {
                                    "exclusiveMinimum": 0,
                                    "maximum": 100,
                                    "type": "number"
                                },
                                "description": "Measured efficiencies for System B (optional, uses system_b_efficiency_factor if not provided)"
                            },
                            "system_b_efficiency_factor": {
                                "type": "number",
                                "maximum": 1,
                                "exclusiveMinimum": 0,
                                "description": "Reduction factor for System B efficiency (default 0.81)"
                            },
                            "system_b_utilisation_factor": {
                                "type": "number",
                                "maximum": 1,
                                "exclusiveMinimum": 0,
                                "description": "Utilisation factor for System B (optional, defaults to system_a_utilisation_factor)"
                            },
                            "system_c_efficiencies": {
                                "type": "array",
                                "items": {
                                    "exclusiveMinimum": 0,
                                    "maximum": 100,
                                    "type": "number"
                                },
                                "description": "Measured efficiencies for System C (optional, uses system_c_efficiency_factor if not provided)"
                            },
                            "system_c_efficiency_factor": {
                                "type": "number",
                                "maximum": 1,
                                "exclusiveMinimum": 0,
                                "description": "Reduction factor for System C efficiency (default 0.87)"
                            },
                            "system_c_utilisation_factor": {
                                "type": "number",
                                "maximum": 1,
                                "exclusiveMinimum": 0,
                                "description": "Utilisation factor for System C (optional, defaults to system_a_utilisation_factor)"
                            }
                        },
                        "anyOf": [
                            {
                                "required": [
                                    "system_a_efficiencies"
                                ]
                            },
                            {
                                "required": [
                                    "system_b_efficiencies"
                                ]
                            },
                            {
                                "required": [
                                    "system_c_efficiencies"
                                ]
                            }
                        ]
                    }
                ]
            }
        },
        "SpaceHeatSystem": {
            "type": "object",
            "additionalProperties": {
                "type": "object",
                "unevaluatedProperties": false,
                "required": [
                    "type"
                ],
                "properties": {
                    "type": {
                        "enum": [
                            "ElecStorageHeater",
                            "InstantElecHeater",
                            "WetDistribution",
                            "WarmAir"
                        ]
                    }
                },
                "allOf": [
                    {
                        "if": {
                            "properties": {
                                "type": {
                                    "const": "ElecStorageHeater"
                                }
                            }
                        },
                        "then": {
                            "oneOf": [
                                {
                                    "required": [
                                        "product_reference",
                                        "n_units",
                                        "Zone"
                                    ],
                                    "properties": {
                                        "product_reference": {
                                            "description": "A unique reference to a product held within the HEM database (PCDB)",
                                            "title": "Reference to the product in the HEM database",
                                            "type": "string"
                                        },
                                        "n_units": {
                                            "type": "integer",
                                            "minimum": 0,
                                            "maximum": 100,
                                            "description": "Number of units installed in the zone."
                                        },
                                        "Zone": {
                                            "type": "string",
                                            "description": "The zone where the unit(s) is/are installed. References a key in $.Zone."
                                        }
                                    }
                                },
                                {
                                    "required": [
                                        "pwr_in",
                                        "rated_power_instant",
                                        "storage_capacity",
                                        "air_flow_type",
                                        "frac_convective",
                                        "n_units",
                                        "EnergySupply",
                                        "Zone",
                                        "dry_core_min_output",
                                        "dry_core_max_output"
                                    ],
                                    "properties": {
                                        "pwr_in": {
                                            "type": "number",
                                            "minimum": 0.1,
                                            "maximum": 70,
                                            "description": "The rated power of the heating element which charges the storage medium with heat (unit: kW)"
                                        },
                                        "rated_power_instant": {
                                            "type": "number",
                                            "minimum": 0.1,
                                            "maximum": 70,
                                            "description": "The rated power output of the instantaneous backup heater (unit: kW)"
                                        },
                                        "storage_capacity": {
                                            "type": "number",
                                            "minimum": 0,
                                            "description": "Storage capacity of the electric storage heater. (Unit: kWh)"
                                        },
                                        "air_flow_type": {
                                            "enum": [
                                                "fan-assisted",
                                                "damper-only"
                                            ]
                                        },
                                        "frac_convective": {
                                            "type": "number",
                                            "minimum": 0,
                                            "description": "Convective fraction for heating"
                                        },
                                        "n_units": {
                                            "type": "integer",
                                            "minimum": 0,
                                            "maximum": 100,
                                            "description": "Number of units installed in the zone."
                                        },
                                        "EnergySupply": {
                                            "type": "string",
                                            "description": "References a key (e.g., 'mains elec', 'mains gas') in $.EnergySupply"
                                        },
                                        "Zone": {
                                            "type": "string",
                                            "description": "The zone where the unit(s) is/are installed. References a key in $.Zone."
                                        },
                                        "dry_core_min_output": {
                                            "type": "array",
                                            "items": {
                                                "type": "array",
                                                "items": {
                                                    "type": "number"
                                                }
                                            },
                                            "description": "Minimum output of the electric storage heater. (Unit: kW) Data from test showing the output from the storage heater when not actively outputting heat, i.e. case losses only"
                                        },
                                        "dry_core_max_output": {
                                            "type": "array",
                                            "items": {
                                                "type": "array",
                                                "items": {
                                                    "type": "number"
                                                }
                                            },
                                            "description": "Maximum output of the electric storage heater. (Unit: kW) Data from test showing the output from the storage heater when it is actively outputting heat, e.g. damper open / fan running."
                                        }
                                    },
                                    "if": {
                                        "properties": {
                                            "air_flow_type": {
                                                "const": "fan-assisted"
                                            }
                                        }
                                    },
                                    "then": {
                                        "required": [
                                            "fan_pwr"
                                        ],
                                        "properties": {
                                            "fan_pwr": {
                                                "type": "number",
                                                "minimum": 0,
                                                "description": "Fan power (unit: W)"
                                            }
                                        }
                                    }
                                }
                            ]
                        }
                    },
                    {
                        "if": {
                            "properties": {
                                "type": {
                                    "const": "InstantElecHeater"
                                }
                            }
                        },
                        "then": {
                            "required": [
                                "rated_power",
                                "convective_type",
                                "EnergySupply"
                            ],
                            "properties": {
                                "rated_power": {
                                    "type": "number",
                                    "minimum": 0.1,
                                    "maximum": 70,
                                    "description": "Rated power of the instant electric heater. (Unit: kW)"
                                },
                                "convective_type": {
                                    "enum": [
                                        "Air heating (convectors, fan coils etc.)",
                                        "Free heating surface (radiators, radiant panels etc.)",
                                        "Floor heating, low temperature radiant tube heaters, luminous heaters, wood stoves",
                                        "Wall heating, radiant ceiling panels, accumulation stoves",
                                        "Ceiling heating, radiant ceiling electric heating"
                                    ]
                                },
                                "EnergySupply": {
                                    "type": "string",
                                    "description": "References a key (e.g., 'mains elec', 'mains gas') in $.EnergySupply"
                                }
                            }
                        }
                    },
                    {
                        "if": {
                            "properties": {
                                "type": {
                                    "const": "WetDistribution"
                                }
                            }
                        },
                        "then": {
                            "required": [
                                "emitters",
                                "temp_diff_emit_dsgn",
                                "variable_flow",
                                "HeatSource",
                                "ecodesign_controller",
                                "design_flow_temp",
                                "Zone"
                            ],
                            "properties": {
                                "EnergySupply": {
                                    "type": "string",
                                    "description": "References a key (e.g., 'mains elec', 'mains gas') in $.EnergySupply"
                                },
                                "emitters": {
                                    "type": "array",
                                    "items": {
                                        "type": "object",
                                        "unevaluatedProperties": false,
                                        "required": [
                                            "wet_emitter_type"
                                        ],
                                        "properties": {
                                            "wet_emitter_type": {
                                                "enum": [
                                                    "radiator",
                                                    "ufh",
                                                    "fancoil"
                                                ]
                                            }
                                        },
                                        "allOf": [
                                            {
                                                "if": {
                                                    "properties": {
                                                        "wet_emitter_type": {
                                                            "const": "radiator"
                                                        }
                                                    }
                                                },
                                                "then": {
                                                    "anyOf": [
                                                        {
                                                            "properties": {
                                                                "product_reference": {
                                                                    "description": "A unique reference to a product held within the HEM database (PCDB)",
                                                                    "title": "Reference to the product in the HEM database",
                                                                    "type": "string"
                                                                }
                                                            },
                                                            "required": [
                                                                "product_reference"
                                                            ],
                                                            "title": "RadiatorWithProductReference",
                                                            "type": "object",
                                                            "oneOf": [
                                                                {
                                                                    "required": [
                                                                        "radiator_type",
                                                                        "length"
                                                                    ],
                                                                    "properties": {
                                                                        "radiator_type": {
                                                                            "const": "standard"
                                                                        },
                                                                        "length": {
                                                                            "type": "number",
                                                                            "exclusiveMinimum": 0,
                                                                            "description": "The length of the emitter (unit: m)"
                                                                        }
                                                                    }
                                                                },
                                                                {
                                                                    "required": [
                                                                        "radiator_type"
                                                                    ],
                                                                    "properties": {
                                                                        "radiator_type": {
                                                                            "const": "towel"
                                                                        }
                                                                    }
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "required": [
                                                                "n",
                                                                "frac_convective"
                                                            ],
                                                            "properties": {
                                                                "length": {
                                                                    "type": "number",
                                                                    "exclusiveMinimum": 0,
                                                                    "description": "The length of the emitter (unit: m)"
                                                                },
                                                                "n": {
                                                                    "type": "number",
                                                                    "exclusiveMinimum": 0,
                                                                    "maximum": 2,
                                                                    "description": "Exponent from characteristic equation of emitters (e.g. derived from BS EN 442 tests)"
                                                                },
                                                                "frac_convective": {
                                                                    "type": "number",
                                                                    "description": "Convective fraction for heating"
                                                                }
                                                            },
                                                            "if": {
                                                                "required": [
                                                                    "length"
                                                                ]
                                                            },
                                                            "then": {
                                                                "required": [
                                                                    "c_per_m"
                                                                ],
                                                                "properties": {
                                                                    "c_per_m": {
                                                                        "type": "number",
                                                                        "exclusiveMinimum": 0,
                                                                        "description": "Constant from characteristic equation of emitters (e.g. derived from BS EN 442 tests) per the length of the emitter"
                                                                    },
                                                                    "thermal_mass_per_m": {
                                                                        "type": "number",
                                                                        "exclusiveMinimum": 0,
                                                                        "description": "Thermal mass per meter length of the radiator (unit: kWh/K/m)"
                                                                    }
                                                                }
                                                            },
                                                            "else": {
                                                                "required": [
                                                                    "c"
                                                                ],
                                                                "properties": {
                                                                    "c": {
                                                                        "type": "number",
                                                                        "exclusiveMinimum": 0,
                                                                        "maximum": 2,
                                                                        "description": "Constant from characteristic equation of emitters (e.g. derived from BS EN 442 tests)"
                                                                    },
                                                                    "thermal_mass": {
                                                                        "type": "number",
                                                                        "exclusiveMinimum": 0,
                                                                        "description": "Thermal mass of the radiator (unit: kWh/K)"
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    ]
                                                }
                                            },
                                            {
                                                "if": {
                                                    "properties": {
                                                        "wet_emitter_type": {
                                                            "const": "ufh"
                                                        }
                                                    }
                                                },
                                                "then": {
                                                    "anyOf": [
                                                        {
                                                            "properties": {
                                                                "product_reference": {
                                                                    "description": "A unique reference to a product held within the HEM database (PCDB)",
                                                                    "title": "Reference to the product in the HEM database",
                                                                    "type": "string"
                                                                },
                                                                "emitter_floor_area": {
                                                                    "type": "number",
                                                                    "exclusiveMinimum": 0,
                                                                    "description": "(unit: m\u00b2)"
                                                                }
                                                            },
                                                            "required": [
                                                                "product_reference",
                                                                "emitter_floor_area"
                                                            ],
                                                            "title": "UfhWithProductReference",
                                                            "type": "object"
                                                        },
                                                        {
                                                            "required": [
                                                                "equivalent_specific_thermal_mass",
                                                                "system_performance_factor",
                                                                "emitter_floor_area",
                                                                "frac_convective"
                                                            ],
                                                            "properties": {
                                                                "equivalent_specific_thermal_mass": {
                                                                    "type": "number",
                                                                    "minimum": 0,
                                                                    "description": "Equivalent thermal mass per m\u00b2 of floor area for under-floor heating systems (unit: kJ/m\u00b2K)"
                                                                },
                                                                "system_performance_factor": {
                                                                    "type": "number",
                                                                    "minimum": 0,
                                                                    "description": "Heat output per m\u00b2 of floor area for under-floor heating systems (unit: W/m\u00b2K)"
                                                                },
                                                                "emitter_floor_area": {
                                                                    "type": "number",
                                                                    "exclusiveMinimum": 0,
                                                                    "description": "(unit: m\u00b2)"
                                                                },
                                                                "frac_convective": {
                                                                    "type": "number",
                                                                    "description": "Convective fraction for heating"
                                                                }
                                                            }
                                                        }
                                                    ]
                                                }
                                            },
                                            {
                                                "if": {
                                                    "properties": {
                                                        "wet_emitter_type": {
                                                            "const": "fancoil"
                                                        }
                                                    }
                                                },
                                                "then": {
                                                    "anyOf": [
                                                        {
                                                            "properties": {
                                                                "product_reference": {
                                                                    "description": "A unique reference to a product held within the HEM database (PCDB)",
                                                                    "title": "Reference to the product in the HEM database",
                                                                    "type": "string"
                                                                },
                                                                "n_units": {
                                                                    "type": "integer",
                                                                    "minimum": 1,
                                                                    "description": "Number of units of this specification of fancoil in Zone"
                                                                }
                                                            },
                                                            "required": [
                                                                "n_units",
                                                                "product_reference"
                                                            ],
                                                            "title": "FancoilWithProductReference",
                                                            "type": "object"
                                                        },
                                                        {
                                                            "required": [
                                                                "n_units",
                                                                "fancoil_test_data",
                                                                "frac_convective"
                                                            ],
                                                            "properties": {
                                                                "n_units": {
                                                                    "type": "integer",
                                                                    "minimum": 1,
                                                                    "description": "Number of units of this specification of fancoil in Zone"
                                                                },
                                                                "fancoil_test_data": {
                                                                    "type": "object",
                                                                    "unevaluatedProperties": false,
                                                                    "required": [
                                                                        "fan_speed_data",
                                                                        "fan_power_W"
                                                                    ],
                                                                    "properties": {
                                                                        "fan_speed_data": {
                                                                            "type": "array",
                                                                            "items": {
                                                                                "type": "object",
                                                                                "unevaluatedProperties": false,
                                                                                "required": [
                                                                                    "temperature_diff",
                                                                                    "power_output"
                                                                                ],
                                                                                "properties": {
                                                                                    "temperature_diff": {
                                                                                        "type": "number",
                                                                                        "description": "Difference in temperature between the hot water supplied to the fan coil and the air in the room (unit: Kelvin)"
                                                                                    },
                                                                                    "power_output": {
                                                                                        "type": "array",
                                                                                        "items": {
                                                                                            "type": "number",
                                                                                            "minimum": 0
                                                                                        },
                                                                                        "description": "Heat output for a specific test temperature difference (unit: kW)"
                                                                                    }
                                                                                }
                                                                            }
                                                                        },
                                                                        "fan_power_W": {
                                                                            "type": "array",
                                                                            "items": {
                                                                                "type": "number",
                                                                                "minimum": 0
                                                                            },
                                                                            "description": "A list of fan powers for which heat output data is provided (unit: W)"
                                                                        }
                                                                    },
                                                                    "description": "Manufacturer's data for fancoil unit"
                                                                },
                                                                "frac_convective": {
                                                                    "type": "number",
                                                                    "description": "Convective fraction for heating"
                                                                }
                                                            }
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    }
                                },
                                "temp_diff_emit_dsgn": {
                                    "type": "number",
                                    "exclusiveMinimum": 0,
                                    "maximum": 70,
                                    "description": "Design temperature difference across the emitters. (Unit: deg C or K)"
                                },
                                "variable_flow": {
                                    "type": "boolean",
                                    "description": "Whether the heat source can modulate flow rate."
                                },
                                "bypass_fraction_recirculated": {
                                    "type": "number",
                                    "minimum": 0,
                                    "exclusiveMaximum": 1,
                                    "description": "Fraction of return back into flow water"
                                },
                                "HeatSource": {
                                    "type": "object",
                                    "unevaluatedProperties": false,
                                    "required": [
                                        "name"
                                    ],
                                    "properties": {
                                        "name": {
                                            "type": "string"
                                        },
                                        "temp_flow_limit_upper": {
                                            "type": "number",
                                            "exclusiveMinimum": 0,
                                            "description": "Upper operating limit for temperature (unit: deg C)"
                                        }
                                    }
                                },
                                "ecodesign_controller": {
                                    "type": "object",
                                    "unevaluatedProperties": false,
                                    "required": [
                                        "ecodesign_control_class"
                                    ],
                                    "properties": {
                                        "ecodesign_control_class": {
                                            "type": "integer",
                                            "minimum": 1,
                                            "maximum": 8
                                        },
                                        "min_outdoor_temp": {
                                            "type": "integer",
                                            "minimum": -60,
                                            "maximum": 30,
                                            "description": "Minimum outdoor temperature (unit: Celsius)"
                                        },
                                        "max_outdoor_temp": {
                                            "type": "integer",
                                            "minimum": 10,
                                            "maximum": 50,
                                            "description": "Maximum outdoor temperature (unit: Celsius)"
                                        },
                                        "min_flow_temp": {
                                            "type": "integer",
                                            "minimum": 20,
                                            "maximum": 120,
                                            "description": "Minimum flow temperature (unit: Celsius)"
                                        }
                                    }
                                },
                                "design_flow_temp": {
                                    "type": "number",
                                    "minimum": 20,
                                    "maximum": 120,
                                    "description": "Design flow temperature. (Unit: \u02daC)"
                                },
                                "Zone": {
                                    "type": "string",
                                    "description": "Zone in which the emitters are located. References a key in $.Zone"
                                }
                            },
                            "allOf": [
                                {
                                    "if": {
                                        "oneOf": [
                                            {
                                                "properties": {
                                                    "ecodesign_control_class": {
                                                        "const": 2
                                                    }
                                                }
                                            },
                                            {
                                                "properties": {
                                                    "ecodesign_control_class": {
                                                        "const": 3
                                                    }
                                                }
                                            },
                                            {
                                                "properties": {
                                                    "ecodesign_control_class": {
                                                        "const": 6
                                                    }
                                                }
                                            },
                                            {
                                                "properties": {
                                                    "ecodesign_control_class": {
                                                        "const": 7
                                                    }
                                                }
                                            }
                                        ]
                                    },
                                    "then": {
                                        "required": [
                                            "min_outdoor_temp",
                                            "max_outdoor_temp",
                                            "min_flow_temp"
                                        ]
                                    }
                                },
                                {
                                    "if": {
                                        "properties": {
                                            "variable_flow": {
                                                "const": true
                                            }
                                        }
                                    },
                                    "then": {
                                        "required": [
                                            "min_flow_rate",
                                            "max_flow_rate"
                                        ],
                                        "properties": {
                                            "min_flow_rate": {
                                                "type": "number",
                                                "exclusiveMinimum": 0,
                                                "description": "Minimum flow rate allowed (unit: litres/min)"
                                            },
                                            "max_flow_rate": {
                                                "type": "number",
                                                "exclusiveMinimum": 0,
                                                "description": "Maximum flow rate allowed (unit: litres/min)"
                                            }
                                        }
                                    },
                                    "else": {
                                        "required": [
                                            "design_flow_rate"
                                        ],
                                        "properties": {
                                            "design_flow_rate": {
                                                "type": "number",
                                                "exclusiveMinimum": 0,
                                                "description": "Constant flow rate if the heat source can't modulate flow rate (unit: l/s)"
                                            }
                                        }
                                    }
                                },
                                {
                                    "if": {
                                        "properties": {
                                            "emitters": {
                                                "type": "array",
                                                "contains": {
                                                    "type": "object",
                                                    "required": [
                                                        "n"
                                                    ],
                                                    "properties": {
                                                        "n": {
                                                            "type": "number",
                                                            "description": "Exponent from characteristic equation of emitters (e.g. derived from BS EN 442 tests)"
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    },
                                    "then": {
                                        "required": [
                                            "thermal_mass"
                                        ],
                                        "properties": {
                                            "thermal_mass": {
                                                "type": "number",
                                                "exclusiveMinimum": 0,
                                                "description": "Thermal mass of the emitters, excluding any thermal mass entered under individual radiator/UFH entries and always excluding thermal mass of pipework. (Unit: kWh/K)"
                                            }
                                        }
                                    }
                                }
                            ]
                        }
                    },
                    {
                        "if": {
                            "properties": {
                                "type": {
                                    "const": "WarmAir"
                                }
                            }
                        },
                        "then": {
                            "required": [
                                "temp_diff_emit_dsgn",
                                "frac_convective",
                                "HeatSource"
                            ],
                            "properties": {
                                "temp_diff_emit_dsgn": {
                                    "type": "number",
                                    "maximum": 70
                                },
                                "frac_convective": {
                                    "type": "number",
                                    "minimum": 0.1,
                                    "maximum": 1,
                                    "description": "Convective fraction for heating"
                                },
                                "HeatSource": {
                                    "type": "object",
                                    "unevaluatedProperties": false,
                                    "required": [
                                        "name"
                                    ],
                                    "properties": {
                                        "name": {
                                            "type": "string"
                                        },
                                        "temp_flow_limit_upper": {
                                            "type": "number",
                                            "exclusiveMinimum": 0,
                                            "description": "Upper operating limit for temperature (unit: deg C)"
                                        }
                                    }
                                }
                            }
                        }
                    }
                ]
            }
        },
        "SpaceCoolSystem": {
            "type": "object",
            "additionalProperties": {
                "type": "object",
                "unevaluatedProperties": false,
                "required": [
                    "type",
                    "cooling_capacity",
                    "efficiency",
                    "frac_convective",
                    "EnergySupply"
                ],
                "properties": {
                    "type": {
                        "enum": [
                            "AirConditioning"
                        ]
                    },
                    "cooling_capacity": {
                        "type": "number",
                        "exclusiveMinimum": 0,
                        "description": "Maximum cooling capacity of the system (unit: kW)"
                    },
                    "efficiency": {
                        "type": "number",
                        "exclusiveMinimum": 0,
                        "maximum": 25,
                        "description": "Efficiency of the air conditioning system. SEER (Seasonal energy efficiency ratio)"
                    },
                    "frac_convective": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1,
                        "description": "Convective fraction for cooling"
                    },
                    "EnergySupply": {
                        "type": "string",
                        "description": "References a key (e.g., 'mains elec', 'mains gas') in $.EnergySupply"
                    },
                    "advanced_start": {
                        "type": "number"
                    },
                    "temp_setback": {
                        "type": "number"
                    }
                }
            }
        },
        "General": {
            "type": "object",
            "unevaluatedProperties": false,
            "required": [
                "storeys_in_dwelling",
                "build_type"
            ],
            "properties": {
                "storeys_in_dwelling": {
                    "type": "integer",
                    "minimum": 1,
                    "description": "Number of storeys within this dwelling"
                },
                "build_type": {
                    "enum": [
                        "flat",
                        "house"
                    ]
                }
            },
            "if": {
                "properties": {
                    "build_type": {
                        "const": "flat"
                    }
                }
            },
            "then": {
                "required": [
                    "storey_of_dwelling",
                    "storeys_in_building"
                ],
                "properties": {
                    "storey_of_dwelling": {
                        "type": "integer",
                        "minimum": -50,
                        "maximum": 199,
                        "description": "What storey of the main building is the flat on? For multi-story flats, enter the lowest storey the unit occupies"
                    },
                    "storeys_in_building": {
                        "type": "integer",
                        "minimum": 1,
                        "description": "Number of storeys, within the entire building, that contain dwellings. This should be greater than or equal to storeys_in_dwelling."
                    }
                }
            }
        },
        "InfiltrationVentilation": {
            "type": "object",
            "unevaluatedProperties": false,
            "required": [
                "shield_class",
                "terrain_class",
                "ventilation_zone_base_height",
                "altitude",
                "noise_nuisance",
                "Vents",
                "Leaks"
            ],
            "properties": {
                "shield_class": {
                    "enum": [
                        "Open",
                        "Normal",
                        "Shielded"
                    ],
                    "description": "Indicates the exposure to wind of an air flow path on a facade (can can be open, normal and shielded)"
                },
                "terrain_class": {
                    "enum": [
                        "OpenWater",
                        "OpenField",
                        "Suburban",
                        "Urban"
                    ]
                },
                "ventilation_zone_base_height": {
                    "type": "number",
                    "minimum": -150,
                    "maximum": 750,
                    "description": "Base height of the ventilation zone relative to ground (unit: m)"
                },
                "altitude": {
                    "type": "number",
                    "minimum": -150,
                    "maximum": 7200,
                    "description": "Altitude of dwelling above sea level (unit: m)"
                },
                "ach_min_static_calcs": {
                    "type": "number",
                    "minimum": 0,
                    "description": "Minimum ACH (Air Changes per Hour) limit"
                },
                "ach_max_static_calcs": {
                    "type": "number",
                    "minimum": 0,
                    "description": "Maximum ACH (Air Changes per Hour) limit"
                },
                "noise_nuisance": {
                    "type": "boolean"
                },
                "Vents": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "object",
                        "unevaluatedProperties": false,
                        "required": [
                            "mid_height_air_flow_path",
                            "area_cm2",
                            "orientation360",
                            "pitch"
                        ],
                        "properties": {
                            "mid_height_air_flow_path": {
                                "type": "number",
                                "minimum": 1,
                                "maximum": 60,
                                "description": "Mid height of air flow path relative to ventilation zone (unit: m)"
                            },
                            "area_cm2": {
                                "type": "number",
                                "minimum": 1,
                                "maximum": 999999,
                                "description": "Equivalent area of a vent (unit: cm2)"
                            },
                            "orientation360": {
                                "type": "number",
                                "minimum": 0,
                                "maximum": 360,
                                "description": "The orientation angle of the inclined surface, expressed as the geographical azimuth angle of the horizontal projection of the inclined surface normal, 0 to 360 (unit: \u02da)"
                            },
                            "pitch": {
                                "type": "number",
                                "minimum": 0,
                                "maximum": 180,
                                "description": "Tilt angle of the surface from horizontal, between 0 and 180, where 0 means the external surface is facing up, 90 means the external surface is vertical and 180 means the external surface is facing down (unit: \u02da)"
                            }
                        }
                    },
                    "description": "Provides details about available non-mechanical ventilation systems"
                },
                "Leaks": {
                    "type": "object",
                    "unevaluatedProperties": false,
                    "required": [
                        "ventilation_zone_height",
                        "test_pressure",
                        "test_result",
                        "env_area"
                    ],
                    "properties": {
                        "ventilation_zone_height": {
                            "type": "number",
                            "minimum": 1,
                            "maximum": 120,
                            "description": "Height of ventilation zone (unit: m)"
                        },
                        "test_pressure": {
                            "enum": [
                                "Standard",
                                "Pulse test only"
                            ],
                            "description": "Reference pressure difference (unit: Pa)"
                        },
                        "test_result": {
                            "type": "number",
                            "exclusiveMinimum": 0,
                            "description": "Flow rate through (unit: m\u00b3/h.m\u00b2)"
                        },
                        "env_area": {
                            "type": "number",
                            "minimum": 5,
                            "maximum": 72000,
                            "description": "Reference area of the envelope airtightness index"
                        }
                    }
                },
                "MechanicalVentilation": {
                    "type": "object",
                    "additionalProperties": {
                        "oneOf": [
                            {
                                "type": "object",
                                "unevaluatedProperties": false,
                                "required": [
                                    "product_reference",
                                    "EnergySupply",
                                    "design_outdoor_air_flow_rate",
                                    "installed_under_approved_scheme"
                                ],
                                "properties": {
                                    "design_zone_cooling_covered_by_mech_vent": {
                                        "type": "number"
                                    },
                                    "design_zone_heating_covered_by_mech_vent": {
                                        "type": "number"
                                    },
                                    "product_reference": {
                                        "description": "A unique reference to a product held within the HEM database (PCDB)",
                                        "title": "Reference to the product in the HEM database",
                                        "type": "string"
                                    },
                                    "EnergySupply": {
                                        "type": "string",
                                        "description": "References a key (e.g., 'mains elec', 'mains gas') in $.EnergySupply"
                                    },
                                    "design_outdoor_air_flow_rate": {
                                        "type": "number",
                                        "exclusiveMinimum": 0,
                                        "description": "Design outdoor air flow rate (m3/hr)"
                                    },
                                    "installed_under_approved_scheme": {
                                        "type": "boolean",
                                        "description": "Whether or not this system was installed under an approved installation scheme"
                                    }
                                },
                                "oneOf": [
                                    {
                                        "required": [
                                            "vent_type",
                                            "mvhr_location",
                                            "ductwork",
                                            "position_intake",
                                            "position_exhaust"
                                        ],
                                        "properties": {
                                            "vent_type": {
                                                "const": "MVHR"
                                            },
                                            "mvhr_location": {
                                                "enum": [
                                                    "inside",
                                                    "outside"
                                                ],
                                                "description": "Location of the MVHR unit (inside or outside the thermal envelope)"
                                            },
                                            "ductwork": {
                                                "type": "array",
                                                "items": {
                                                    "type": "object",
                                                    "unevaluatedProperties": false,
                                                    "required": [
                                                        "cross_section_shape",
                                                        "internal_diameter_mm",
                                                        "external_diameter_mm",
                                                        "length",
                                                        "insulation_thermal_conductivity",
                                                        "insulation_thickness_mm",
                                                        "reflective",
                                                        "duct_type"
                                                    ],
                                                    "properties": {
                                                        "cross_section_shape": {
                                                            "enum": [
                                                                "circular",
                                                                "rectangular"
                                                            ],
                                                            "description": "Whether the cross-section of duct is circular or rectangular (square)"
                                                        },
                                                        "internal_diameter_mm": {
                                                            "type": "number",
                                                            "minimum": 0,
                                                            "maximum": 1000,
                                                            "description": "(unit: mm)"
                                                        },
                                                        "external_diameter_mm": {
                                                            "type": "number",
                                                            "minimum": 0,
                                                            "maximum": 1000,
                                                            "description": "(unit: mm)"
                                                        },
                                                        "length": {
                                                            "type": "number",
                                                            "minimum": 0,
                                                            "description": "(unit: m)"
                                                        },
                                                        "insulation_thermal_conductivity": {
                                                            "type": "number",
                                                            "minimum": 0,
                                                            "description": "Thermal conductivity of the insulation (unit: W / m K)"
                                                        },
                                                        "insulation_thickness_mm": {
                                                            "type": "number",
                                                            "minimum": 0,
                                                            "maximum": 100,
                                                            "description": "(unit: mm)"
                                                        },
                                                        "reflective": {
                                                            "type": "boolean"
                                                        },
                                                        "duct_type": {
                                                            "enum": [
                                                                "supply",
                                                                "extract",
                                                                "intake",
                                                                "exhaust"
                                                            ]
                                                        }
                                                    }
                                                },
                                                "description": "List of ductworks installed in this ventilation system"
                                            },
                                            "position_intake": {
                                                "type": "object",
                                                "properties": {
                                                    "mid_height_air_flow_path": {
                                                        "type": "number",
                                                        "minimum": 1,
                                                        "maximum": 60,
                                                        "description": "Mid height of air flow path relative to ventilation zone (unit: m)"
                                                    },
                                                    "orientation360": {
                                                        "type": "number",
                                                        "minimum": 0,
                                                        "maximum": 360,
                                                        "description": "The orientation angle of the inclined surface, expressed as the geographical azimuth angle of the horizontal projection of the inclined surface normal, 0 to 360 (unit: \u02da)"
                                                    },
                                                    "pitch": {
                                                        "type": "number",
                                                        "minimum": 0,
                                                        "maximum": 180,
                                                        "description": "Tilt angle of the surface from horizontal, between 0 and 180, where 0 means the external surface is facing up, 90 means the external surface is vertical and 180 means the external surface is facing down (unit: \u02da)"
                                                    }
                                                },
                                                "required": [
                                                    "mid_height_air_flow_path",
                                                    "orientation360",
                                                    "pitch"
                                                ],
                                                "description": "Position data for MVHR intake"
                                            },
                                            "position_exhaust": {
                                                "type": "object",
                                                "properties": {
                                                    "mid_height_air_flow_path": {
                                                        "type": "number",
                                                        "minimum": 1,
                                                        "maximum": 60,
                                                        "description": "Mid height of air flow path relative to ventilation zone (unit: m)"
                                                    },
                                                    "orientation360": {
                                                        "type": "number",
                                                        "minimum": 0,
                                                        "maximum": 360,
                                                        "description": "The orientation angle of the inclined surface, expressed as the geographical azimuth angle of the horizontal projection of the inclined surface normal, 0 to 360 (unit: \u02da)"
                                                    },
                                                    "pitch": {
                                                        "type": "number",
                                                        "minimum": 0,
                                                        "maximum": 180,
                                                        "description": "Tilt angle of the surface from horizontal, between 0 and 180, where 0 means the external surface is facing up, 90 means the external surface is vertical and 180 means the external surface is facing down (unit: \u02da)"
                                                    }
                                                },
                                                "required": [
                                                    "mid_height_air_flow_path",
                                                    "orientation360",
                                                    "pitch"
                                                ],
                                                "description": "Position data for MVHR exhaust or MEV extract"
                                            },
                                            "measured_fan_power": {
                                                "type": "number"
                                            },
                                            "measured_air_flow_rate": {
                                                "type": "number"
                                            }
                                        }
                                    },
                                    {
                                        "required": [
                                            "vent_type",
                                            "installation_type",
                                            "installation_location"
                                        ],
                                        "properties": {
                                            "vent_type": {
                                                "type": "string",
                                                "const": "Decentralised continuous MEV"
                                            },
                                            "installation_type": {
                                                "type": "string",
                                                "enum": [
                                                    "in_ceiling",
                                                    "in_duct",
                                                    "through_wall"
                                                ]
                                            },
                                            "installation_location": {
                                                "type": "string",
                                                "enum": [
                                                    "kitchen",
                                                    "other_wet_room"
                                                ],
                                                "description": "Whether the system is installed in a kitchen or in another wet room that is not a kitchen"
                                            }
                                        },
                                        "oneOf": [
                                            {
                                                "required": [
                                                    "vent_type",
                                                    "mid_height_air_flow_path",
                                                    "orientation360",
                                                    "pitch"
                                                ],
                                                "properties": {
                                                    "mid_height_air_flow_path": {
                                                        "type": "number",
                                                        "minimum": 1,
                                                        "maximum": 60,
                                                        "description": "Mid height of air flow path relative to ventilation zone (unit: m)"
                                                    },
                                                    "orientation360": {
                                                        "type": "number",
                                                        "minimum": 0,
                                                        "maximum": 360,
                                                        "description": "The orientation angle of the inclined surface, expressed as the geographical azimuth angle of the horizontal projection of the inclined surface normal, 0 to 360 (unit: \u02da)"
                                                    },
                                                    "pitch": {
                                                        "type": "number",
                                                        "minimum": 0,
                                                        "maximum": 180,
                                                        "description": "Tilt angle of the surface from horizontal, between 0 and 180, where 0 means the external surface is facing up, 90 means the external surface is vertical and 180 means the external surface is facing down (unit: \u02da)"
                                                    }
                                                }
                                            },
                                            {
                                                "required": [
                                                    "position_exhaust"
                                                ],
                                                "properties": {
                                                    "position_exhaust": {
                                                        "type": "object",
                                                        "properties": {
                                                            "mid_height_air_flow_path": {
                                                                "type": "number",
                                                                "minimum": 1,
                                                                "maximum": 60,
                                                                "description": "Mid height of air flow path relative to ventilation zone (unit: m)"
                                                            },
                                                            "orientation360": {
                                                                "type": "number",
                                                                "minimum": 0,
                                                                "maximum": 360,
                                                                "description": "The orientation angle of the inclined surface, expressed as the geographical azimuth angle of the horizontal projection of the inclined surface normal, 0 to 360 (unit: \u02da)"
                                                            },
                                                            "pitch": {
                                                                "type": "number",
                                                                "minimum": 0,
                                                                "maximum": 180,
                                                                "description": "Tilt angle of the surface from horizontal, between 0 and 180, where 0 means the external surface is facing up, 90 means the external surface is vertical and 180 means the external surface is facing down (unit: \u02da)"
                                                            }
                                                        },
                                                        "required": [
                                                            "mid_height_air_flow_path",
                                                            "orientation360",
                                                            "pitch"
                                                        ]
                                                    }
                                                }
                                            }
                                        ]
                                    },
                                    {
                                        "required": [
                                            "vent_type"
                                        ],
                                        "properties": {
                                            "vent_type": {
                                                "const": "Centralised continuous MEV"
                                            },
                                            "measured_fan_power": {
                                                "type": "number"
                                            },
                                            "measured_air_flow_rate": {
                                                "type": "number"
                                            }
                                        },
                                        "oneOf": [
                                            {
                                                "required": [
                                                    "mid_height_air_flow_path",
                                                    "orientation360",
                                                    "pitch"
                                                ],
                                                "properties": {
                                                    "mid_height_air_flow_path": {
                                                        "type": "number",
                                                        "minimum": 1,
                                                        "maximum": 60,
                                                        "description": "Mid height of air flow path relative to ventilation zone (unit: m)"
                                                    },
                                                    "orientation360": {
                                                        "type": "number",
                                                        "minimum": 0,
                                                        "maximum": 360,
                                                        "description": "The orientation angle of the inclined surface, expressed as the geographical azimuth angle of the horizontal projection of the inclined surface normal, 0 to 360 (unit: \u02da)"
                                                    },
                                                    "pitch": {
                                                        "type": "number",
                                                        "minimum": 0,
                                                        "maximum": 180,
                                                        "description": "Tilt angle of the surface from horizontal, between 0 and 180, where 0 means the external surface is facing up, 90 means the external surface is vertical and 180 means the external surface is facing down (unit: \u02da)"
                                                    }
                                                }
                                            },
                                            {
                                                "required": [
                                                    "position_exhaust"
                                                ],
                                                "properties": {
                                                    "position_exhaust": {
                                                        "type": "object",
                                                        "properties": {
                                                            "mid_height_air_flow_path": {
                                                                "type": "number",
                                                                "minimum": 1,
                                                                "maximum": 60,
                                                                "description": "Mid height of air flow path relative to ventilation zone (unit: m)"
                                                            },
                                                            "orientation360": {
                                                                "type": "number",
                                                                "minimum": 0,
                                                                "maximum": 360,
                                                                "description": "The orientation angle of the inclined surface, expressed as the geographical azimuth angle of the horizontal projection of the inclined surface normal, 0 to 360 (unit: \u02da)"
                                                            },
                                                            "pitch": {
                                                                "type": "number",
                                                                "minimum": 0,
                                                                "maximum": 180,
                                                                "description": "Tilt angle of the surface from horizontal, between 0 and 180, where 0 means the external surface is facing up, 90 means the external surface is vertical and 180 means the external surface is facing down (unit: \u02da)"
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        ]
                                    }
                                ]
                            },
                            {
                                "type": "object",
                                "unevaluatedProperties": false,
                                "required": [
                                    "vent_type",
                                    "EnergySupply",
                                    "design_outdoor_air_flow_rate"
                                ],
                                "properties": {
                                    "design_zone_cooling_covered_by_mech_vent": {
                                        "type": "number"
                                    },
                                    "design_zone_heating_covered_by_mech_vent": {
                                        "type": "number"
                                    },
                                    "vent_type": {
                                        "enum": [
                                            "Decentralised continuous MEV",
                                            "Centralised continuous MEV",
                                            "MVHR",
                                            "Intermittent MEV"
                                        ]
                                    },
                                    "EnergySupply": {
                                        "type": "string",
                                        "description": "References a key (e.g., 'mains elec', 'mains gas') in $.EnergySupply"
                                    },
                                    "design_outdoor_air_flow_rate": {
                                        "type": "number",
                                        "exclusiveMinimum": 0,
                                        "description": "Design outdoor air flow rate (m3/hr)"
                                    },
                                    "SFP_in_use_factor": {
                                        "minimum": 1,
                                        "type": "number",
                                        "default": 1,
                                        "description": "Adjustment factor to be applied to SFP to account for e.g. type of ducting. Typical range 1 - 2.5",
                                        "title": "Sfp In Use Factor"
                                    }
                                },
                                "allOf": [
                                    {
                                        "if": {
                                            "properties": {
                                                "vent_type": {
                                                    "const": "MVHR"
                                                }
                                            }
                                        },
                                        "then": {
                                            "required": [
                                                "mvhr_eff",
                                                "mvhr_location",
                                                "ductwork",
                                                "position_intake",
                                                "position_exhaust"
                                            ],
                                            "properties": {
                                                "mvhr_eff": {
                                                    "type": "number",
                                                    "minimum": 0,
                                                    "maximum": 1,
                                                    "description": "MVHR efficiency"
                                                },
                                                "mvhr_location": {
                                                    "enum": [
                                                        "inside",
                                                        "outside"
                                                    ],
                                                    "description": "Location of the MVHR unit (inside or outside the thermal envelope)"
                                                },
                                                "ductwork": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "unevaluatedProperties": false,
                                                        "required": [
                                                            "cross_section_shape",
                                                            "internal_diameter_mm",
                                                            "external_diameter_mm",
                                                            "length",
                                                            "insulation_thermal_conductivity",
                                                            "insulation_thickness_mm",
                                                            "reflective",
                                                            "duct_type"
                                                        ],
                                                        "properties": {
                                                            "cross_section_shape": {
                                                                "enum": [
                                                                    "circular",
                                                                    "rectangular"
                                                                ],
                                                                "description": "Whether the cross-section of duct is circular or rectangular (square)"
                                                            },
                                                            "internal_diameter_mm": {
                                                                "type": "number",
                                                                "minimum": 0,
                                                                "maximum": 1000,
                                                                "description": "(unit: mm)"
                                                            },
                                                            "external_diameter_mm": {
                                                                "type": "number",
                                                                "minimum": 0,
                                                                "maximum": 1000,
                                                                "description": "(unit: mm)"
                                                            },
                                                            "length": {
                                                                "type": "number",
                                                                "minimum": 0,
                                                                "description": "(unit: m)"
                                                            },
                                                            "insulation_thermal_conductivity": {
                                                                "type": "number",
                                                                "minimum": 0,
                                                                "description": "Thermal conductivity of the insulation (unit: W / m K)"
                                                            },
                                                            "insulation_thickness_mm": {
                                                                "type": "number",
                                                                "minimum": 0,
                                                                "maximum": 100,
                                                                "description": "(unit: mm)"
                                                            },
                                                            "reflective": {
                                                                "type": "boolean"
                                                            },
                                                            "duct_type": {
                                                                "enum": [
                                                                    "supply",
                                                                    "extract",
                                                                    "intake",
                                                                    "exhaust"
                                                                ]
                                                            }
                                                        }
                                                    }
                                                },
                                                "position_intake": {
                                                    "type": "object",
                                                    "properties": {
                                                        "mid_height_air_flow_path": {
                                                            "type": "number",
                                                            "minimum": 1,
                                                            "maximum": 60,
                                                            "description": "Mid height of air flow path relative to ventilation zone (unit: m)"
                                                        },
                                                        "orientation360": {
                                                            "type": "number",
                                                            "minimum": 0,
                                                            "maximum": 360,
                                                            "description": "The orientation angle of the inclined surface, expressed as the geographical azimuth angle of the horizontal projection of the inclined surface normal, 0 to 360 (unit: \u02da)"
                                                        },
                                                        "pitch": {
                                                            "type": "number",
                                                            "minimum": 0,
                                                            "maximum": 180,
                                                            "description": "Tilt angle of the surface from horizontal, between 0 and 180, where 0 means the external surface is facing up, 90 means the external surface is vertical and 180 means the external surface is facing down (unit: \u02da)"
                                                        }
                                                    }
                                                },
                                                "position_exhaust": {
                                                    "type": "object",
                                                    "properties": {
                                                        "mid_height_air_flow_path": {
                                                            "type": "number",
                                                            "minimum": 1,
                                                            "maximum": 60,
                                                            "description": "Mid height of air flow path relative to ventilation zone (unit: m)"
                                                        },
                                                        "orientation360": {
                                                            "type": "number",
                                                            "minimum": 0,
                                                            "maximum": 360,
                                                            "description": "The orientation angle of the inclined surface, expressed as the geographical azimuth angle of the horizontal projection of the inclined surface normal, 0 to 360 (unit: \u02da)"
                                                        },
                                                        "pitch": {
                                                            "type": "number",
                                                            "minimum": 0,
                                                            "maximum": 180,
                                                            "description": "Tilt angle of the surface from horizontal, between 0 and 180, where 0 means the external surface is facing up, 90 means the external surface is vertical and 180 means the external surface is facing down (unit: \u02da)"
                                                        }
                                                    }
                                                }
                                            }
                                        },
                                        "else": {
                                            "oneOf": [
                                                {
                                                    "required": [
                                                        "mid_height_air_flow_path",
                                                        "orientation360",
                                                        "pitch"
                                                    ],
                                                    "properties": {
                                                        "mid_height_air_flow_path": {
                                                            "type": "number",
                                                            "minimum": 1,
                                                            "maximum": 60,
                                                            "description": "Mid height of air flow path relative to ventilation zone (unit: m)"
                                                        },
                                                        "orientation360": {
                                                            "type": "number",
                                                            "minimum": 0,
                                                            "maximum": 360,
                                                            "description": "The orientation angle of the inclined surface, expressed as the geographical azimuth angle of the horizontal projection of the inclined surface normal, 0 to 360 (unit: \u02da)"
                                                        },
                                                        "pitch": {
                                                            "type": "number",
                                                            "minimum": 0,
                                                            "maximum": 180,
                                                            "description": "Tilt angle of the surface from horizontal, between 0 and 180, where 0 means the external surface is facing up, 90 means the external surface is vertical and 180 means the external surface is facing down (unit: \u02da)"
                                                        }
                                                    }
                                                },
                                                {
                                                    "required": [
                                                        "position_exhaust"
                                                    ],
                                                    "properties": {
                                                        "position_exhaust": {
                                                            "type": "object",
                                                            "properties": {
                                                                "mid_height_air_flow_path": {
                                                                    "type": "number",
                                                                    "minimum": 1,
                                                                    "maximum": 60,
                                                                    "description": "Mid height of air flow path relative to ventilation zone (unit: m)"
                                                                },
                                                                "orientation360": {
                                                                    "type": "number",
                                                                    "minimum": 0,
                                                                    "maximum": 360,
                                                                    "description": "The orientation angle of the inclined surface, expressed as the geographical azimuth angle of the horizontal projection of the inclined surface normal, 0 to 360 (unit: \u02da)"
                                                                },
                                                                "pitch": {
                                                                    "type": "number",
                                                                    "minimum": 0,
                                                                    "maximum": 180,
                                                                    "description": "Tilt angle of the surface from horizontal, between 0 and 180, where 0 means the external surface is facing up, 90 means the external surface is vertical and 180 means the external surface is facing down (unit: \u02da)"
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            ]
                                        }
                                    },
                                    {
                                        "if": {
                                            "anyOf": [
                                                {
                                                    "properties": {
                                                        "vent_type": {
                                                            "const": "Decentralised continuous MEV"
                                                        }
                                                    }
                                                },
                                                {
                                                    "properties": {
                                                        "vent_type": {
                                                            "const": "Intermittent MEV"
                                                        }
                                                    }
                                                }
                                            ]
                                        },
                                        "then": {
                                            "required": [
                                                "SFP"
                                            ],
                                            "properties": {
                                                "SFP": {
                                                    "$ref": "#/$defs/SFP"
                                                }
                                            }
                                        }
                                    },
                                    {
                                        "if": {
                                            "anyOf": [
                                                {
                                                    "properties": {
                                                        "vent_type": {
                                                            "const": "Centralised continuous MEV"
                                                        }
                                                    }
                                                },
                                                {
                                                    "properties": {
                                                        "vent_type": {
                                                            "const": "MVHR"
                                                        }
                                                    }
                                                }
                                            ]
                                        },
                                        "then": {
                                            "oneOf": [
                                                {
                                                    "required": [
                                                        "measured_fan_power",
                                                        "measured_air_flow_rate"
                                                    ],
                                                    "not": {
                                                        "required": [
                                                            "SFP"
                                                        ]
                                                    }
                                                },
                                                {
                                                    "required": [
                                                        "SFP"
                                                    ],
                                                    "not": {
                                                        "anyOf": [
                                                            {
                                                                "required": [
                                                                    "measured_fan_power"
                                                                ]
                                                            },
                                                            {
                                                                "required": [
                                                                    "measured_air_flow_rate"
                                                                ]
                                                            }
                                                        ]
                                                    }
                                                }
                                            ],
                                            "properties": {
                                                "measured_fan_power": {
                                                    "type": "number"
                                                },
                                                "measured_air_flow_rate": {
                                                    "type": "number"
                                                },
                                                "SFP": {
                                                    "$ref": "#/$defs/SFP"
                                                }
                                            }
                                        }
                                    }
                                ]
                            }
                        ]
                    },
                    "description": "Provides details about available mechanical ventilation systems"
                }
            }
        },
        "Zone": {
            "type": "object",
            "additionalProperties": {
                "type": "object",
                "unevaluatedProperties": false,
                "required": [
                    "livingroom_area",
                    "restofdwelling_area",
                    "volume",
                    "Lighting",
                    "BuildingElement",
                    "ThermalBridging"
                ],
                "properties": {
                    "SpaceHeatSystem": {
                        "type": [
                            "string",
                            "array"
                        ],
                        "items": {
                            "type": "string"
                        },
                        "description": "Heating system details of the zone. References a key in $.SpaceHeatSystem"
                    },
                    "SpaceCoolSystem": {
                        "type": [
                            "string",
                            "array"
                        ],
                        "items": {
                            "type": "string"
                        },
                        "description": "Cooling system details of the zone. References a key in $.SpaceCoolSystem"
                    },
                    "livingroom_area": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 10000
                    },
                    "restofdwelling_area": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 10000
                    },
                    "volume": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 50000,
                        "description": "Total volume of the zone. (Unit: m\u00b3)"
                    },
                    "Lighting": {
                        "type": "object",
                        "unevaluatedProperties": false,
                        "required": [
                            "bulbs"
                        ],
                        "properties": {
                            "bulbs": {
                                "type": "array",
                                "minItems": 1,
                                "items": {
                                    "type": "object",
                                    "unevaluatedProperties": false,
                                    "required": [
                                        "count",
                                        "power",
                                        "efficacy"
                                    ],
                                    "properties": {
                                        "count": {
                                            "type": "integer",
                                            "minimum": 1
                                        },
                                        "power": {
                                            "type": "number",
                                            "minimum": 0
                                        },
                                        "efficacy": {
                                            "type": "number",
                                            "minimum": 0
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "BuildingElement": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "object",
                            "unevaluatedProperties": false,
                            "properties": {
                                "type": {
                                    "enum": [
                                        "BuildingElementAdjacentConditionedSpace",
                                        "BuildingElementAdjacentUnconditionedSpace_Simple",
                                        "BuildingElementGround",
                                        "BuildingElementOpaque",
                                        "BuildingElementPartyWall",
                                        "BuildingElementTransparent"
                                    ]
                                },
                                "thermal_resistance_construction": {
                                    "type": "number",
                                    "minimum": 0.01,
                                    "maximum": 50,
                                    "description": "Thermal resistance (m\u00b2.K/W), must be positive if provided"
                                },
                                "u_value": {
                                    "type": "number",
                                    "minimum": 0.01,
                                    "maximum": 10,
                                    "description": "U-value (W/m\u00b2\u00b7K), must be positive if provided"
                                }
                            },
                            "oneOf": [
                                {
                                    "required": [
                                        "thermal_resistance_construction"
                                    ]
                                },
                                {
                                    "required": [
                                        "u_value"
                                    ]
                                }
                            ],
                            "required": [
                                "type"
                            ],
                            "allOf": [
                                {
                                    "if": {
                                        "anyOf": [
                                            {
                                                "properties": {
                                                    "type": {
                                                        "const": "BuildingElementAdjacentConditionedSpace"
                                                    }
                                                }
                                            },
                                            {
                                                "properties": {
                                                    "type": {
                                                        "const": "BuildingElementAdjacentUnconditionedSpace_Simple"
                                                    }
                                                }
                                            }
                                        ]
                                    },
                                    "then": {
                                        "required": [
                                            "area",
                                            "areal_heat_capacity",
                                            "mass_distribution_class",
                                            "pitch"
                                        ],
                                        "properties": {
                                            "pitch": {
                                                "type": "number",
                                                "minimum": 0,
                                                "maximum": 180,
                                                "description": "Tilt angle of the surface from horizontal, between 0 and 180, where 0 means the external surface is facing up, 90 means the external surface is vertical and 180 means the external surface is facing down (unit: \u02da)"
                                            },
                                            "areal_heat_capacity": {
                                                "enum": [
                                                    "Very light",
                                                    "Light",
                                                    "Medium",
                                                    "Heavy",
                                                    "Very heavy"
                                                ]
                                            },
                                            "mass_distribution_class": {
                                                "$ref": "#/$defs/MassDistributionClass"
                                            },
                                            "area": {
                                                "type": "number",
                                                "minimum": 0.01,
                                                "maximum": 10000,
                                                "description": "Area of the building element (m\u00b2), must be positive"
                                            }
                                        }
                                    }
                                },
                                {
                                    "if": {
                                        "properties": {
                                            "type": {
                                                "const": "BuildingElementAdjacentUnconditionedSpace_Simple"
                                            }
                                        }
                                    },
                                    "then": {
                                        "description": "Adjacent unconditioned space building elements",
                                        "required": [
                                            "thermal_resistance_unconditioned_space"
                                        ],
                                        "properties": {
                                            "thermal_resistance_unconditioned_space": {
                                                "type": "number",
                                                "minimum": 0,
                                                "maximum": 3,
                                                "description": "Effective thermal resistance of unheated space (unit: m\u00b2.K/W)"
                                            }
                                        }
                                    }
                                },
                                {
                                    "if": {
                                        "properties": {
                                            "type": {
                                                "const": "BuildingElementGround"
                                            }
                                        }
                                    },
                                    "then": {
                                        "required": [
                                            "u_value",
                                            "total_area",
                                            "floor_type",
                                            "thickness_walls",
                                            "perimeter",
                                            "psi_wall_floor_junc",
                                            "thermal_resistance_floor_construction",
                                            "areal_heat_capacity",
                                            "mass_distribution_class",
                                            "area"
                                        ],
                                        "properties": {
                                            "total_area": {
                                                "type": "number",
                                                "minimum": 5,
                                                "description": "Total area of the building element across entire dwelling (unit: m\u00b2)"
                                            },
                                            "floor_type": {
                                                "enum": [
                                                    "Slab_no_edge_insulation",
                                                    "Slab_edge_insulation",
                                                    "Suspended_floor",
                                                    "Heated_basement",
                                                    "Unheated_basement"
                                                ]
                                            },
                                            "thickness_walls": {
                                                "type": "number",
                                                "minimum": 0,
                                                "maximum": 100,
                                                "description": "Thickness of the walls (unit: m)"
                                            },
                                            "perimeter": {
                                                "type": "number",
                                                "minimum": 0,
                                                "maximum": 1000,
                                                "description": "Perimeter of the floor (unit: m)"
                                            },
                                            "psi_wall_floor_junc": {
                                                "type": "number",
                                                "minimum": 0,
                                                "maximum": 2,
                                                "description": "Linear thermal transmittance of the junction between the floor and the walls (unit: W/m.K)"
                                            },
                                            "thermal_resistance_floor_construction": {
                                                "type": "number",
                                                "minimum": 0.000001,
                                                "maximum": 50,
                                                "description": "Total thermal resistance of all layers in the floor construction, excluding surface resistances (unit: m\u00b2.K/W)"
                                            },
                                            "areal_heat_capacity": {
                                                "enum": [
                                                    "Very light",
                                                    "Light",
                                                    "Medium",
                                                    "Heavy",
                                                    "Very heavy"
                                                ]
                                            },
                                            "mass_distribution_class": {
                                                "$ref": "#/$defs/MassDistributionClass"
                                            },
                                            "area": {
                                                "type": "number",
                                                "minimum": 5,
                                                "maximum": 10000
                                            }
                                        },
                                        "allOf": [
                                            {
                                                "if": {
                                                    "properties": {
                                                        "floor_type": {
                                                            "const": "Slab_edge_insulation"
                                                        }
                                                    }
                                                },
                                                "then": {
                                                    "description": "Slab floor with edge insulation",
                                                    "required": [
                                                        "edge_insulation"
                                                    ],
                                                    "properties": {
                                                        "edge_insulation": {
                                                            "type": "array",
                                                            "items": {
                                                                "type": "object",
                                                                "unevaluatedProperties": false,
                                                                "required": [
                                                                    "type",
                                                                    "edge_thermal_resistance"
                                                                ],
                                                                "properties": {
                                                                    "type": {
                                                                        "enum": [
                                                                            "horizontal",
                                                                            "vertical"
                                                                        ]
                                                                    },
                                                                    "edge_thermal_resistance": {
                                                                        "type": "number",
                                                                        "exclusiveMinimum": 0,
                                                                        "description": "Thermal resistance of floor edge insulation (unit: m\u00b2K/W)"
                                                                    }
                                                                },
                                                                "allOf": [
                                                                    {
                                                                        "if": {
                                                                            "properties": {
                                                                                "type": {
                                                                                    "const": "horizontal"
                                                                                }
                                                                            }
                                                                        },
                                                                        "then": {
                                                                            "required": [
                                                                                "width"
                                                                            ],
                                                                            "properties": {
                                                                                "width": {
                                                                                    "type": "number",
                                                                                    "description": "Width of horizontal edge insulation (unit: m)",
                                                                                    "exclusiveMinimum": 0
                                                                                }
                                                                            }
                                                                        }
                                                                    },
                                                                    {
                                                                        "if": {
                                                                            "properties": {
                                                                                "type": {
                                                                                    "const": "vertical"
                                                                                }
                                                                            }
                                                                        },
                                                                        "then": {
                                                                            "required": [
                                                                                "depth"
                                                                            ],
                                                                            "properties": {
                                                                                "depth": {
                                                                                    "type": "number",
                                                                                    "description": "Depth of vertical edge insulation (unit: m)",
                                                                                    "exclusiveMinimum": 0
                                                                                }
                                                                            }
                                                                        }
                                                                    }
                                                                ]
                                                            }
                                                        }
                                                    }
                                                }
                                            },
                                            {
                                                "if": {
                                                    "properties": {
                                                        "floor_type": {
                                                            "const": "Suspended_floor"
                                                        }
                                                    }
                                                },
                                                "then": {
                                                    "description": "Suspended floor",
                                                    "required": [
                                                        "height_upper_surface",
                                                        "thermal_transm_walls",
                                                        "shield_fact_location",
                                                        "thickness_walls",
                                                        "thermal_resist_insul",
                                                        "area_per_perimeter_vent"
                                                    ],
                                                    "properties": {
                                                        "height_upper_surface": {
                                                            "type": "number",
                                                            "minimum": 0,
                                                            "maximum": 100,
                                                            "description": "Height of the floor upper surface (unit: m) - average value is used if h varies"
                                                        },
                                                        "thermal_transm_walls": {
                                                            "type": "number",
                                                            "minimum": 0,
                                                            "maximum": 100,
                                                            "description": "Thermal transmittance of walls above ground in accordance with ISO 6946, i.e. including surface resistances (unit: W/m\u00b2.K)"
                                                        },
                                                        "area_per_perimeter_vent": {
                                                            "type": "number",
                                                            "description": "Area of ventilation openings per perimeter (unit: m\u00b2/m)"
                                                        },
                                                        "shield_fact_location": {
                                                            "enum": [
                                                                "Sheltered",
                                                                "Average",
                                                                "Exposed"
                                                            ],
                                                            "description": "Wind shielding factor"
                                                        },
                                                        "thickness_walls": {
                                                            "type": "number",
                                                            "minimum": 0,
                                                            "maximum": 100,
                                                            "description": "Thickness of the walls (unit: m)"
                                                        },
                                                        "thermal_resist_insul": {
                                                            "type": "number",
                                                            "minimum": 0,
                                                            "maximum": 100,
                                                            "description": "Thermal resistance of insulation on base of underfloor space, excluding surface resistances (unit: m\u00b2.K/W)"
                                                        }
                                                    }
                                                }
                                            },
                                            {
                                                "if": {
                                                    "anyOf": [
                                                        {
                                                            "properties": {
                                                                "floor_type": {
                                                                    "const": "Heated_basement"
                                                                }
                                                            }
                                                        },
                                                        {
                                                            "properties": {
                                                                "floor_type": {
                                                                    "const": "Unheated_basement"
                                                                }
                                                            }
                                                        }
                                                    ]
                                                },
                                                "then": {
                                                    "required": [
                                                        "thickness_walls",
                                                        "depth_basement_floor",
                                                        "thermal_resist_walls_base"
                                                    ],
                                                    "properties": {
                                                        "thickness_walls": {
                                                            "type": "number",
                                                            "minimum": 0,
                                                            "maximum": 100,
                                                            "description": "Thickness of the walls (unit: m)"
                                                        },
                                                        "depth_basement_floor": {
                                                            "type": "number",
                                                            "exclusiveMinimum": 0,
                                                            "description": "Depth of basement floor below ground level (unit: m)"
                                                        },
                                                        "thermal_resist_walls_base": {
                                                            "type": "number",
                                                            "description": "Thermal resistance of walls of the basement, excluding surface resistances (unit: m\u00b2.K/W)"
                                                        }
                                                    }
                                                }
                                            },
                                            {
                                                "if": {
                                                    "properties": {
                                                        "floor_type": {
                                                            "const": "Unheated_basement"
                                                        }
                                                    }
                                                },
                                                "then": {
                                                    "description": "Unheated basement",
                                                    "required": [
                                                        "thermal_transm_envi_base",
                                                        "thermal_transm_walls",
                                                        "height_basement_walls"
                                                    ],
                                                    "properties": {
                                                        "thermal_transm_envi_base": {
                                                            "type": "number",
                                                            "description": "Thermal transmittance of floor above basement in accordance with ISO 6946, i.e. including surface resistances (unit: W/m\u00b2.K)"
                                                        },
                                                        "thermal_transm_walls": {
                                                            "type": "number",
                                                            "description": "Thermal transmittance of walls above ground in accordance with ISO 6946, i.e. including surface resistances (unit: W/m\u00b2.K)"
                                                        },
                                                        "height_basement_walls": {
                                                            "type": "number",
                                                            "description": "Height of the basement walls above ground level (unit: m)"
                                                        }
                                                    }
                                                }
                                            }
                                        ]
                                    }
                                },
                                {
                                    "if": {
                                        "properties": {
                                            "type": {
                                                "const": "BuildingElementOpaque"
                                            }
                                        }
                                    },
                                    "then": {
                                        "description": "Opaque building elements (walls, roofs, etc.)",
                                        "required": [
                                            "areal_heat_capacity",
                                            "mass_distribution_class",
                                            "base_height",
                                            "height",
                                            "width",
                                            "area",
                                            "pitch"
                                        ],
                                        "properties": {
                                            "pitch": {
                                                "type": "number",
                                                "minimum": 0,
                                                "maximum": 180,
                                                "description": "Tilt angle of the surface from horizontal, between 0 and 180, where 0 means the external surface is facing up, 90 means the external surface is vertical and 180 means the external surface is facing down (unit: \u02da)"
                                            },
                                            "is_unheated_pitched_roof": {
                                                "type": "boolean"
                                            },
                                            "is_external_door": {
                                                "type": "boolean"
                                            },
                                            "colour": {
                                                "enum": [
                                                    "Light",
                                                    "Intermediate",
                                                    "Dark"
                                                ]
                                            },
                                            "areal_heat_capacity": {
                                                "enum": [
                                                    "Very light",
                                                    "Light",
                                                    "Medium",
                                                    "Heavy",
                                                    "Very heavy"
                                                ]
                                            },
                                            "mass_distribution_class": {
                                                "$ref": "#/$defs/MassDistributionClass"
                                            },
                                            "base_height": {
                                                "type": "number",
                                                "minimum": 0,
                                                "maximum": 500,
                                                "description": "The distance between the ground and the lowest edge of the element (unit: m)"
                                            },
                                            "height": {
                                                "type": "number",
                                                "minimum": 0.001,
                                                "maximum": 50,
                                                "description": "Height of the building element (m), must be positive"
                                            },
                                            "width": {
                                                "type": "number",
                                                "minimum": 0.001,
                                                "maximum": 100,
                                                "description": "Width of the building element (m), must be positive"
                                            },
                                            "area": {
                                                "type": "number",
                                                "minimum": 0.01,
                                                "maximum": 10000,
                                                "description": "Area of the building element (m\u00b2), must be positive"
                                            }
                                        },
                                        "allOf": [
                                            {
                                                "if": {
                                                    "properties": {
                                                        "pitch": {
                                                            "type": "number",
                                                            "maximum": 60
                                                        }
                                                    }
                                                },
                                                "then": {
                                                    "required": [
                                                        "is_unheated_pitched_roof",
                                                        "colour"
                                                    ]
                                                }
                                            },
                                            {
                                                "if": {
                                                    "properties": {
                                                        "pitch": {
                                                            "type": "number",
                                                            "minimum": 60,
                                                            "maximum": 120
                                                        }
                                                    }
                                                },
                                                "then": {
                                                    "required": [
                                                        "is_external_door",
                                                        "colour"
                                                    ]
                                                }
                                            },
                                            {
                                                "if": {
                                                    "not": {
                                                        "anyOf": [
                                                            {
                                                                "properties": {
                                                                    "pitch": {
                                                                        "const": 0
                                                                    }
                                                                }
                                                            },
                                                            {
                                                                "properties": {
                                                                    "pitch": {
                                                                        "const": 180
                                                                    }
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                "then": {
                                                    "required": [
                                                        "orientation360"
                                                    ],
                                                    "properties": {
                                                        "orientation360": {
                                                            "type": "integer",
                                                            "minimum": 0,
                                                            "maximum": 360,
                                                            "description": "Degrees from north. Required for any element with a non-flat (0 or 180) pitch"
                                                        }
                                                    }
                                                }
                                            }
                                        ]
                                    }
                                },
                                {
                                    "if": {
                                        "properties": {
                                            "type": {
                                                "const": "BuildingElementPartyWall"
                                            }
                                        }
                                    },
                                    "then": {
                                        "description": "Party wall element for all party wall types, with specific handling for cavity air movement heat loss.\n\nFor cavity party walls, this accounts for non-negligible heat loss due to air movement\nwithin the cavity, as identified by research. The thermal resistance of the\nunconditioned space (cavity) is derived from the party wall cavity type and lining type.\nFive cavity types are supported:\nsolid, unfilled_unsealed, unfilled_sealed, filled_sealed, and defined_resistance.\nTwo lining types are supported:\nwet_plaster, and dry_lined",
                                        "required": [
                                            "area",
                                            "areal_heat_capacity",
                                            "mass_distribution_class",
                                            "pitch",
                                            "type",
                                            "party_wall_cavity_type"
                                        ],
                                        "properties": {
                                            "area": {
                                                "description": "Area of the building element (m\u00b2), must be positive",
                                                "exclusiveMinimum": 0,
                                                "title": "Area",
                                                "type": "number"
                                            },
                                            "areal_heat_capacity": {
                                                "enum": [
                                                    "Very light",
                                                    "Light",
                                                    "Medium",
                                                    "Heavy",
                                                    "Very heavy"
                                                ]
                                            },
                                            "mass_distribution_class": {
                                                "$ref": "#/$defs/MassDistributionClass"
                                            },
                                            "pitch": {
                                                "description": "Tilt angle of the surface from horizontal, between 60 and 120 degrees (wall range), where 90 means vertical (unit: \u00b0)",
                                                "maximum": 120.0,
                                                "minimum": 60.0,
                                                "title": "Pitch",
                                                "type": "number"
                                            },
                                            "party_wall_cavity_type": {
                                                "$ref": "#/$defs/PartyWallCavityType",
                                                "description": "Type of party wall cavity construction affecting heat loss through air movement"
                                            }
                                        },
                                        "allOf": [
                                            {
                                                "if": {
                                                    "anyOf": [
                                                        {
                                                            "properties": {
                                                                "party_wall_cavity_type": {
                                                                    "const": "unfilled_unsealed"
                                                                }
                                                            }
                                                        },
                                                        {
                                                            "properties": {
                                                                "party_wall_cavity_type": {
                                                                    "const": "unfilled_sealed"
                                                                }
                                                            }
                                                        },
                                                        {
                                                            "properties": {
                                                                "party_wall_cavity_type": {
                                                                    "const": "filled_unsealed"
                                                                }
                                                            }
                                                        }
                                                    ]
                                                },
                                                "then": {
                                                    "required": [
                                                        "party_wall_lining_type"
                                                    ],
                                                    "properties": {
                                                        "party_wall_lining_type": {
                                                            "$ref": "#/$defs/PartyWallLiningType",
                                                            "description": "Type of party wall lining. Required only when party_wall_cavity_type is unfilled_unsealed, unfilled_sealed, or filled_unsealed"
                                                        }
                                                    }
                                                }
                                            },
                                            {
                                                "if": {
                                                    "properties": {
                                                        "party_wall_cavity_type": {
                                                            "const": "defined_resistance"
                                                        }
                                                    }
                                                },
                                                "then": {
                                                    "required": [
                                                        "thermal_resistance_cavity"
                                                    ],
                                                    "properties": {
                                                        "thermal_resistance_cavity": {
                                                            "type": "number",
                                                            "exclusiveMinimum": 0,
                                                            "description": "Effective thermal resistance of the party wall cavity (unit: m\u00b2.K/W). Required only when party_wall_cavity_type is 'defined_resistance'. For other cavity types, this is calculated automatically.",
                                                            "title": "Thermal Resistance Cavity"
                                                        }
                                                    }
                                                }
                                            }
                                        ]
                                    }
                                },
                                {
                                    "if": {
                                        "properties": {
                                            "type": {
                                                "const": "BuildingElementTransparent"
                                            }
                                        }
                                    },
                                    "then": {
                                        "description": "Transparent building elements (windows, glazing)",
                                        "required": [
                                            "frame_area_fraction",
                                            "g_value",
                                            "mid_height",
                                            "max_window_open_area",
                                            "security_risk",
                                            "window_part_list",
                                            "shading",
                                            "base_height",
                                            "height",
                                            "width",
                                            "free_area_height",
                                            "pitch"
                                        ],
                                        "properties": {
                                            "pitch": {
                                                "type": "number",
                                                "minimum": 0,
                                                "maximum": 180,
                                                "description": "Tilt angle of the surface from horizontal, between 0 and 180, where 0 means the external surface is facing up, 90 means the external surface is vertical and 180 means the external surface is facing down (unit: \u02da)"
                                            },
                                            "frame_area_fraction": {
                                                "type": "number",
                                                "minimum": 0,
                                                "maximum": 1,
                                                "description": "The frame area fraction of window, ratio of the projected frame area to the overall projected area of the glazed element of the window"
                                            },
                                            "g_value": {
                                                "type": "number",
                                                "minimum": 0,
                                                "maximum": 1,
                                                "description": "Total solar energy transmittance of the transparent part of the window"
                                            },
                                            "free_area_height": {
                                                "type": "number",
                                                "minimum": 0,
                                                "maximum": 100,
                                                "description": "Height of the openable area, corrected for obstruction due to the window frame of the openable section (unit: m)"
                                            },
                                            "mid_height": {
                                                "type": "number",
                                                "exclusiveMinimum": 0,
                                                "maximum": 100,
                                                "description": "Height of the mid-point of the window, relative to the base of the ventilation zone (unit: m)"
                                            },
                                            "max_window_open_area": {
                                                "type": "number",
                                                "minimum": 0,
                                                "maximum": 100,
                                                "description": "Openable area of the window ignoring the obstructing effect of the frame of the openable part"
                                            },
                                            "security_risk": {
                                                "type": "boolean"
                                            },
                                            "window_part_list": {
                                                "type": "array",
                                                "items": {
                                                    "type": "object",
                                                    "unevaluatedProperties": false,
                                                    "required": [
                                                        "mid_height_air_flow_path"
                                                    ],
                                                    "properties": {
                                                        "mid_height_air_flow_path": {
                                                            "type": "number",
                                                            "minimum": 0,
                                                            "maximum": 100,
                                                            "description": "(unit: m)"
                                                        }
                                                    }
                                                }
                                            },
                                            "shading": {
                                                "$ref": "#/$defs/WindowShading"
                                            },
                                            "treatment": {
                                                "type": "array",
                                                "items": {
                                                    "type": "object",
                                                    "unevaluatedProperties": false,
                                                    "required": [
                                                        "type",
                                                        "controls",
                                                        "delta_r",
                                                        "trans_red"
                                                    ],
                                                    "properties": {
                                                        "type": {
                                                            "enum": [
                                                                "curtains",
                                                                "blinds"
                                                            ]
                                                        },
                                                        "controls": {
                                                            "enum": [
                                                                "auto_motorised",
                                                                "manual"
                                                            ]
                                                        },
                                                        "delta_r": {
                                                            "type": "number",
                                                            "exclusiveMinimum": 0,
                                                            "maximum": 100,
                                                            "description": "Additional thermal resistance provided by a window treatment (unit: m\u00b2K/W)"
                                                        },
                                                        "trans_red": {
                                                            "type": "number",
                                                            "minimum": 0,
                                                            "maximum": 1,
                                                            "description": "Dimensionless factor describing the reduction in the amount of transmitted radiation due to a window treatment"
                                                        }
                                                    }
                                                }
                                            },
                                            "base_height": {
                                                "type": "number",
                                                "minimum": 0,
                                                "maximum": 500,
                                                "description": "The distance between the ground and the lowest edge of the element (unit: m)"
                                            },
                                            "height": {
                                                "type": "number",
                                                "minimum": 0.001,
                                                "maximum": 50,
                                                "description": "Height of the building element (m), must be positive"
                                            },
                                            "width": {
                                                "type": "number",
                                                "minimum": 0.001,
                                                "maximum": 100,
                                                "description": "Width of the building element (m), must be positive"
                                            }
                                        },
                                        "if": {
                                            "not": {
                                                "anyOf": [
                                                    {
                                                        "properties": {
                                                            "pitch": {
                                                                "const": 0
                                                            }
                                                        }
                                                    },
                                                    {
                                                        "properties": {
                                                            "pitch": {
                                                                "const": 180
                                                            }
                                                        }
                                                    }
                                                ]
                                            }
                                        },
                                        "then": {
                                            "required": [
                                                "orientation360"
                                            ],
                                            "properties": {
                                                "orientation360": {
                                                    "type": "integer",
                                                    "minimum": 0,
                                                    "maximum": 360,
                                                    "description": "Degrees from north. Required for any element with a non-flat (0 or 180) pitch"
                                                }
                                            }
                                        }
                                    }
                                }
                            ]
                        },
                        "description": "Dictionary of building elements present in the zone (e.g. walls, floors, windows, etc.)."
                    },
                    "ThermalBridging": {
                        "type": [
                            "object",
                            "number"
                        ],
                        "additionalProperties": {
                            "type": "object",
                            "unevaluatedProperties": false,
                            "properties": {
                                "type": {
                                    "enum": [
                                        "ThermalBridgeLinear",
                                        "ThermalBridgePoint"
                                    ]
                                }
                            },
                            "required": [
                                "type"
                            ],
                            "allOf": [
                                {
                                    "if": {
                                        "properties": {
                                            "type": {
                                                "const": "ThermalBridgeLinear"
                                            }
                                        }
                                    },
                                    "then": {
                                        "required": [
                                            "linear_thermal_transmittance",
                                            "length",
                                            "junction_type"
                                        ],
                                        "properties": {
                                            "linear_thermal_transmittance": {
                                                "type": "number",
                                                "description": "Linear thermal transmittance of the thermal bridge. (Unit: W/m.K)"
                                            },
                                            "length": {
                                                "type": "number",
                                                "minimum": 0,
                                                "maximum": 10000,
                                                "description": "Length of the thermal bridge over which the linear thermal transmittance applies. (Unit: m)"
                                            },
                                            "junction_type": {
                                                "enum": [
                                                    "E1",
                                                    "E2",
                                                    "E3",
                                                    "E4",
                                                    "E5",
                                                    "E6",
                                                    "E7",
                                                    "E8",
                                                    "E9",
                                                    "E10",
                                                    "E11",
                                                    "E12",
                                                    "E13",
                                                    "E14",
                                                    "E15",
                                                    "E16",
                                                    "E17",
                                                    "E18",
                                                    "E19",
                                                    "E20",
                                                    "E21",
                                                    "E22",
                                                    "E23",
                                                    "E24",
                                                    "E25",
                                                    "P1",
                                                    "P2",
                                                    "P3",
                                                    "P4",
                                                    "P5",
                                                    "P6",
                                                    "P7",
                                                    "P8",
                                                    "R1",
                                                    "R2",
                                                    "R3",
                                                    "R4",
                                                    "R5",
                                                    "R6",
                                                    "R7",
                                                    "R8",
                                                    "R9",
                                                    "R10",
                                                    "R11"
                                                ]
                                            }
                                        }
                                    }
                                },
                                {
                                    "if": {
                                        "properties": {
                                            "type": {
                                                "const": "ThermalBridgePoint"
                                            }
                                        }
                                    },
                                    "then": {
                                        "required": [
                                            "heat_transfer_coeff"
                                        ],
                                        "properties": {
                                            "heat_transfer_coeff": {
                                                "type": "number",
                                                "minimum": 0,
                                                "maximum": 2,
                                                "description": "Heat transfer coefficient of the thermal bridge. (Unit: W/K)"
                                            }
                                        }
                                    }
                                }
                            ]
                        },
                        "description": "Overall heat transfer coefficient of the thermal bridge (in W/K), or dictionary of linear thermal transmittance details of the thermal bridges in the zone."
                    }
                }
            },
            "minProperties": 1,
            "maxProperties": 1
        }
    },
    "if": {
        "properties": {
            "PartO_active_cooling_required": {
                "const": true
            }
        }
    },
    "then": {
        "properties": {
            "Zone": {
                "type": "object",
                "additionalProperties": {
                    "required": [
                        "SpaceCoolSystem"
                    ]
                }
            }
        }
    },
    "required": [
        "PartGcompliance",
        "BuildingLength",
        "BuildingWidth",
        "NumberOfBedrooms",
        "NumberOfWetRooms",
        "NumberOfHotTappedRooms",
        "NumberOfUtilityRooms",
        "NumberOfBathrooms",
        "NumberOfSanitaryAccommodations",
        "NumberOfHabitableRooms",
        "HeatingControlType",
        "KitchenExtractorHoodExternal",
        "ExternalConditions",
        "Appliances",
        "ColdWaterSource",
        "EnergySupply",
        "HotWaterSource",
        "HotWaterDemand",
        "Events",
        "SpaceHeatSystem",
        "General",
        "InfiltrationVentilation",
        "Zone"
    ],
    "$defs": {
        "ElectricityFuelProperties": {
            "properties": {
                "priority": {
                    "items": {
                        "$ref": "#/$defs/EnergySupplyPriorityEntry"
                    },
                    "title": "Priority",
                    "type": "array"
                },
                "is_export_capable": {
                    "type": "boolean"
                },
                "ElectricBattery": {
                    "type": "object",
                    "unevaluatedProperties": false,
                    "required": [
                        "capacity",
                        "charge_discharge_efficiency_round_trip",
                        "minimum_charge_rate_one_way_trip",
                        "maximum_charge_rate_one_way_trip",
                        "maximum_discharge_rate_one_way_trip",
                        "battery_location"
                    ],
                    "properties": {
                        "capacity": {
                            "type": "number",
                            "exclusiveMinimum": 0,
                            "maximum": 50,
                            "description": "The maximum capacity of the battery (unit: kWh)"
                        },
                        "charge_discharge_efficiency_round_trip": {
                            "type": "number",
                            "exclusiveMinimum": 0,
                            "maximum": 1,
                            "description": "Charge/discharge round trip efficiency of battery system (greater than 0, up to 1)"
                        },
                        "minimum_charge_rate_one_way_trip": {
                            "type": "number",
                            "minimum": 0,
                            "description": "The minimum charge rate one way trip the battery allows (unit: kW)"
                        },
                        "maximum_charge_rate_one_way_trip": {
                            "type": "number",
                            "exclusiveMinimum": 0,
                            "description": "The maximum charge rate one way trip the battery allows (unit: kW)"
                        },
                        "maximum_discharge_rate_one_way_trip": {
                            "type": "number",
                            "exclusiveMinimum": 0,
                            "description": "The maximum discharge rate one way trip the battery allows (unit: kW)"
                        },
                        "battery_location": {
                            "enum": [
                                "inside",
                                "outside"
                            ],
                            "description": "The location of the battery (inside/outside)"
                        }
                    }
                },
                "diverter": {
                    "type": "object",
                    "unevaluatedProperties": false,
                    "required": [
                        "HeatSource"
                    ],
                    "properties": {
                        "HeatSource": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "EnergySupplyPriorityEntry": {
            "enum": [
                "ElectricBattery",
                "diverter"
            ],
            "title": "EnergySupplyPriorityEntry",
            "type": "string"
        },
        "MassDistributionClass": {
            "enum": [
                "I: Mass concentrated at internal side",
                "E: Mass concentrated at external side",
                "IE: Mass divided over internal and external side",
                "D: Mass equally distributed",
                "M: Mass concentrated inside"
            ],
            "title": "MassDistributionClass",
            "type": "string"
        },
        "BoilerCostScheduleHybrid": {
            "additionalProperties": false,
            "properties": {
                "cost_schedule_boiler": {
                    "$ref": "#/$defs/ScheduleForDouble",
                    "description": "Cost data for the fuel used by the hybrid's boiler (can be any units, typically p/kWh)"
                },
                "cost_schedule_hp": {
                    "$ref": "#/$defs/ScheduleForDouble",
                    "description": "Cost data for the fuel used by the hybrid's heat pump (can be any units, typically p/kWh)"
                },
                "cost_schedule_start_day": {
                    "description": "Day on which the cost data series begins",
                    "maximum": 365,
                    "minimum": 0,
                    "title": "Cost Schedule Start Day",
                    "type": "integer"
                },
                "cost_schedule_time_series_step": {
                    "description": "Time step of the cost data series",
                    "title": "Cost Schedule Time Series Step",
                    "type": "number"
                }
            },
            "required": [
                "cost_schedule_boiler",
                "cost_schedule_hp",
                "cost_schedule_start_day",
                "cost_schedule_time_series_step"
            ],
            "title": "BoilerCostScheduleHybrid",
            "type": "object"
        },
        "SFP": {
            "type": "number",
            "exclusiveMinimum": 0,
            "description": "Specific fan power, assumed inclusive of any in use factors unless SFP_in_use_factor also provided (unit: W/l/s)"
        },
        "ScheduleForDouble": {
            "additionalProperties": {
                "items": {
                    "$ref": "#/$defs/ScheduleEntryForDouble"
                },
                "type": "array"
            },
            "description": "A dictionary of schedule entries where:\n- Keys are user-defined names (e.g., \"main\", \"week\", \"weekday\", \"weekend\")\n- Values are lists of ScheduleEntryForDouble\n- The \"main\" entry is required",
            "title": "ScheduleForDouble",
            "type": "object"
        },
        "ScheduleEntryForDouble": {
            "anyOf": [
                {
                    "type": "number"
                },
                {
                    "$ref": "#/$defs/ScheduleRepeaterForDouble"
                },
                {
                    "type": "string"
                },
                {
                    "type": "null"
                }
            ],
            "description": "A schedule entry that can be a direct value, repeating pattern, or reference.\n\nExamples:\n    # Direct float value (temperature setpoint)\n    21.5\n\n    # Repeating pattern (21.5\u00b0C for 8 hours, 18\u00b0C for 16 hours)\n    {\"repeat\": 24, \"value\": 21.5}\n\n    # Reference to another schedule\n    \"weekday_temp_schedule\"\n\n    # Complex repeating pattern with reference\n    {\"repeat\": 7, \"value\": \"daily_temp_pattern\"}\n\n    # Power level schedule\n    2.5  # 2.5 kW constant power",
            "title": "ScheduleEntryForDouble"
        },
        "ScheduleRepeaterForDouble": {
            "additionalProperties": false,
            "description": "Defines a repeating pattern for double (float) schedule values.\n\nExamples:\n    # Repeat temperature setpoint 21.5\u00b0C 24 times (once per hour)\n    {\"repeat\": 24, \"value\": 21.5}\n\n    # Reference another schedule, repeat 7 times (once per day)\n    {\"repeat\": 7, \"value\": \"weekday_temp_schedule\"}\n\n    # Repeat power level 2.5 kW for 8 hours\n    {\"repeat\": 8, \"value\": 2.5}",
            "properties": {
                "repeat": {
                    "description": "Number of times to repeat the value",
                    "minimum": 1,
                    "title": "Repeat",
                    "type": "integer"
                },
                "value": {
                    "$ref": "#/$defs/ScheduleRepeaterValueForDouble",
                    "description": "Value to repeat or schedule reference"
                }
            },
            "required": [
                "repeat",
                "value"
            ],
            "title": "ScheduleRepeaterForDouble",
            "type": "object"
        },
        "ScheduleRepeaterValueForDouble": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "$ref": "#/$defs/ScheduleRepeaterEntryForDouble"
                }
            ],
            "title": "ScheduleRepeaterValueForDouble"
        },
        "ScheduleRepeaterEntryForDouble": {
            "anyOf": [
                {
                    "type": "number"
                },
                {
                    "type": "null"
                }
            ],
            "title": "ScheduleRepeaterEntryForDouble"
        },
        "PartyWallCavityType": {
            "description": "Types of party wall cavity configurations",
            "enum": [
                "solid",
                "unfilled_unsealed",
                "unfilled_sealed",
                "filled_sealed",
                "filled_unsealed",
                "defined_resistance"
            ],
            "title": "PartyWallCavityType",
            "type": "string"
        },
        "PartyWallLiningType": {
            "description": "Types of party wall lining",
            "enum": [
                "wet_plaster",
                "dry_lined"
            ],
            "title": "PartyWallLiningType",
            "type": "string"
        },
        "SmartHotWaterTank": {
            "oneOf": [
                {
                    "properties": {
                        "product_reference": {
                            "description": "A unique reference to a product held within the HEM database (PCDB)",
                            "title": "Reference to the product in the HEM database",
                            "type": "string"
                        },
                        "EnergySupply_pump": {
                            "type": "string",
                            "description": "References a key (e.g., 'mains elec', 'mains gas') in $.EnergySupply"
                        },
                        "init_temp": {
                            "type": "number",
                            "minimum": 1,
                            "maximum": 100,
                            "description": "Initial temperature of the smart hot water tank at the start of simulation (unit: \u02daC)"
                        },
                        "primary_pipework": {
                            "type": "array",
                            "items": {
                                "$ref": "#/$defs/PrimaryPipework"
                            },
                            "description": "List of primary pipework components connected to the smart hot water tank"
                        },
                        "HeatSource": {
                            "type": "object",
                            "unevaluatedProperties": true,
                            "additionalProperties": {
                                "$ref": "#/$defs/HeatSource"
                            },
                            "description": "Dictionary of heating systems connected to the smart hot water tank"
                        },
                        "ColdWaterSource": {
                            "type": "string",
                            "reference_to": [
                                "$.cold_water_source",
                                "$.pre_heated_water_source",
                                "$.wwhrs"
                            ],
                            "description": "References a key (e.g., \"mains water\") in $.ColdWaterSource"
                        }
                    },
                    "required": [
                        "product_reference",
                        "EnergySupply_pump",
                        "HeatSource",
                        "ColdWaterSource"
                    ]
                },
                {
                    "$ref": "#/$defs/Tank",
                    "properties": {
                        "EnergySupply_pump": {
                            "type": "string",
                            "description": "References a key (e.g., 'mains elec', 'mains gas') in $.EnergySupply"
                        },
                        "max_flow_rate_pump_l_per_min": {
                            "type": "number",
                            "exclusiveMinimum": 0,
                            "description": "Maximum flow rate of the pump (unit: litre/minute)"
                        },
                        "power_pump_kW": {
                            "type": "number",
                            "exclusiveMinimum": 0,
                            "description": "Electrical power consumption of the pump (unit: kW)"
                        },
                        "temp_usable": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 100,
                            "description": "Temperature below which water is considered unusable (unit: \u02daC)"
                        }
                    },
                    "required": [
                        "EnergySupply_pump",
                        "max_flow_rate_pump_l_per_min",
                        "power_pump_kW",
                        "temp_usable"
                    ]
                }
            ]
        },
        "StorageTank": {
            "$ref": "#/$defs/Tank",
            "properties": {
                "HeatSource": {
                    "additionalProperties": {
                        "required": [
                            "thermostat_position"
                        ]
                    },
                    "description": "Dictionary of heating systems connected to the storage tank"
                }
            }
        },
        "Tank": {
            "required": [
                "ColdWaterSource",
                "volume",
                "daily_losses",
                "HeatSource"
            ],
            "properties": {
                "ColdWaterSource": {
                    "type": "string",
                    "reference_to": [
                        "$.cold_water_source",
                        "$.pre_heated_water_source",
                        "$.wwhrs"
                    ],
                    "description": "References a key (e.g., \"mains water\") in $.ColdWaterSource"
                },
                "volume": {
                    "type": "number",
                    "minimum": 1,
                    "maximum": 1000,
                    "description": "Total volume of tank (unit: litre)"
                },
                "init_temp": {
                    "type": "number",
                    "minimum": 1,
                    "maximum": 100,
                    "description": "Initial temperature of the storage tank at the start of simulation (unit: \u02daC)"
                },
                "daily_losses": {
                    "type": "number",
                    "minimum": 0.001,
                    "maximum": 200,
                    "description": "Measured standby losses due to cylinder insulation at standardised conditions (unit: kWh/24h)"
                },
                "primary_pipework": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "unevaluatedProperties": false,
                        "required": [
                            "location",
                            "internal_diameter_mm",
                            "external_diameter_mm",
                            "length",
                            "insulation_thermal_conductivity",
                            "insulation_thickness_mm",
                            "surface_reflectivity",
                            "pipe_contents"
                        ],
                        "properties": {
                            "location": {
                                "enum": [
                                    "internal",
                                    "external"
                                ],
                                "description": "Location of the pipework (internal or external)"
                            },
                            "internal_diameter_mm": {
                                "type": "number",
                                "minimum": 5,
                                "maximum": 50,
                                "description": "(unit: mm)"
                            },
                            "external_diameter_mm": {
                                "type": "number",
                                "minimum": 5,
                                "maximum": 50,
                                "description": "(unit: mm)"
                            },
                            "length": {
                                "type": "number",
                                "minimum": 0.05,
                                "description": "(unit: m)"
                            },
                            "insulation_thermal_conductivity": {
                                "type": "number",
                                "exclusiveMinimum": 0,
                                "description": "Thermal conductivity of the insulation (unit: W / m K)"
                            },
                            "insulation_thickness_mm": {
                                "type": "number",
                                "minimum": 0,
                                "description": "(unit: mm)"
                            },
                            "surface_reflectivity": {
                                "type": "boolean"
                            },
                            "pipe_contents": {
                                "enum": [
                                    "water",
                                    "glycol25"
                                ],
                                "description": "Contents of the pipework (water or glycol25)"
                            }
                        }
                    },
                    "description": "List of primary pipework components connected to the storage tank"
                },
                "HeatSource": {
                    "type": "object",
                    "unevaluatedProperties": true,
                    "additionalProperties": {
                        "$ref": "#/$defs/HeatSource"
                    },
                    "description": "Dictionary of heating systems connected to the storage tank"
                }
            },
            "if": {
                "properties": {
                    "HeatSource": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "object",
                            "properties": {
                                "type": {
                                    "const": "HeatPump_HWOnly"
                                }
                            }
                        }
                    }
                }
            },
            "then": {
                "required": [
                    "heat_exchanger_surface_area"
                ],
                "properties": {
                    "heat_exchanger_surface_area": {
                        "type": "number",
                        "exclusiveMinimum": 0,
                        "description": "Surface area of the heat exchanger within the storage tank (unit: m\u00b2)"
                    }
                }
            }
        },
        "WindowShading": {
            "type": "array",
            "items": {
                "type": "object",
                "unevaluatedProperties": false,
                "required": [
                    "type",
                    "distance"
                ],
                "properties": {
                    "type": {
                        "enum": [
                            "obstacle",
                            "overhang",
                            "sidefinleft",
                            "sidefinright",
                            "reveal"
                        ]
                    },
                    "distance": {
                        "type": "number",
                        "minimum": 0,
                        "description": "(unit: m)"
                    }
                },
                "if": {
                    "properties": {
                        "type": {
                            "const": "obstacle"
                        }
                    }
                },
                "then": {
                    "required": [
                        "height",
                        "transparency"
                    ],
                    "properties": {
                        "height": {
                            "type": "number",
                            "exclusiveMinimum": 0,
                            "description": "(unit: m)"
                        },
                        "transparency": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1
                        }
                    }
                },
                "else": {
                    "required": [
                        "depth"
                    ],
                    "properties": {
                        "depth": {
                            "type": "number",
                            "exclusiveMinimum": 0,
                            "description": "(unit: m)"
                        }
                    }
                }
            }
        },
        "HeatSource": {
            "type": "object",
            "required": [
                "type",
                "heater_position"
            ],
            "properties": {
                "type": {
                    "enum": [
                        "ImmersionHeater",
                        "SolarThermalSystem",
                        "HeatSourceWet",
                        "HeatPump_HWOnly"
                    ]
                },
                "heater_position": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1,
                    "description": "Vertical position of the heater within the tank, as a fraction of the tank height (0 = bottom, 1 = top). Dimensionless."
                },
                "thermostat_position": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1,
                    "description": "Vertical position of the thermostat within the tank, as a fraction of the tank height (0 = bottom, 1 = top). Dimensionless. Required for StorageTank but not for SmartHotWaterTank."
                }
            },
            "allOf": [
                {
                    "if": {
                        "properties": {
                            "type": {
                                "const": "HeatPump_HWOnly"
                            }
                        }
                    },
                    "then": {
                        "oneOf": [
                            {
                                "required": [
                                    "product_reference"
                                ],
                                "properties": {
                                    "product_reference": {
                                        "description": "A unique reference to a product held within the HEM database (PCDB)",
                                        "title": "Reference to the product in the HEM database",
                                        "type": "string"
                                    }
                                }
                            },
                            {
                                "required": [
                                    "EnergySupply",
                                    "power_max",
                                    "tank_volume_declared",
                                    "daily_losses_declared",
                                    "in_use_factor_mismatch",
                                    "test_data"
                                ],
                                "properties": {
                                    "EnergySupply": {
                                        "type": "string",
                                        "description": "References a key (e.g., 'mains elec', 'mains gas') in $.EnergySupply"
                                    },
                                    "power_max": {
                                        "type": "number",
                                        "exclusiveMinimum": 0,
                                        "description": "(unit: kW)"
                                    },
                                    "tank_volume_declared": {
                                        "type": "number",
                                        "exclusiveMinimum": 0,
                                        "description": "Tank volume stored in the database (unit: litres)"
                                    },
                                    "heat_exchanger_surface_area_declared": {
                                        "type": "number",
                                        "exclusiveMinimum": 0,
                                        "description": "Surface area of heat exchanger stored in the database (unit: m2)"
                                    },
                                    "daily_losses_declared": {
                                        "type": "number",
                                        "exclusiveMinimum": 0,
                                        "description": "Standing heat loss (unit: kWh/day)"
                                    },
                                    "in_use_factor_mismatch": {
                                        "type": "number",
                                        "exclusiveMinimum": 0,
                                        "description": "In use factor to be applied to heat pump efficiency"
                                    },
                                    "test_data": {
                                        "type": "object",
                                        "unevaluatedProperties": false,
                                        "patternProperties": {
                                            "M|L": {
                                                "type": "object",
                                                "unevaluatedProperties": false,
                                                "required": [
                                                    "cop_dhw",
                                                    "hw_tapping_prof_daily_total",
                                                    "energy_input_measured",
                                                    "power_standby",
                                                    "hw_vessel_loss_daily"
                                                ],
                                                "properties": {
                                                    "cop_dhw": {
                                                        "type": "number",
                                                        "exclusiveMinimum": 0,
                                                        "description": "CoP measured during EN 16147 test"
                                                    },
                                                    "hw_tapping_prof_daily_total": {
                                                        "type": "number",
                                                        "exclusiveMinimum": 0,
                                                        "description": "Daily energy requirement for tapping profile used for test (unit: kWh/day)"
                                                    },
                                                    "energy_input_measured": {
                                                        "type": "number",
                                                        "exclusiveMinimum": 0,
                                                        "description": "Electrical input energy measured in EN 16147 test over 24 hrs (unit: kWh)"
                                                    },
                                                    "power_standby": {
                                                        "type": "number",
                                                        "exclusiveMinimum": 0,
                                                        "description": "Standby power measured in EN 16147 test (unit: kW)"
                                                    },
                                                    "hw_vessel_loss_daily": {
                                                        "type": "number",
                                                        "exclusiveMinimum": 0,
                                                        "description": "Daily hot water vessel heat loss for a 45 K temperature difference between vessel and surroundings, tested in accordance with BS 1566 or EN 12897 or any equivalent standard. Vessel must be same as that used during EN 16147 test (unit: kWh/day)"
                                                    }
                                                }
                                            }
                                        },
                                        "description": "Dictionary with keys denoting tapping profile letter (M or L)"
                                    }
                                }
                            }
                        ]
                    }
                },
                {
                    "if": {
                        "properties": {
                            "type": {
                                "const": "HeatSourceWet"
                            }
                        }
                    },
                    "then": {
                        "required": [
                            "name"
                        ],
                        "properties": {
                            "name": {
                                "type": "string"
                            },
                            "temp_flow_limit_upper": {
                                "type": "number",
                                "exclusiveMinimum": 0,
                                "description": "Upper operating limit for flow temperature (unit: \u00b0C). Optional."
                            }
                        }
                    }
                },
                {
                    "if": {
                        "properties": {
                            "type": {
                                "const": "ImmersionHeater"
                            }
                        }
                    },
                    "then": {
                        "required": [
                            "power",
                            "EnergySupply"
                        ],
                        "properties": {
                            "power": {
                                "type": "number",
                                "minimum": 1,
                                "maximum": 10,
                                "description": "(unit: kW)"
                            },
                            "EnergySupply": {
                                "type": "string",
                                "description": "References a key (e.g., 'mains elec', 'mains gas') in $.EnergySupply"
                            }
                        }
                    }
                },
                {
                    "if": {
                        "properties": {
                            "type": {
                                "const": "SolarThermalSystem"
                            }
                        }
                    },
                    "then": {
                        "required": [
                            "sol_loc",
                            "area_module",
                            "modules",
                            "peak_collector_efficiency",
                            "incidence_angle_modifier",
                            "first_order_hlc",
                            "second_order_hlc",
                            "collector_mass_flow_rate",
                            "power_pump",
                            "power_pump_control",
                            "EnergySupply",
                            "tilt",
                            "orientation360",
                            "solar_loop_piping_hlc"
                        ],
                        "properties": {
                            "sol_loc": {
                                "enum": [
                                    "OUT",
                                    "NHS",
                                    "HS"
                                ],
                                "description": "Location of the main part of the collector loop piping"
                            },
                            "area_module": {
                                "type": "number",
                                "exclusiveMinimum": 0,
                                "description": "Collector module reference area (unit: m2)"
                            },
                            "modules": {
                                "type": "integer",
                                "minimum": 1,
                                "description": "Number of collector modules installed"
                            },
                            "peak_collector_efficiency": {
                                "type": "number",
                                "minimum": 0.1,
                                "maximum": 1
                            },
                            "incidence_angle_modifier": {
                                "type": "number",
                                "exclusiveMinimum": 0,
                                "maximum": 1,
                                "description": "Hemispherical incidence angle modifier"
                            },
                            "first_order_hlc": {
                                "type": "number",
                                "exclusiveMinimum": 0,
                                "maximum": 100,
                                "description": "First order heat loss coefficient"
                            },
                            "second_order_hlc": {
                                "type": "number",
                                "minimum": 0,
                                "maximum": 10,
                                "description": "Second order heat loss coefficient"
                            },
                            "collector_mass_flow_rate": {
                                "type": "number",
                                "exclusiveMinimum": 0,
                                "description": "Mass flow rate solar loop (unit: kg/s)"
                            },
                            "power_pump": {
                                "type": "number",
                                "minimum": 0,
                                "maximum": 2
                            },
                            "power_pump_control": {
                                "type": "number",
                                "minimum": 0,
                                "description": "Power of collector pump (unit: kW)"
                            },
                            "EnergySupply": {
                                "type": "string",
                                "description": "References a key (e.g., 'mains elec', 'mains gas') in $.EnergySupply"
                            },
                            "tilt": {
                                "type": "number",
                                "minimum": 0,
                                "maximum": 90,
                                "description": "Tilt angle (inclination) of the solar thermal panel from horizontal, measured upwards facing, 0 to 90, in degrees. 0=horizontal surface, 90=vertical surface. Needed to calculate solar irradiation at the panel surface."
                            },
                            "orientation360": {
                                "type": "number",
                                "minimum": 0,
                                "maximum": 360,
                                "description": "The orientation angle of the inclined surface, expressed as the geographical azimuth angle of the horizontal projection of the inclined surface normal, 0 to 360 (unit: \u02da)"
                            },
                            "solar_loop_piping_hlc": {
                                "type": "number",
                                "exclusiveMinimum": 0,
                                "description": "Heat loss coefficient of the collector loop piping (unit: W/K)"
                            }
                        }
                    }
                }
            ]
        },
        "PrimaryPipework": {
            "type": "object",
            "unevaluatedProperties": false,
            "required": [
                "location",
                "internal_diameter_mm",
                "external_diameter_mm",
                "length",
                "insulation_thermal_conductivity",
                "insulation_thickness_mm",
                "surface_reflectivity",
                "pipe_contents"
            ],
            "properties": {
                "location": {
                    "enum": [
                        "internal",
                        "external"
                    ],
                    "description": "Location of the pipework (internal or external)"
                },
                "internal_diameter_mm": {
                    "type": "number",
                    "minimum": 5,
                    "maximum": 50,
                    "description": "(unit: mm)"
                },
                "external_diameter_mm": {
                    "type": "number",
                    "minimum": 5,
                    "maximum": 50,
                    "description": "(unit: mm)"
                },
                "length": {
                    "type": "number",
                    "minimum": 0.05,
                    "description": "(unit: m)"
                },
                "insulation_thermal_conductivity": {
                    "type": "number",
                    "exclusiveMinimum": 0,
                    "description": "Thermal conductivity of the insulation (unit: W / m K)"
                },
                "insulation_thickness_mm": {
                    "type": "number",
                    "minimum": 0,
                    "description": "(unit: mm)"
                },
                "surface_reflectivity": {
                    "type": "boolean"
                },
                "pipe_contents": {
                    "enum": [
                        "water",
                        "glycol25"
                    ],
                    "description": "Contents of the pipework (water or glycol25)"
                }
            }
        }
    }
}