package Ġde . fh ac . ew i . util Ċ Ċ import Ġde . fh ac . ew i . model . Grid Ċ import Ġde . fh ac . ew i . model . Node Ċ import Ġde . fh ac . ew i . model . Pipe Ċ Ċ fun ĠGrid . grid Tree String () Ġ= Ġbuild String Ġ{ ĊĠĠĠ Ġappend Line (" E ins pe ise p unkt Ġ${ input . id }") ĊĠĠĠ Ġappend Line ("| === ĠP ump e Ġmit Ġ${ ( needed Pump Power Ġ/ Ġ 1 0 0 0 ). round ( 3 )} Ġk W Ġ( f Ã¼r Ġ${ input . pressure Loss . max OrNull ()?. round ( 2 )} ĠBar )") ĊĠĠĠ Ġfor Ġ( child Ġin Ġinput . connected Child Nodes ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnode Tree String ( child ) ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ private Ġfun ĠStringBuilder . node Tree String ( node : ĠNode , Ġindent : ĠInt Ġ= Ġ 0 ) Ġ{ ĊĠĠĠ Ġappend ("| ĠĠĠ Ġ${ " Ġ". repeat ( 2 0 )} ĠĠĠĠ Ġ". repeat ( indent )) ĊĠĠĠ Ġappend ( ĊĠĠĠĠĠĠĠ Ġ"+ --- Ġ${ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode . path To Source . first (). run Ġ{ Ġ"$ id ĠÃ ĺ Ġ${ ( type . diameter Ġ* Ġ 1 0 0 0 ). toInt ()} Ġmm Ġ(${ length . round ( 1 )} Ġm ) ". pad End ( 2 0 ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġ--- Ġ" ĊĠĠĠ Ġ) ĊĠĠĠ Ġappend Line ("${ node . java Class . simple Name } Ġ${ node . id }") ĊĠĠĠ Ġfor Ġ( child Ġin Ġnode . connected Child Nodes ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnode Tree String ( child , Ġindent Ġ+ Ġ 1 ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ fun ĠArray < Pipe >. path Length (): ĠDouble Ġ= Ġsum Of ( Pipe :: length ) Ċ Ċ /** Ċ Ġ* Ċ Ġ* Ġ@ receiver ĠArray < Pipe > Ċ Ġ* Ġ@ return ĠDouble Ġ- ĠD ru ck ver l ust Ġent lang Ġdes ĠP f ades Ġ[ Bar ] Ċ Ġ*/ Ċ fun ĠArray < Pipe >. max Pipe Pressure Loss (): ĠDouble Ġ= Ġsum Of Ġ{ Ġit . pipe Pressure Loss . max OrElse () Ġ} Ċ Ċ /** Ċ Ġ* ĠD ru ck ver l ust Ġim ĠP fad . Ċ Ġ* Ċ Ġ* Ġ@ receiver ĠArray < Pipe > Ċ Ġ* Ġ@ return ĠDouble Ġ- ĠD ru ck ver l ust Ġpro ĠMeter Ġent lang Ġdes ĠP f ades Ġ[ Pa / m ] Ċ Ġ*/ Ċ fun ĠArray < Pipe >. max Pipe Pressure Loss Per Meter (): ĠDouble Ġ= Ġmax Pipe Pressure Loss () Ġ/ Ġpath Length () Ġ* Ġ 1 0 0 _ 0 0 0