#!/usr/bin/env python
# coding: utf-8
# # Minimal Example pandapipes
#
# ## Creating a low pressure gas network
#
# We consider the following simple 3-junction example network with an ideal valve as a minimal example:
#
#
#
# The above network can be created in pandapipes as follows:
# In[ ]:
import pandapipes as pp
#create empty net
net = pp.create_empty_network(fluid="lgas")
# create junction
j1 = pp.create_junction(net, pn_bar=1.05, tfluid_k=293.15, name="Junction 1")
j2 = pp.create_junction(net, pn_bar=1.05, tfluid_k=293.15, name="Junction 2")
j3 = pp.create_junction(net, pn_bar=1.05, tfluid_k=293.15, name="Junction 3")
# create junction elements
ext_grid = pp.create_ext_grid(net, junction=j1, p_bar=1.1, t_k=293.15, name="Grid Connection")
sink = pp.create_sink(net, junction=j3, mdot_kg_per_s=0.045, name="Sink")
# create branch element
pipe = pp.create_pipe_from_parameters(net, from_junction=j1, to_junction=j2, length_km=0.1, diameter_m=0.05, name="Pipe 1")
valve = pp.create_valve(net, from_junction=j2, to_junction=j3, diameter_m=0.05, opened=True, name="Valve 1")
# Note that the fluid used here is lgas. You can find 5 predefined fluids in pandapipes:
# - lgas
# - hgas
# - hydrogen
# - water
# - air
#
# And that the predefined valve element is an ideal valve.
# ## Data Structure
#
# Each dataframe in a pandapipes net object contains the information about one pandapipes element, such as pipe, sink, valve etc.
# In[ ]:
net.junction
# In[ ]:
net.pipe
# In[ ]:
net.ext_grid
# ## Pipe Flow
#
# We now run a pipe flow:
#
# In[ ]:
pp.pipeflow(net)
# And check out at the results for junctions and pipes:
# In[ ]:
net.res_junction
# They're is no pressure loss between junction 2 and junction 3 because of the ideal valve.
# In[ ]:
net.res_pipe
# ### Closed valve
#
# We now close the valve between junction 2 and junction 3:
# In[ ]:
# Problem can not run pipeflow if valve closed
net.valve.opened = False
# The closed valve cuts the sink from the external grid:
#
#
# This can be verified by running a power flow and inspecting the results. The pressure and temperature at junction 2 is given as NaN:
# In[ ]:
pp.pipeflow(net)
net.res_junction
# Also the results from the pipe show that the mass flow is almost zero and the speed of the mass flow is zero.
# In[ ]:
net.res_pipe