Help: Using the heat network editor


The heat network editor is the part of THERMOS which lets you design and optimise heat networks. To get into the heat network editor, you need to have created an account, a project, and a map - if these are new ideas to you, have a look at the quick start guide first.

This document walks through the different bits of the interface, and then describes how to do some common tasks.

1 Parts of the interface

The editor is divided into several pages which are accessed through the THERMOS logo logo.png in the top right hand corner.

Clicking on the logo makes a panel appear which offers links to switch between the different pages, like this:


From this sidebar you can also return to the project page and search the help.

1.1 Map page

The map page shows the candidates (bits of roads and buildings) which are available to put into a network. It looks like this - you can point at some of the main things in the picture to show quick descriptions.

Sorry, your browser does not support SVG.

1.1.1 Candidates layer

The candidates layer of the map shows all of the buildings and roads that are available to put into a heat network.

Several different drawing styles are used to show different kinds of information visually on the candidates layer.


the colour of each candidate is used to show information about whether the candidate will be used in a network. These colours are also used in the selection info pane in the same way.


  • Grey candidates are forbidden, which means they can't be included in a network
  • Blue candidates are optional, which means they can be included in a network, but the optimiser can leave them out if they make things worse.

    If the optimiser has been run and there is a solution then blue candidates are those which were included in the network.

  • Yellow candidates are optional candidates which were not included in the network, if there is a solution
  • Green candidates are buildings which got an individual heating system.
  • Red candidates are required, which means that the optimiser has to put them in the network.
  • Magenta candidates are infeasible, which means that they cannot be used in a solution, for example because
    • They are buildings or roads that cannot be reached from any supply point
    • They are roads that do not join any pairs of buildings so would not be worth using
buildings which are supply locations are filled in with a striped pattern. If the optimiser has been run, and the supply is used, the stripes will be coloured in blue.
Line thickness

The line thickness is used to show whether a candidate is selected. Selected candidates are drawn with a thicker line. They are also shown with a tick mark in the candidate list, and summarised in the selection info box.


Figure 4: A required and forbidden building and some forbidden roads are all selected

If the candidate list at the bottom has been filtered, the candidates which do not pass the filter will be made mostly transparent, to emphasise the things shown in the candidate list.

1.1.2 Density layer

The heat density layer shows a smoothed version of where there is heat demand in a map. It may be a useful way to get an overview of the distribution of demand when you are zoomed out too far to see the individual buildings and roads

1.1.3 Candidates list

The candidates list is at the bottom of the window.

Each candidate building or road that is not forbidden (so is coloured in) is shown as a row in the candidates list.

You can sort the candidates list by any of the columns by clicking on the column header. Each column header also has a filter button - this is the grey icon on the right which looks a bit like a funnel

In the leftmost column there is a checkbox for each row, and a checkbox in the column header. These checkboxes control whether candidates are selected.

If you tick the checkbox in the header, all the candidates in the table will be selected.

Together with the filtering controls you can use this to focus on particular candidates

Figure 5: Filtering and selecting from the candidates list. When a column has been filtered, its filter button turns blue. Filtered candidates become transparent on the map. Checking the selection box selects the filtered candidates only.

1.1.4 Selection panel

On the right hand side of the map page is the selection info panel. This shows summary information about whatever candidates are selected on the map.

Here is a picture illustrating most of what you might see in the selection info panel:


From the top:

  • The white area at the top says how many candidates are selected in total, in this case 5.
  • The Type row shows the breakdown of the selected candidates by their type. In this case, there are 4 selected buildings and 1 selected path (giving the total of 5).

    Each of the grey boxes (chips) will let you modify the selection. If you click on the word in the chip (e.g. On building or path), anything which is not of that type will be deselected.

    If you click on the the cross at the end of the chip, everything which is of that type will be deselected.

  • The Category row gives a breakdown by the candidates' category. In this example there are four different categories selected: Service, Connector, Residential, and Industrial. Note that this breakdown is not related to the Type breakdown.
  • The Constraint row gives a breakdown by the constraint status (colour) of the candidates. Here all 5 candidates are Optional
  • The Length row gives the total length of all selected paths
  • The Base cost row gives a lower bound on the total cost of including all the selected candidates. For paths, this is the cost of installing a 10mm diameter pipe. For buildings it is the building connection cost.
  • The Demand is the summed demand for all the selected buildings
  • The Peak is the summed peak for all the selected buildings
  • In solution is a breakdown of which candidates the optimiser chose to include in the solution
  • Coincidence is the mean coincidence (aka diversity) factor applied to all the selected paths and supply points. This is probably most useful when selecting a single path or supply.
  • Capacity is the maximum capacity required for all the selected paths and supply points which are in the solution.
  • Diameter is the maximum diameter selected for all the selected paths which are in the solution.
  • Principal is the total capital cost the optimiser has associated with all selected candidates, including the cost of pipes, the capital cost of supply, and the connection cost for buildings.
  • Losses gives the summed heat losses associated with all selected paths that were used in the solution.

1.1.5 Editing buildings

You can change most of the information the model uses about buildings within a network problem.

When you change a building in this way, the change only applies to the network you are designing - changes like this are not applied to the underlying map. If you start a new network in the same map it will not contain the changes.

To edit some buildings (or a single building), first you need to select them. Once you have them selected, you can right click on them on the map and choose Edit buildings or press e on your keyboard.

This will show the editor window:


This window lets you simultaneously edit the properties of all the selected buildings. To make editing a bit easier, the buildings are divided into groups according to the menu at the top. In the picture above, the buildings are grouped according to their Category.

Each different category in the selection is shown as a row underneath, so in the example there are three categories, Unclassified, Residential and Place of worship. The count column shows how many buildings belong to each class.

The rest of the window allows you to change the important parameters for each row. To change peak or average demand, you must tick the checkbox next to it and then type in a number. This value will be applied to every building in that row.

To change the other parameters (tariff, insulation, alternatives, counterfactual), you either change the tick-boxes or select from the drop-down menus.

If we made the following changes in the example and pressed OK, the effect would be:

  • For the 26 Apartments:
    • Set the demand for 26 apartments to 100 MWh/yr
    • Mark them buildings as eligible for 'wall insulation'
    • Set their counterfactual (existing) heating technology to 'gas boiler'
  • For 50 houses
    • Set their peak demand to 50 kW
    • Set their counterfactual system to gas boiler
  • For the 1 train station
    • Change the tariff to expensive heat
    • Add 'Gas boiler' to the list of non-network options that could be allowed


1.1.6 Editing paths

You can edit the cost parameters for paths in a similar way: select some paths, and right click on them or press e to open the editor window:


Changes to these parameters belong to the network problem and do not affect the underlying map, so if you create a new problem in the same map it will not contain changes made in this way.

The meaning of these parameters is described here.

1.1.7 Editing supply parameters

You can convert a building into a supply location, or edit an existing supply location, by right clicking on it and choosing Make supply point or pressing the s key:


These parameters are described here.

1.1.8 Keyboard shortcuts

You can do some common operations with the keyboard using these shortcuts:

Key Effect
c Change the constraint for the selection
s Change the supply parameters for the selection
z Move the map to show the selection or the network
a Select everything in the candidate list
A Invert the selection (so a A clears the selection)
e Edit the parameters for the selection
i Show some debugging information

1.2 Objective page

This page contains settings that apply to the whole network problem; their meanings are described in more detail in the parameters section.

Accounting period
Costs and revenues are combined to give an NPV, which is what the optimiser tries to maximise. Future cost and revenue streams are discounted over the period you specify, at the desired discount rate.
The objective is the optimiser's target - the program will try and find a solution which maximises this value. There are two objectives currently offered
Maximise network NPV

In this setting, the objective is to maximise the net income for the network operator. The objective value is the sum of:

  • Network costs
    • Capital costs for pipework
    • Capital costs for energy supply
    • Capital costs for connecting buildings to the network
    • Operating costs for energy supply (cost of heat and cost of equipment)
  • Network revenues
    • The annual income from each connected building
  • Other system costs (when offer other heating systems is checked)
    • The capital cost of purchasing any new individual systems for other buildings. The running cost of individual systems is excluded from the total.
  • Insulation costs (when offer insulation measures is checked)
    • The capital cost of purchasing insulation
  • Emissions costs for all systems

The value of using these last two options in this setting is dubious, and they may be removed. The optimiser will never select any insulation or alternative systems unless there is a cost or limit for emissions, because this can never improve the network's economics.

Maximise whole-system NPV

In this setting, the objective is effectively to minimise the cost of supplying heat to the buildings being considered. The objective is similar to above except:

  • Network revenues are not included
  • Operating costs for individual systems are included

This represents the goal of selecting a combination of heating and insulation technologies that meets the demand for heat in the problem at a minimum overall cost.

Capital costs

The model breaks capital costs down into the categories shown - these can all be treated differently. The controllable settings are:

If this is set, the cost will be annualized using a constant repayment loan spanning the period at the given interest rate. If the period and rate are equal to the accounting period and discount rate above, the contribution to the NPV will be the same as if you don't annualize the cost.
If this is set, the item is considered to need replacing every period many years. For example, if you give a period of 20 for Other heating and set it to recur, and the accounting period is 40 years, the capital cost of any individual heating system selected will be incurred twice, once in the first year and once in the twentieth
Controls the time over which a loan must be repaid if annualize is ticked, and the re-purchasing frequency if recur is ticked
Controls the interest rate of the loan if annualize is ticked.

The effect of these controls is shown in the last two columns. ¤ 100 shows the total un-discounted cost a capital cost of 100 currency would contribute to the accounts. PV(¤ 100) shows the present value of that cost over the accounting period, using the discount rate at the top of the page. This value is what the optimiser works with.

Emissions costs

Each type of emission can have a unit cost. The total emissions include those from the network's energy center and from any individual systems in buildings not connected to the network.

Network supply emissions factors are set as part of the supply parameters, and individual system factors in the individual systems page. These factors are on an annual basis, and so are multiplied with the cost to produce an annual cost that is then summed and discounted using the accounting period and discount rate parameters.

Emissions limits
You can also set an upper limit for the annual emissions from the whole system (note annual rather than lifetime emissions).
Computing resources

These parameters control how much computing time is used. The optimisation will never be allowed to run for more than the maximum runtime - if this limit is reached, you will be shown the best answer that has been found in the time.

The other parameter, stop if solution is at least this close to the optimum allows the optimiser to stop before the runtime is used up in the event that it finds a solution which it can prove has only a limited margin for improvement

1.3 Tariffs page

The tariffs page lets you create tariffs.

A tariff combines information about network revenues from connecting a building, and the capital costs for installing the connection equipment (reasonably enough you might say that these things do not go together, but in THERMOS at the moment they do).

Once you've defined some tariffs you can control which buildings take which tariffs through the map page, using the steps described in editing buildings.

1.4 Pipe costs page

This page controls the size and hence cost of pipes. The detail of the calculation method is given here, but in summary:

Every pipe has two costs associated with it

  • A mechanical engineering cost, for the pipe itself, which is the same everywhere
  • A civil engineering cost, for making a hole in the ground, which can be different for different places on the map

Both of these costs are a function of the pipe's diameter, which is determined by the power it has to deliver and hence the flow and return temperatures.

At the bottom of the page you can define different civil engineering costs. Once you've defined some costs, you can associate them with different paths through the map page, using the steps described in editing paths.

1.5 Insulation page

Thermos has a very simple insulation model, which is described in more detail here.

To model insulation you have to do three things:

  1. Define a type of insulation on the insulation page, by clicking the add button and filling in the parameters.
  2. Make this insulation available in some locations by editing buildings.
  3. Configure the objective to allow offering insulation, and most likely to do a whole-system optimisation rather than a network NPV optimisation.

1.6 Individual systems page

Every optional building in a problem can get one of these outcomes in the solution:

  1. The building is connected to a heat network
  2. The building has its heat demand met by an existing counterfactual individual heating system
  3. The building has its heat demand met by a new individual heating system
  4. As a special case, if the building has not been given a counterfactual heating system or any potential individual systems, its heat demand will be ignored.

Individual systems have similar parameters to network heat sources. The individual systems page displays a box like this:


for each individual system type that has been defined.

The building editor allows you to say that certain buildings then have a particular type of individual system as their counterfactual, or as options for a replacement system.

The counterfactual is treated slightly differently to a new heating system: it is considered to have no capital costs, as it already exists.

1.7 Solution summary page

If you have run the model successfully, you will be able to see the solution summary page.

1.7.1 Display settings

At the top of the solution summary are some buttons controlling what quantities are displayed in the rest of the page.

  • Capital costs:
    This shows the total capital cost, which includes any loan interest and any replacement costs (see the objective page for more on this).
    This shows just the principal for a single purchase, without replacement or any interest
    Present value
    This shows the discounted sum of capital purchases and any loan repayments. This value is what the optimiser is interested in
  • Other costs: these are things like operational costs, the cost of heat, or the value of monetised emissions.
    This shows the total cost over the accounting period, without discounting
    This shows the yearly cost.
    Present value
    This shows the discounted sum of annual costs over the accounting period. This value is what the optimiser is interested in.

On the rest of the page, when you select different values to display, the units will change to reflect what is being shown. You may see:

This is total cost
This is principal
This is present value
This is annual cost

1.7.2 Cost summary

This box shows the headline information for all the parts of the solution. Note that this box contains things like the whole system NPV, even if you have chosen to optimise for network NPV.

1.7.3 Network

This box breaks down the equipment that went into the network. Pipework is totalled up by civil engineering cost category and required pipe diameter. Demands are totalled up by their category.

1.7.4 Emissions

This box shows the amount and the monetised value of all emissions in the system. The counterfactual row gives the emissions due to the counterfactual heating systems specified before the run, and the net row the difference.

1.7.5 Optimisation

This box shows some information about the optimisation, which deserves a little explanation:

Objective value
This is the value the optimiser sees for this solution, in NPV terms
The amount of time taken to find a solution
This is a technical detail; since some parameters can't be expressed within the optimisation, there is an iterative process of finding a solution and then updating the assumptions used to create that solution.
Iteration range
This is the range of objective values that were observed when trying to find the proper values for diversity parameters
This is a measure of the solution quality; if the value is zero, it means that from the optimiser's point of view the solution could not be improved
These are the upper and lower bounds for the solution before we fixed the parameters. The optimiser knows the value of the best possible solution is within this range.

1.8 Run log page

This page shows some text that the model itself outputs when running - it is mostly useful for diagnostic purposes.

2 How to…

2.1 Select things efficiently

A lot of the work in using the network editor is about selecting the right things so that you can edit them or change their constraint status. There are many ways to select things by putting together the basic tools the program gives you; here are some examples.

Figure 12: Selecting large demands in an area: (1) select everything in the area (2) change the constraint to optional, so they appear in the table (3) filter the table and (4) use the table selection checkbox to select what is in the table.

Figure 13: Selecting all the connectors in an area (paths added by THERMOS to join up buildings): (1) select everything in the area (2) click the path type to select only paths (3) click the Connector category to select only connectors.

Figure 14: Select a whole street: (1) select everything (2) click the path type to narrow down the names list (3) click the street's name to select only paths with that name. Zoom button to zoom in to it.

Figure 15: Select everything which the optimizer chose to use and make it required: (1) select everything in the table (2) click yes for in solution (3) change constraint status for these items

2.2 Export a network as a GIS file

You can save a network as a GIS file - this feature is currently only visible from the project page for the project containing the network. Each network will have a little downward-pointing arrow next to its name - click this to download the network as a geojson file.

Figure 16: Saving a network as a GIS file and opening it in qgis.