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",
"EnergySupply",
"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": [
{
"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": {
"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"
}
},
"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",
"design_flow_temp"
],
"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)"
},
"design_flow_temp": {
"type": "number",
"description": "The flow temperature expected to be set - typically either 55°C or 70°C"
}
}
},
{
"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"
],
"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."
}
}
},
{
"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",
"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"
}
},
"required": [
"product_reference",
"EnergySupply_pump",
"HeatSource"
]
},
{
"$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": [
"EnergySupply",
"product_reference"
],
"properties": {
"EnergySupply": {
"type": "string",
"description": "References a key (e.g., 'mains elec', 'mains gas') in $.EnergySupply"
},
"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)"
}
}
}
}
}