[Pipeline]
  free  C_nrg
  free  LCC
  free  Pipe.C
  free  D
  free  t
  free  P[:]
  free  Pump.C
  free  P_rated
  free  M
  fixed c_nrg
  fixed p_sys
  fixed sigma
  fixed hours[:]
  cons  sigma ≥ p_sys⋅D/(2⋅t) + 4⋅M/(3.14⋅D²⋅t)
  cons  P[0] ≤ P_rated
  cons  P[1] ≤ P_rated
  cons  P[2] ≤ P_rated
  cons  C_nrg ≥ c_nrg⋅(P[:]⋅hours[:]).sum()
  cons  LCC ≥ Pipe.C + Pump.C + C_nrg
[Pipeline.Fluid]
  fixed mu
  fixed rho
[Pipeline.Pipe]
  free  A
  free  C
  free  D
  free  W
  free  t
  fixed L
  fixed c_mat
  fixed rho_m
  fixed sigma
  fixed t_min
  cons (Geometry)  A = 0.785⋅D²
  cons (Geometry)  t ≥ t_min
  cons (Mass)  W ≥ rho_m⋅3.14⋅D⋅t⋅L
  cons (Cost)  C ≥ c_mat⋅W
[Pipeline.Pump]
  free  C
  free  P_rated
  fixed c_unit
  fixed eta
  cons (Cost)  C ≥ c_unit⋅P_rated
[Pipeline.PipeFlow]
  free  P[:]
  free  Q[:]
  free  Re[:]
  free  V[:]
  free  dp[:]
  free  f[:]
  free  hours[:]
  free  A  [Pipeline.Pipe]
  free  D  [Pipeline.Pipe]
  fixed mu  [Pipeline.Fluid]
  fixed rho  [Pipeline.Fluid]
  fixed L  [Pipeline.Pipe]
  fixed eta  [Pipeline.Pump]
  cons (Continuity)  Q[0] ≤ V[0]⋅A
  cons (Continuity)  Q[1] ≤ V[1]⋅A
  cons (Continuity)  Q[2] ≤ V[2]⋅A
  cons (Friction)  Re[0] ≤ rho⋅V[0]⋅D/mu
  cons (Friction)  Re[1] ≤ rho⋅V[1]⋅D/mu
  cons (Friction)  Re[2] ≤ rho⋅V[2]⋅D/mu
  cons (Friction)  f[0] ≥ Re[0]^-0.2⋅0.184
  cons (Friction)  f[1] ≥ Re[1]^-0.2⋅0.184
  cons (Friction)  f[2] ≥ Re[2]^-0.2⋅0.184
  cons (Pressure drop)  dp[0] ≥ f[0]⋅L/D⋅rho⋅V[0]²/2
  cons (Pressure drop)  dp[1] ≥ f[1]⋅L/D⋅rho⋅V[1]²/2
  cons (Pressure drop)  dp[2] ≥ f[2]⋅L/D⋅rho⋅V[2]²/2
  cons (Pressure drop)  P[0] ≥ dp[0]⋅Q[0]/eta
  cons (Pressure drop)  P[1] ≥ dp[1]⋅Q[1]/eta
  cons (Pressure drop)  P[2] ≥ dp[2]⋅Q[2]/eta
[Pipeline.SpanLoading]
  free  M
  free  A  [Pipeline.Pipe]
  free  D  [Pipeline.Pipe]
  free  t  [Pipeline.Pipe]
  fixed L_span
  fixed rho  [Pipeline.Fluid]
  fixed rho_m  [Pipeline.Pipe]
  cons  M ≥ (rho_m⋅3.14⋅D⋅t⋅9.81 + rho⋅A⋅9.81)⋅L_span²/8
