{
  "version": "1.0",
  "calculator": {
    "id": "room-heat-loss",
    "title": "Room heat loss",
    "summary": "Works out one room's design heat loss, the figure a heat pump and its radiators are sized from.",
    "tier": "advanced",
    "description": "Calculate the design heat loss of a single room in watts, following BS EN 12831 as\nMIS 3005-D applies it. This is the figure a heat pump is sized from and the figure the radiator in\nthat room must be able to deliver.\n\nBS EN 12831 is a room-by-room method. Run this once for each heated room and add the results; sizing\na heat pump from floor area alone is what produces the oversized installations that cycle all winter.\n\nInternal design temperatures come from Table 1 of MIS 3005-D and follow from the room type: 22 for a\nbathroom, 21 for living and dining rooms, 18 for bedrooms, halls, kitchens and toilets. These are\nminimums, so a higher figure is accepted and a lower one is refused.\n\nExternal design temperatures come from Table 2, for eight locations, in two columns: 'a' is the 99%\nfigure and 'b' the colder 99.6% one, which needs no uplift for intermittent heating.\n\nEach element needs an area, a U-value, and a kind. The kind matters because it fixes which temperature\ndifference applies. Walls, windows, doors, roofs and suspended floors lose heat to the outside design\ntemperature. A SOLID FLOOR ON THE GROUND loses heat to the local annual average air temperature\ninstead, which is far warmer, and getting this wrong is the commonest error in a heat loss calculation.\nWindow and door areas belong to the window and the door, not to the wall behind them.",
    "standard": "MIS 3005-D",
    "category": "heat-pumps",
    "webPath": "/calculators/room-heat-loss",
    "example": {
      "roomName": "Living room",
      "roomType": "living_room",
      "location": "birmingham",
      "floorAreaM2": 20,
      "ceilingHeightM": 2.4,
      "airChangesPerHour": 1,
      "elements": [
        {
          "kind": "external_wall",
          "areaM2": 15,
          "uValue": 1.5,
          "label": "Front and side walls"
        },
        {
          "kind": "window",
          "areaM2": 3,
          "uValue": 2.8,
          "label": "Bay window"
        },
        {
          "kind": "ground_floor",
          "areaM2": 20,
          "uValue": 0.7
        }
      ]
    },
    "reference": {
      "elementKinds": [
        {
          "key": "external_wall",
          "name": "External wall",
          "description": "Loses heat to the outside air at the design temperature."
        },
        {
          "key": "window",
          "name": "Window or rooflight",
          "description": "Loses heat to the outside air at the design temperature."
        },
        {
          "key": "door",
          "name": "External door",
          "description": "Loses heat to the outside air at the design temperature."
        },
        {
          "key": "roof",
          "name": "Roof or ceiling below a cold loft",
          "description": "Loses heat to the outside air at the design temperature."
        },
        {
          "key": "suspended_floor",
          "name": "Suspended floor",
          "description": "A ventilated void under the floor is close to outside air, so it uses the design temperature."
        },
        {
          "key": "ground_floor",
          "name": "Solid floor on the ground",
          "description": "Uses the local annual average air temperature, not the design temperature. The ground is slow to cool and never reaches the coldest air temperature."
        },
        {
          "key": "unheated_space",
          "name": "Wall or floor next to an unheated space",
          "description": "Uses the temperature of that space: a garage, an unheated porch, an adjoining empty property."
        }
      ],
      "locations": [
        {
          "name": "Belfast",
          "altitudeM": 68,
          "designTempA": -1.5,
          "designTempB": -3.2,
          "annualMeanTemp": 9.4,
          "metOfficeStation": "N Ireland (Aldergrove)",
          "heatingDegreeDays": 2228
        },
        {
          "name": "Birmingham",
          "altitudeM": 96,
          "designTempA": -3.2,
          "designTempB": -5.1,
          "annualMeanTemp": 9.8,
          "metOfficeStation": "Midlands (Elmdon)",
          "heatingDegreeDays": 2145
        },
        {
          "name": "Cardiff",
          "altitudeM": 67,
          "designTempA": -1.5,
          "designTempB": -3.1,
          "annualMeanTemp": 10.6,
          "metOfficeStation": "Severn Valley (Filton)",
          "heatingDegreeDays": 1869
        },
        {
          "name": "Edinburgh",
          "altitudeM": 35,
          "designTempA": -3.2,
          "designTempB": -5.4,
          "annualMeanTemp": 8.8,
          "metOfficeStation": "E Scotland (Leuchars)",
          "heatingDegreeDays": 2441
        },
        {
          "name": "Glasgow",
          "altitudeM": 5,
          "designTempA": -3.5,
          "designTempB": -5.9,
          "annualMeanTemp": 9.1,
          "metOfficeStation": "W Scotland (Abbotsinch)",
          "heatingDegreeDays": 2334
        },
        {
          "name": "London",
          "altitudeM": 25,
          "designTempA": -1.7,
          "designTempB": -3,
          "annualMeanTemp": 11.3,
          "metOfficeStation": "Thames Valley (Heathrow)",
          "heatingDegreeDays": 1732
        },
        {
          "name": "Manchester",
          "altitudeM": 75,
          "designTempA": -2.7,
          "designTempB": -4.5,
          "annualMeanTemp": 10,
          "metOfficeStation": "W Pennines (Ringway)",
          "heatingDegreeDays": 2055
        },
        {
          "name": "Plymouth",
          "altitudeM": 27,
          "designTempA": -0.2,
          "designTempB": -1.5,
          "annualMeanTemp": 11,
          "metOfficeStation": "South-western (Plymouth)",
          "heatingDegreeDays": 1685
        }
      ],
      "roomTypes": [
        {
          "key": "living_room",
          "name": "Living room",
          "internalTemp": 21
        },
        {
          "key": "dining_room",
          "name": "Dining room",
          "internalTemp": 21
        },
        {
          "key": "bedsitting_room",
          "name": "Bedsitting room",
          "internalTemp": 21
        },
        {
          "key": "bathroom",
          "name": "Bathroom",
          "internalTemp": 22
        },
        {
          "key": "bedroom",
          "name": "Bedroom",
          "internalTemp": 18
        },
        {
          "key": "kitchen",
          "name": "Kitchen",
          "internalTemp": 18
        },
        {
          "key": "hall",
          "name": "Hall or landing",
          "internalTemp": 18
        },
        {
          "key": "toilet",
          "name": "Toilet",
          "internalTemp": 18
        }
      ]
    },
    "inputSchema": {
      "type": "object",
      "properties": {
        "roomName": {
          "type": "string",
          "description": "A name for the room."
        },
        "roomType": {
          "type": "string",
          "description": "Which of the tabulated room types this is: 'living_room', 'dining_room', 'bedsitting_room', 'bathroom', 'bedroom', 'kitchen', 'hall' or 'toilet'. Sets the internal design temperature. Defaults to 'living_room'."
        },
        "internalTemp": {
          "type": "number",
          "description": "Internal design temperature in Celsius, if it should differ from the tabulated value for the room type. MIS 3005-D sets the tabulated values as a floor, not a target, so a higher figure is allowed and a lower one is not."
        },
        "location": {
          "type": "string",
          "description": "Which of the eight tabulated locations the property is nearest: 'belfast', 'birmingham', 'cardiff', 'edinburgh', 'glasgow', 'london', 'manchester' or 'plymouth'. Required."
        },
        "designBasis": {
          "type": "string",
          "description": "'a' for the 99% outside design temperature or 'b' for the colder 99.6% figure. Column B needs no uplift for intermittent heating. Defaults to 'a'."
        },
        "floorAreaM2": {
          "type": "number",
          "description": "Floor area of the room in square metres. Required, and used with the ceiling height to work out the ventilation loss."
        },
        "ceilingHeightM": {
          "type": "number",
          "description": "Floor to ceiling height in metres. Defaults to 2.4."
        },
        "airChangesPerHour": {
          "type": "number",
          "description": "How many times an hour the air in the room is replaced. A draughty old room may be 1.5 or more; a well sealed new one 0.5. Defaults to 1."
        },
        "elements": {
          "type": [
            "null",
            "array"
          ],
          "items": {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "description": "One of 'external_wall', 'window', 'door', 'roof', 'suspended_floor', 'ground_floor' or 'unheated_space'. Required."
              },
              "areaM2": {
                "type": "number",
                "description": "Area of the element in square metres. Window and door areas are taken out of the wall area, not counted twice. Required."
              },
              "uValue": {
                "type": "number",
                "description": "U-value in W/m2K: the watts lost through each square metre for every degree of temperature difference. Required."
              },
              "unheatedTemp": {
                "type": "number",
                "description": "Temperature of the unheated space on the other side, in Celsius. Only used for the 'unheated_space' kind. Defaults to halfway between inside and outside."
              },
              "label": {
                "type": "string",
                "description": "A name for this element, so the result can be read back against the survey."
              }
            },
            "required": [
              "kind",
              "areaM2",
              "uValue"
            ],
            "additionalProperties": false
          },
          "description": "Every surface through which the room loses heat. At least one is required."
        }
      },
      "required": [
        "location",
        "floorAreaM2",
        "elements"
      ],
      "additionalProperties": false
    },
    "outputSchema": {
      "type": "object",
      "properties": {
        "roomName": {
          "type": "string"
        },
        "roomType": {
          "type": "string"
        },
        "internalTemp": {
          "type": "number"
        },
        "location": {
          "type": "object",
          "properties": {
            "name": {
              "type": "string"
            },
            "altitudeM": {
              "type": "integer"
            },
            "designTempA": {
              "type": "number",
              "description": "Hourly dry-bulb temperature exceeded for 99% of the hours in a year."
            },
            "designTempB": {
              "type": "number",
              "description": "The colder 99.6% figure. Using it removes the need for any uplift for intermittent heating."
            },
            "annualMeanTemp": {
              "type": "number"
            },
            "metOfficeStation": {
              "type": "string"
            },
            "heatingDegreeDays": {
              "type": "number"
            }
          },
          "required": [
            "name",
            "altitudeM",
            "designTempA",
            "designTempB",
            "annualMeanTemp",
            "metOfficeStation",
            "heatingDegreeDays"
          ],
          "additionalProperties": false
        },
        "designBasis": {
          "type": "string"
        },
        "externalDesignTemp": {
          "type": "number"
        },
        "temperatureDifference": {
          "type": "number",
          "description": "Internal minus external design temperature, in kelvin. The figure most of the fabric loss is worked out against."
        },
        "elements": {
          "type": [
            "null",
            "array"
          ],
          "items": {
            "type": "object",
            "properties": {
              "label": {
                "type": "string"
              },
              "kind": {
                "type": "string"
              },
              "kindName": {
                "type": "string"
              },
              "areaM2": {
                "type": "number"
              },
              "uValue": {
                "type": "number"
              },
              "otherSideTemp": {
                "type": "number"
              },
              "temperatureDifference": {
                "type": "number"
              },
              "lossW": {
                "type": "number"
              },
              "sharePercent": {
                "type": "number"
              }
            },
            "required": [
              "kind",
              "kindName",
              "areaM2",
              "uValue",
              "otherSideTemp",
              "temperatureDifference",
              "lossW",
              "sharePercent"
            ],
            "additionalProperties": false
          }
        },
        "fabricLossW": {
          "type": "number"
        },
        "ventilationLossW": {
          "type": "number"
        },
        "totalHeatLossW": {
          "type": "number",
          "description": "The room's design heat loss in watts. This is what the emitter in the room has to deliver on the coldest day."
        },
        "roomVolumeM3": {
          "type": "number"
        },
        "wattsPerSquareMetre": {
          "type": "number",
          "description": "Heat loss divided by floor area. A useful sanity check: a well insulated room lands near 40, a poor one well over 100."
        },
        "fabricSharePercent": {
          "type": "number"
        },
        "ventilationSharePercent": {
          "type": "number"
        },
        "largestLoss": {
          "type": "string",
          "description": "Which single element loses most, which is where insulating first pays best."
        },
        "method": {
          "type": "string"
        },
        "references": {
          "type": [
            "null",
            "array"
          ],
          "items": {
            "type": "object",
            "properties": {
              "document": {
                "type": "string"
              },
              "title": {
                "type": "string"
              },
              "url": {
                "type": "string"
              },
              "clause": {
                "type": "string"
              }
            },
            "required": [
              "document",
              "title",
              "url"
            ],
            "additionalProperties": false
          }
        },
        "notes": {
          "type": [
            "null",
            "array"
          ],
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "roomType",
        "internalTemp",
        "location",
        "designBasis",
        "externalDesignTemp",
        "temperatureDifference",
        "elements",
        "fabricLossW",
        "ventilationLossW",
        "totalHeatLossW",
        "roomVolumeM3",
        "wattsPerSquareMetre",
        "fabricSharePercent",
        "ventilationSharePercent",
        "method",
        "references",
        "notes"
      ],
      "additionalProperties": false
    }
  },
  "url": "https://ampworth.com/api/v1/calculators/room-heat-loss",
  "webUrl": "https://ampworth.com/calculators/room-heat-loss",
  "exampleUrl": "https://ampworth.com/api/v1/calculators/room-heat-loss?roomName=Living+room\u0026roomType=living_room\u0026location=birmingham\u0026floorAreaM2=20\u0026ceilingHeightM=2.4\u0026airChangesPerHour=1\u0026elements=%5B%7B%22kind%22%3A%22external_wall%22%2C%22areaM2%22%3A15%2C%22uValue%22%3A1.5%2C%22label%22%3A%22Front+and+side+walls%22%7D%2C%7B%22kind%22%3A%22window%22%2C%22areaM2%22%3A3%2C%22uValue%22%3A2.8%2C%22label%22%3A%22Bay+window%22%7D%2C%7B%22kind%22%3A%22ground_floor%22%2C%22areaM2%22%3A20%2C%22uValue%22%3A0.7%7D%5D",
  "method": "POST",
  "contentType": "application/json",
  "notice": "These calculators follow the published MCS methods, for understanding a system and checking a quotation. Anything that gets installed still needs a design and a site survey from a certified installer."
}
