diff --git a/examples/script_design_capacity.py b/examples/script_design_capacity.py
index d17120e454f2871001ee11c735859c6e05b4c8f8..f9f030c2be59f5d78a3c8e9a9499fe1a4f98e6ad 100644
--- a/examples/script_design_capacity.py
+++ b/examples/script_design_capacity.py
@@ -35,6 +35,8 @@ from topupheat.pipes.twin import StandardisedTwinPipe
 from topupheat.pipes.trenches import TwinPipeTrench
 import topupheat.pipes.utils as utils
 from topupheat.common import formulas as core
+from topupheat.pipes.trenches import SupplyReturnPipeTrench #, TwinPipeTrench
+from topupheat.pipes.utils import minimum_assembling_distance_isoplus
 
 #******************************************************************************
 #******************************************************************************
@@ -527,9 +529,8 @@ for i, label in enumerate(published_results_labels_euroheat2021):
 
 #******************************************************************************
 ax.set(xlim=(0, 1000),ylim=(0, 9))
-ax.set(xlabel='Pipe internal diameter [mm]', 
-       ylabel='Fluid speed [m/s]',
-       title='Maximum mean fluid speed for a given specific pressure loss')
+ax.set(xlabel='Internal diameter [mm]', 
+       ylabel='Fluid speed [m/s]')
 
 ax.legend()
 
@@ -565,9 +566,8 @@ for i, max_specific_pressure_loss in enumerate(list_max_specific_pressure_loss):
     #         label='Nussbaumer et al. (2016), '+str(max_specific_pressure_loss)+' Pa/m')
 
     
-ax.set(xlabel='Pipe internal diameter [mm]', 
-       ylabel='Specific pressure loss [Pa/m]',
-       title='...')
+ax.set(xlabel='Internal diameter [mm]', 
+       ylabel='Specific pressure loss [Pa/m]')
 
 ax.legend()
 
@@ -725,6 +725,7 @@ twin_trench2 = TwinPipeTrench(
 
 # pipe capacity vs flow rate
 fig, ax = plt.subplots()
+fig.set_size_inches(12,8)
 
 # datasheet
 level_label_datasheet = ['low speed', 'high speed']
@@ -767,7 +768,7 @@ ax.semilogy([pipe.d_int*1e3 for pipe in twin_trench2.supply_pipe],
         'k-',
         label=str(twin_trench2.max_specific_pressure_loss[0])+' Pa/m (model)')
     
-ax.set(xlabel='Pipe internal diameter [mm]', 
+ax.set(xlabel='Internal diameter [mm]', 
        ylabel='Transmittable Capacity [kW]')
 
 ax.legend()
@@ -776,3 +777,342 @@ ax.grid()
 ax.set(xlim=(10, 220),ylim=(0, 12e3))
 # fig.savefig("test.png")
 plt.show()
+
+# *****************************************************************************
+# ***************************************************************************** 
+
+# TIP: this is where the second part begins
+
+# pipe mass flow in tones per hour
+m_pipes = { # 60-80 Pa
+    21.7: [0.4, 0.5], # 20
+    27.3: [0.8, 1.0],
+    36.0: [1.7, 2.0],
+    41.9: [2.5, 3.0],
+    53.9: [4.7, 5.5],
+    69.7: [9.3, 11.0],
+    82.5: [14.5, 16.5],
+    107.1: [28.5, 33.0],
+    132.5: [50.0, 58.0],
+    160.3: [82.0, 95.0],
+    210.1: [167.0, 193.0],
+    263.0: [300, 348],
+    312.7: [472, 547],
+    344.4: [610, 705],
+    393.8: [862, 1000],
+    444.6: [1180, 1370],
+    495.4: [1570, 1820],
+    595.8: [2520, 2920],
+    695.0: [3770, 4370],
+    795.4: [5390, 6240],
+    894.0: [7400, 9500],
+    #994.0: [9200, None],
+    }
+    
+    
+p_pipes = {
+    (20, 1, 'caldopex', '25-76'): 0,
+    (20, 2, 'caldopex', 'PLUS 25-91'): 0,
+    (25, 1, 'caldopex', '32-76'): 0,
+    (25, 2, 'caldopex', 'PLUS 32-91'): 0,
+    (32, 1, 'caldopex', '40-91'): 0,
+    (32, 2, 'caldopex', 'PLUS 40-111'): 0,
+    (40, 1, 'caldopex', '50-111'): 0, 
+    (40, 2, 'caldopex', 'PLUS 50-126'): 0, 
+    (50, 1, 'caldopex', '63-126'): 0,
+    (50, 2, 'caldopex', 'PLUS 63-142'): 0,
+    (65, 1, 'caldopex', '75-142'): 0,
+    (65, 2, 'caldopex', 'PLUS 75-162'): 0,
+    (80, 1, 'caldopex', '90-162'): 0,
+    (80, 2, 'caldopex', 'PLUS 90-182'): 0,
+    (100, 1, 'caldopex', '110-162'): 0, 
+    (100, 2, 'caldopex', '110-182'): 0,
+    (100, 3, 'caldopex', 'PLUS 110-202'): 0,
+    (125, 1, 'caldopex', '125-182'): 0, 
+    (125, 2, 'caldopex', 'PLUS 125-202'): 0, 
+    (125, 3, 'caldopex', '140-202'): 0,
+    (150, 1, 'caldopex', '160-250'): 0,
+    (20, 1, 'caldopex', '25+25-91'): 0, 
+    (20, 2, 'caldopex', 'PLUS 25+25-111'): 0, 
+    (25, 1, 'caldopex', '32+32-111'): 0,
+    (25, 2, 'caldopex', 'PLUS 32+32-126'): 0,
+    (32, 1, 'caldopex', '40+40-126'): 0, 
+    (32, 2, 'caldopex', 'PLUS 40+40-142'): 0,
+    (40, 1, 'caldopex', '50+50-162'): 0,
+    (40, 2, 'caldopex', 'PLUS 50+50-182'): 0, 
+    (50, 1, 'caldopex', '63+63-182'): 0,
+    (50, 2, 'caldopex', 'PLUS 63+63-202'): 0, 
+    (65, 1, 'caldopex', '75+75-202'): 0,
+    # single pipe, standard insulation
+    (20, 1, 'isoplus', 'DRE-20-STD'): 0.1295, 
+    (25, 1, 'isoplus', 'DRE-25-STD'): 0.1564, 
+    (32, 1, 'isoplus', 'DRE-32-STD'): 0.1589, 
+    (40, 1, 'isoplus', 'DRE-40-STD'): 0.1810, 
+    (50, 1, 'isoplus', 'DRE-50-STD'): 0.2013, 
+    (65, 1, 'isoplus', 'DRE-65-STD'): 0.2325, 
+    (80, 1, 'isoplus', 'DRE-80-STD'): 0.2418, 
+    (100, 1, 'isoplus', 'DRE-100-STD'): 0.2543, 
+    (125, 1, 'isoplus', 'DRE-125-STD'): 0.2880, 
+    (150, 1, 'isoplus', 'DRE-150-STD'): 0.3369, 
+    (200, 1, 'isoplus', 'DRE-200-STD'): 0.3686, 
+    (250, 1, 'isoplus', 'DRE-250-STD'): 0.3637, 
+    (300, 1, 'isoplus', 'DRE-300-STD'): 0.4126, 
+    (350, 1, 'isoplus', 'DRE-350-STD'): 0.4009, 
+    (400, 1, 'isoplus', 'DRE-400-STD'): 0.4222, 
+    (450, 1, 'isoplus', 'DRE-450-STD'): 0.4242,
+    (500, 1, 'isoplus', 'DRE-500-STD'): 0.4149, 
+    (600, 1, 'isoplus', 'DRE-600-STD'): 0.5002, 
+    (700, 1, 'isoplus', 'DRE-700-STD'): 0.5665, 
+    (800, 1, 'isoplus', 'DRE-800-STD'): 0.6372, 
+    (900, 1, 'isoplus', 'DRE-900-STD'): 0.7027, 
+    (1000, 1, 'isoplus', 'DRE-1000-STD'): 0.7742,
+    # single pipe, reinforced    
+    (20, 2, 'isoplus', 'DRE-20-RE'): 0.1114, 
+    (25, 2, 'isoplus', 'DRE-25-RE'): 0.1308, 
+    (32, 2, 'isoplus', 'DRE-32-RE'): 0.1420, 
+    (40, 2, 'isoplus', 'DRE-40-RE'): 0.1593, 
+    (50, 2, 'isoplus', 'DRE-50-RE'): 0.1763, 
+    (65, 2, 'isoplus', 'DRE-65-RE'): 0.1980, 
+    (80, 2, 'isoplus', 'DRE-80-RE'): 0.2076, 
+    (100, 2, 'isoplus', 'DRE-100-RE'): 0.2148,
+    (125, 2, 'isoplus', 'DRE-125-RE'): 0.2459, 
+    (150, 2, 'isoplus', 'DRE-150-RE'): 0.2794, 
+    (200, 2, 'isoplus', 'DRE-200-RE'): 0.2953,
+    (250, 2, 'isoplus', 'DRE-250-RE'): 0.2914, 
+    (300, 2, 'isoplus', 'DRE-300-RE'): 0.3284, 
+    (350, 2, 'isoplus', 'DRE-350-RE'): 0.3169, 
+    (400, 2, 'isoplus', 'DRE-400-RE'): 0.3277,
+    (450, 2, 'isoplus', 'DRE-450-RE'): 0.3299, 
+    (500, 2, 'isoplus', 'DRE-500-RE'): 0.3249,
+    (600, 2, 'isoplus', 'DRE-600-RE'): 0.3748,
+    (700, 2, 'isoplus', 'DRE-700-RE'): 0.4238, 
+    (800, 2, 'isoplus', 'DRE-800-RE'): 0.4732, 
+    (900, 2, 'isoplus', 'DRE-900-RE'): 0.5221,
+    (1000, 2, 'isoplus', 'DRE-1000-RE'): 0.5733,
+    # single pipe, twice reinforced
+    (20, 3, 'isoplus', 'DRE-20-TWIRE'): 0.10280, 
+    (25, 3, 'isoplus', 'DRE-25-TWIRE'): 0.1191,
+    (32, 3, 'isoplus', 'DRE-32-TWIRE'): 0.1290, 
+    (40, 3, 'isoplus', 'DRE-40-TWIRE'): 0.1432, 
+    (50, 3, 'isoplus', 'DRE-50-TWIRE'): 0.1557,
+    (65, 3, 'isoplus', 'DRE-65-TWIRE'): 0.1744, 
+    (80, 3, 'isoplus', 'DRE-80-TWIRE'): 0.1847,
+    (100, 3, 'isoplus', 'DRE-100-TWIRE'): 0.1905, 
+    (125, 3, 'isoplus', 'DRE-125-TWIRE'): 0.2138, 
+    (150, 3, 'isoplus', 'DRE-150-TWIRE'): 0.2343,
+    (200, 3, 'isoplus', 'DRE-200-TWIRE'): 0.2472, 
+    (250, 3, 'isoplus', 'DRE-250-TWIRE'): 0.2468, 
+    (300, 3, 'isoplus', 'DRE-300-TWIRE'): 0.2698, 
+    (350, 3, 'isoplus', 'DRE-350-TWIRE'): 0.2605, 
+    (400, 3, 'isoplus', 'DRE-400-TWIRE'): 0.2684, 
+    (450, 3, 'isoplus', 'DRE-450-TWIRE'): 0.2703, 
+    (500, 3, 'isoplus', 'DRE-500-TWIRE'): 0.2669, 
+    (600, 3, 'isoplus', 'DRE-600-TWIRE'): 0.3065, 
+    # isoplus twin disconti, standard, 30K delta T
+    (20, 1, 'isoplus', 'DRD-20-STD'): (25,54),
+    (25, 1, 'isoplus', 'DRD-25-STD'): (40,88), 
+    (32, 1, 'isoplus', 'DRD-32-STD'): (82,164),
+    (40, 1, 'isoplus', 'DRD-40-STD'): (110,220),
+    (50, 1, 'isoplus', 'DRD-50-STD'): (205,410), 
+    (65, 1, 'isoplus', 'DRD-65-STD'): (341,683), 
+    (80, 1, 'isoplus', 'DRD-80-STD'): (537,1074),
+    (100, 1, 'isoplus', 'DRD-100-STD'): (905,1811),
+    (125, 1, 'isoplus', 'DRD-125-STD'): (1732,3118),
+    (150, 1, 'isoplus', 'DRD-150-STD'): (3042,5324), 
+    (200, 1, 'isoplus', 'DRD-200-STD'): (6097,10451), 
+    # isoplus twin disconti, reinforced, 30K delta T
+    (20, 2, 'isoplus', 'DRD-20-RE'): 0.1608, 
+    (25, 2, 'isoplus', 'DRD-25-RE'): 0.1700,
+    (32, 2, 'isoplus', 'DRD-32-RE'): 0.1856,
+    (40, 2, 'isoplus', 'DRD-40-RE'): 0.2144,
+    (50, 2, 'isoplus', 'DRD-50-RE'): 0.2076,
+    (65, 2, 'isoplus', 'DRD-65-RE'): 0.2430,
+    (80, 2, 'isoplus', 'DRD-80-RE'): 0.2653,
+    (100, 2, 'isoplus', 'DRD-100-RE'): 0.2635,
+    (125, 2, 'isoplus', 'DRD-125-RE'): 0.2488,
+    (150, 2, 'isoplus', 'DRD-150-RE'): 0.2914,
+    (200, 2, 'isoplus', 'DRD-200-RE'): 0.3037, 
+    # isoplus twin disconti, twice reinforced, 30K delta T
+    (20, 3, 'isoplus', 'DRD-20-TWIRE'): 0.1423,
+    (25, 3, 'isoplus', 'DRD-25-TWIRE'): 0.1516, 
+    (32, 3, 'isoplus', 'DRD-32-TWIRE'): 0.1661,
+    (40, 3, 'isoplus', 'DRD-40-TWIRE'): 0.1882, 
+    (50, 3, 'isoplus', 'DRD-50-TWIRE'): 0.1833,
+    (65, 3, 'isoplus', 'DRD-65-TWIRE'): 0.2074,
+    (80, 3, 'isoplus', 'DRD-80-TWIRE'): 0.2199, 
+    (100, 3, 'isoplus', 'DRD-100-TWIRE'): 0.2197, 
+    (125, 3, 'isoplus', 'DRD-125-TWIRE'): 0.2126, 
+    (150, 3, 'isoplus', 'DRD-150-TWIRE'): 0.2379
+    }
+
+# *****************************************************************************
+# *****************************************************************************
+
+# # pipe data
+# pipedb = StandardisedPipeDatabase(source=pipedata_files)
+
+# # fluid data   
+# fluiddata_file = 'fluids/incropera2006_saturated_water.csv'
+# fluiddb = fic.FluidDatabase(fluid='water', phase='l', source=fluiddata_file)
+
+list_max_specific_pressure_loss = [60, 80]
+            
+# *****************************************************************************
+# *****************************************************************************
+
+# pipe tuples
+
+list_single_pipe_tuples = [
+    pipe_tuple
+    for pipe_tuple in list_pipe_tuples
+    if not pipedb.is_twin[pipe_tuple]
+    ]
+
+list_twin_pipe_tuples = [
+    pipe_tuple
+    for pipe_tuple in list_pipe_tuples
+    if pipedb.is_twin[pipe_tuple] 
+    ]
+
+# pipe objects
+
+list_single_pipes = [
+    StandardisedPipe(
+        pipe_tuple=pipe_tuple,
+        e_eff=pipe_e_eff, # override pipe absolute roughness
+        length=pipe_length, # override the pipe length
+        db=pipedb)
+    for pipe_tuple in list_single_pipe_tuples
+    ]
+            
+list_twin_pipes = [
+    StandardisedTwinPipe(
+        pipe_tuple=pipe_tuple,
+        e_eff=pipe_e_eff, # override pipe absolute roughness
+        length=pipe_length, # override the pipe length
+        db=pipedb) 
+    for pipe_tuple in list_twin_pipe_tuples
+    ]
+
+# create a list of pipe objects
+dict_single_trench = {}
+dict_single_capacity = {}
+dict_single_heat_transfer_rate = {}
+dict_twin_trench = {}
+dict_twin_capacity = {}
+dict_twin_heat_transfer_rate = {}
+
+# for each specific pressure loss level
+for max_specific_pressure_loss in list_max_specific_pressure_loss:
+    
+    if len(list_single_pipe_tuples) != 0:
+        # single pipe trench    
+        single_trench = SupplyReturnPipeTrench(
+            pipe_center_depth=[pipe_depth+pipe.d_cas/2 for pipe in list_single_pipes],  
+            # pipe_center_distance=[pipe_distance+pipe.d_cas for pipe in list_single_pipes], # minimum_assembling_distance
+            pipe_center_distance=[minimum_assembling_distance_isoplus(pipe.d_cas)+pipe.d_cas for pipe in list_single_pipes],
+            fluid_db=fluiddb, 
+            phase=fluiddb.fluid_LIQUID, 
+            pressure=[1e5 for i in range(len(list_single_pipes))], 
+            supply_temperature=[dh_flow_temperature for i in range(len(list_single_pipes))], 
+            return_temperature=[dh_return_temperature for i in range(len(list_single_pipes))], 
+            max_specific_pressure_loss=[max_specific_pressure_loss for i in range(len(list_single_pipes))], 
+            supply_pipe=list_single_pipes
+            )
+        assert single_trench.vector_mode
+        
+        # single pipe trench losses
+        qs, qr = single_trench.specific_heat_transfer_surroundings(
+            ground_thermal_conductivity=soil_k,
+            ground_air_heat_transfer_coefficient=ground_air_heat_transfer_coefficient,
+            temperature_surroundings=ground_temperature,
+            method=single_pipe_trench_config[0],
+            model=single_pipe_trench_config[1]
+            )
+        single_trench_htr = [_qs+_qr for _qs, _qr in zip(qs, qr)]
+        
+        # add lists to the dicts
+        dict_single_trench.update(
+            {max_specific_pressure_loss: single_trench}
+            )
+        dict_single_heat_transfer_rate.update(
+            {max_specific_pressure_loss: single_trench_htr}
+            )
+        dict_single_capacity.update(
+            {max_specific_pressure_loss: single_trench.rated_heat_capacity()}
+            )
+
+model_string_ids = ['-STD','-RE','-TWIRE']
+
+single_pipe_tuples_per_tech = {
+    i: [pipe_tuple for pipe_tuple in list_single_pipe_tuples if model_string_ids[i] in pipe_tuple[3]]
+    for i, _str in enumerate(model_string_ids)
+    }
+
+twin_pipe_tuples_per_tech = {
+    i: [pipe_tuple for pipe_tuple in list_twin_pipe_tuples if model_string_ids[i] in pipe_tuple[3]]
+    for i, _str in enumerate(model_string_ids)
+    }
+
+# *****************************************************************************
+# *****************************************************************************
+
+# plot of the pipe heat capacity as a function of the diameter
+
+fig, ax = plt.subplots()
+fig.set_size_inches(12,8)
+
+cpdt = 4187*(dh_flow_temperature-dh_return_temperature)*(1000/3600)/1000 # m in tons per hour; cpdt has to be in J/Kg
+     
+        
+# single pipe
+ax.semilogy(
+    [d for d in m_pipes], 
+    [cpdt*m[0] for d, m in m_pipes.items()],
+    'rd-',
+    label='2x single, 60 Pa/m (datasheet)'
+    )
+            
+# single pipe
+ax.semilogy(
+    [d for d in m_pipes], 
+    [cpdt*m[1] for d, m in m_pipes.items()],
+    'bd-',
+    label='2x single, 80 Pa/m (datasheet)'
+    )
+
+style_category_specific_pressure_loss = {
+    60: 'ro--',
+    80: 'bo--',
+    }
+
+for max_specific_pressure_loss in list_max_specific_pressure_loss:
+    
+    # the friction factor is correct at DN600 but not the RE and the fluid speed
+    
+    # model, single
+    for tech_index, _single_pipe_tuples in single_pipe_tuples_per_tech.items():
+        _indices = [list_single_pipe_tuples.index(pipe_tuple) for pipe_tuple in _single_pipe_tuples]
+        ax.semilogy(
+            [1000*list_single_pipes[index].d_int for index in _indices], 
+            [dict_single_capacity[max_specific_pressure_loss][list_single_pipe_tuples.index(pipe_tuple)]/1e3
+             for pipe_tuple in _single_pipe_tuples],
+            style_category_specific_pressure_loss[max_specific_pressure_loss],
+            markerfacecolor='none',
+            markersize=15,
+            label='2x single (model), '+str(max_specific_pressure_loss)+' Pa/m')
+        break
+
+ax.set(xlabel='Internal diameter [mm]', 
+       ylabel='Capacity [kW]')
+
+ax.grid()
+
+ax.set(xlim=(0, 1000),ylim=(10, 8e5))
+ax.legend()
+
+# fig.savefig("test.png")
+plt.show()
+
+# *****************************************************************************
+# *****************************************************************************
\ No newline at end of file
diff --git a/examples/script_pipe_losses.py b/examples/script_pipe_losses.py
index 1f2478bfa9448a305ca49aef1989da81a4aa96bb..821188f01f7d2f25732ecefc1ac51912c49f601a 100644
--- a/examples/script_pipe_losses.py
+++ b/examples/script_pipe_losses.py
@@ -653,7 +653,7 @@ for max_specific_pressure_loss in list_max_specific_pressure_loss:
 
 fig, ax = plt.subplots()
 
-fig.set_size_inches(15,10)
+fig.set_size_inches(12,8)
 
 model_string_ids = ['-STD','-RE','-TWIRE']
 
@@ -736,9 +736,8 @@ for tech_index, _twin_pipe_tuples in twin_pipe_tuples_per_tech.items():
             markersize=10,
             label='isoplus, 1x twin (model)')
 
-ax.set(xlabel='Nominal diameter (DN)', 
-       ylabel='Specific heat losses [W/m]',
-       title='Specific heat losses as a function of pipe diameter')
+ax.set(xlabel='Internal diameter [mm]', 
+       ylabel='Specific heat losses [W/m]')
 
 ax.set(xlim=(0, 1000),ylim=(5, 100))
 ax.grid(which='both')
@@ -750,73 +749,64 @@ plt.show()
 # *****************************************************************************
 # ***************************************************************************** 
 
-# plot of the pipe heat capacity as a function of the diameter
+# twin pipes only
 
 fig, ax = plt.subplots()
-fig.set_size_inches(15,10)
 
-cpdt = 4187*(dh_flow_temperature-dh_return_temperature)*(1000/3600)/1000 # m in tons per hour; cpdt has to be in J/Kg
-        
-max_specific_pressure_loss = 80
-        
-# single pipe
-ax.semilogy(
-    [d for d in m_pipes], 
-    [cpdt*m[0] for d, m in m_pipes.items()],
-    'go-',
-    markersize=10,
-    label='isoplus, 2x single, 60 Pa/m (datasheet)'
-    )
-            
-# single pipe
-ax.semilogy(
-    [d for d in m_pipes], 
-    [cpdt*m[1] for d, m in m_pipes.items()],
-    'ro-',
-    markersize=10,
-    label='isoplus, 2x single, 80 Pa/m (datasheet)'
-    )
+fig.set_size_inches(12,8)
 
-for max_specific_pressure_loss in list_max_specific_pressure_loss:
-    
-    # the friction factor is correct at DN600 but not the RE and the fluid speed
-    
-    # model, single
-    for tech_index, _single_pipe_tuples in single_pipe_tuples_per_tech.items():
-        _indices = [list_single_pipe_tuples.index(pipe_tuple) for pipe_tuple in _single_pipe_tuples]
-        ax.semilogy(
-            [1000*list_single_pipes[index].d_int for index in _indices], 
-            [dict_single_capacity[max_specific_pressure_loss][list_single_pipe_tuples.index(pipe_tuple)]/1e3
-             for pipe_tuple in _single_pipe_tuples],
-            # [1000*pipe.d_int for pipe in list_single_pipes],
-            # [dict_single_capacity[max_specific_pressure_loss][i]/1e3
-            #  for i, pipe_tuple in enumerate(list_single_pipe_tuples)],
-            'gx',
-            markersize=10,
-            label='isoplus, 2x single (model)')
-        break
-    
-    # [dict_single_trench[max_specific_pressure_loss].nmls_supply
-    #  for pipe_tuple in _single_pipe_tuples]
-    
+model_string_ids = ['-STD','-RE','-TWIRE']
+category_captions = {'-STD': 'S1','-RE': 'S2','-TWIRE': 'S3'}
 
-# ax.semilogy([1000*pipe.d_int for pipe in list_twin_pipes],
-#         [dict_twin_capacity[max_specific_pressure_loss][i]/1e3
-#          for i, pipe_tuple in enumerate(list_twin_pipe_tuples)],
-#         'k^',
-#         markersize=10,
-#         label='isoplus, 1x twin (model)')
+style_category_twin_official = {
+    0: 'bo-',
+    1: 'bx-',
+    2: 'bd-'
+    }
 
-ax.set(xlabel='Nominal diameter (DN)', 
-       ylabel='Capacity [kW]',
-       title='Specific heat losses as a function of pipe diameter')
+style_category_twin_model = {
+    0: 'ko-',
+    1: 'kx-',
+    2: 'kd-'
+    }
 
-ax.grid()
+twin_pipe_tuples_per_tech = {
+    i: [pipe_tuple for pipe_tuple in list_twin_pipe_tuples if model_string_ids[i] in pipe_tuple[3]]
+    for i, _str in enumerate(model_string_ids)
+    }
 
+# official
+
+for max_specific_pressure_loss in list_max_specific_pressure_loss: 
+    for tech_index, _twin_pipe_tuples in twin_pipe_tuples_per_tech.items():        
+        _indices = [list_twin_pipe_tuples.index(pipe_tuple) for pipe_tuple in _twin_pipe_tuples]        
+        ax.semilogy(
+            [1000*list_twin_pipes[index].d_int for index in _indices], 
+            [u_pipes[pipe_tuple]*(temperature_fluid_bulk-ground_temperature)
+             for pipe_tuple in _twin_pipe_tuples],
+            style_category_twin_official[tech_index],
+            markersize=10,
+            label='twin pipe, '+category_captions[model_string_ids[tech_index]]+' series (datasheet)'
+            )
+# model, twin    
+for tech_index, _twin_pipe_tuples in twin_pipe_tuples_per_tech.items(): 
+    _indices = [list_twin_pipe_tuples.index(pipe_tuple) for pipe_tuple in _twin_pipe_tuples]
+    ax.semilogy([1000*list_twin_pipes[index].d_int for index in _indices], 
+            [dict_twin_heat_transfer_rate[max_specific_pressure_loss][list_twin_pipe_tuples.index(pipe_tuple)]
+             for pipe_tuple in _twin_pipe_tuples],
+            style_category_twin_model[tech_index],
+            markersize=10,
+            label='twin pipe, '+category_captions[model_string_ids[tech_index]]+' series (model)')
+
+ax.set(xlabel='Internal diamater [mm]', 
+       ylabel='Specific heat losses [W/m]')
+
+ax.set(xlim=(10, 220),ylim=(5, 20))
+ax.grid(which='both')
 ax.legend()
 
 # fig.savefig("test.png")
 plt.show()
 
 # *****************************************************************************
-# *****************************************************************************
\ No newline at end of file
+# ***************************************************************************** 
\ No newline at end of file