MiravoMiravo

District Heating

Run a city heat network with gas boilers, a thermal accumulator, trunk pumps and four customer substations, each with seasonal demand and its own pipe delay.

District Heating template illustration

A city district heating network. The heat plant has three gas boilers, two primary pumps and a thermal accumulator. Two trunk pumps feed four customer substations: a hospital, a university, a residential block and an office park.

Each substation has its own design load and pipe delay. A change in plant supply reaches the hospital after 4 minutes and the office park after 28. Outdoor temperature follows a daily and a seasonal cycle starting on 1 January, so heat demand follows the weather. Run it at --speed 60 or higher to see the day move.

The boilers regulate supply to a 90 °C setpoint and keep a 40 % base-load firing floor (min_firing_pct). The network holds its supply temperature overnight, and the substations keep their delta-T around the clock.

Boiler hours span the lifecycle: boiler-001 at 6,500, boiler-002 at 3,000 and boiler-003 at 200. Substation hours run from 500 (office) to 8,500 (residential).

What's running

AreaAssets
Heat plant3 hot-water boilers, 2 primary pumps, accumulator tank
Network2 trunk network pumps
Customers4 heat substations: hospital, university, residential, office park
ModelCountAssets
hot-water-boiler3boiler-001 to boiler-003 (2,500 kW, 90 °C supply, 6 bar)
centrifugal-pump4primary-pump-001, primary-pump-002, network-pump-001, network-pump-002
storage-tank1accumulator-001 (100 m³)
heat-substation4see below
SubstationDesign loadPipe delay
sub-hospital-0011,800 kW4 min
sub-university-0012,500 kW10 min
sub-residential-0011,200 kW18 min
sub-office-001600 kW28 min

Hierarchy

city-energy / north-network
├── heat-plant
│   ├── boilers: boiler-001, boiler-002, boiler-003
│   └── primary-loop: primary-pump-001, primary-pump-002, accumulator-001
├── network
│   └── trunk-main: network-pump-001, network-pump-002
└── customers
    ├── hospital: sub-hospital-001
    ├── university: sub-university-001
    ├── residential: sub-residential-001
    └── office-park: sub-office-001

Boilers feed the substations

Every substation's network_supply_temp input is bound to boiler-001 supply_temperature. A boiler fault or trip reaches each substation's primary_supply_temp after its own pipe delay, and delta_t uses that temperature. The substation reads the boiler's value from the previous simulation step. Stop boiler-001 and the substations' heat_delivered_kw falls to zero and secondary_supply_temp sags once the cold water arrives.

What to watch

  • outdoor_temperature and heat_demand_kw on every substation. Demand follows degree-days plus a daily occupancy profile.
  • primary_supply_temp against boiler-001 supply_temperature. The first lags the second by pipe_delay_min, so the office park reacts about 24 minutes after the hospital.
  • delta_t (primary supply minus return), the network operator's efficiency metric.
  • control_valve_position, primary_flow and secondary_supply_temp against secondary_supply_setpoint.
  • Boiler supply_temperature and firing_rate, and accumulator level.

Faults to try

Commands assume miravo start -t district-heating.

miravo inject sub-hospital-001 hx_fouling

Heat exchanger fouling. hx_approach_temp rises by about 9 K over 30 simulated minutes, delta_t falls, and the valve opens to push more flow.

miravo inject sub-residential-001 low_delta_t

Bypass or short-circuit. Primary return rises 15 K, delta_t falls from about 50 K to about 35 K, and primary_flow rises about 40 % because the same heat needs more flow at a lower delta-T.

miravo inject sub-university-001 valve_stuck

Control valve pinned at 40 %. secondary_supply_temp drifts below secondary_supply_setpoint as demand moves.

miravo inject boiler-001 scale_buildup

Boiler scale build-up. supply_temperature drops about 7 % for 15 minutes. The hospital's primary_supply_temp follows after about 4 minutes and the office park's after about 28.

Clear any of them with --clear, for example miravo inject sub-hospital-001 hx_fouling --clear.

Launch

Console ⭢ Catalog ⭢ District Heating ⭢ Launch. No restart required.

Verified

In Catalog, District Heating shows 12 assets and 4 models. The Assets page keeps updating after launch.

Next

Was this page useful?

Last updated on