{
"cells": [
{
"cell_type": "markdown",
"id": "572f2f1e-c6f5-4bc6-83f3-78ce0a5aaed4",
"metadata": {},
"source": [
"# Analysis of the Hydronic Network\n",
"---"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "5bc83864-22eb-4573-bccf-61da154c655a",
"metadata": {
"tags": [
"remove-cell"
]
},
"outputs": [],
"source": [
"from deps import load_packages\n",
"load_packages()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "9853575d-bf0d-4f43-a026-a11b37769f5d",
"metadata": {
"tags": [
"remove-cell"
]
},
"outputs": [
{
"data": {
"text/html": [
"
Loaded my_styles.css
"
],
"text/plain": [
""
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import jupyter_addons as ja\n",
"ja.set_css()"
]
},
{
"cell_type": "markdown",
"id": "77e3f212-a6cb-40da-bd14-eecd15b32733",
"metadata": {},
"source": [
"## Let's Import What We'll Need"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "8883f766-d938-4906-8d88-12980f636973",
"metadata": {},
"outputs": [],
"source": [
"from hvac import Quantity\n",
"from hvac.fluid_flow import load_network, PseudoConduit, SystemCurve\n",
"from hvac.fluid_flow.utils import plot_curves"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "69ffa4b0-faa5-4ab1-b732-7774de6cfde1",
"metadata": {},
"outputs": [],
"source": [
"Q_ = Quantity"
]
},
{
"cell_type": "markdown",
"id": "ee02b2d1-a169-4260-a9df-f8f855cf4480",
"metadata": {},
"source": [
"## Load the Hydronic Network back into this Notebook"
]
},
{
"cell_type": "markdown",
"id": "15f8c31d-9c7b-4dea-bda5-3ce12dbec7fa",
"metadata": {},
"source": [
"In the previous notebook \"Design of a Hydronic Network\" we saved our `PipeNetwork` object on the file path:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "ff7a3277-387f-4b29-be02-f630bde9e0af",
"metadata": {},
"outputs": [],
"source": [
"file_path = \"./networks/hydronic_network.pickle\""
]
},
{
"cell_type": "markdown",
"id": "48b8baac-9a3a-42dc-8412-9338425c251f",
"metadata": {},
"source": [
"Now, let's load this object again from disk:"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "49ddea45-daf7-49dd-a05b-59701dfc0b9e",
"metadata": {},
"outputs": [],
"source": [
"pipe_network = load_network(file_path)"
]
},
{
"cell_type": "markdown",
"id": "26b67fa6-5a8c-4d36-8f7f-1c59bb51180f",
"metadata": {},
"source": [
"## Add a Pseudo Conduit with a Fixed Pressure Difference"
]
},
{
"cell_type": "markdown",
"id": "33c8b2a7-b9d5-45f9-9024-9d9ef9d9d3ce",
"metadata": {},
"source": [
"A pseudo conduit, as the name suggests, is not a real conduit in a pipe network. We use it to represent a fixed pressure difference between two nodes."
]
},
{
"cell_type": "markdown",
"id": "5c80b17b-f4da-4169-a246-ae78d7f9b671",
"metadata": {},
"source": [
""
]
},
{
"cell_type": "markdown",
"id": "bcd8dfd9-176b-4675-9c78-c6126faf5d23",
"metadata": {},
"source": [
"From the design of the hydronic pipe network it follows that we need a pressure difference of about 39 kPa between end node R0 and start node S0 to establish the design volume flow rates in the pipe network. In order to analyze the pipe network, we add a `PseudoConduit` object between the end node and the start node of the network with a fixed pressure difference of 39 kPa."
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "7f3d5a01-9c59-415d-a8d2-67c407c812a3",
"metadata": {},
"outputs": [],
"source": [
"pseudo_conduit = PseudoConduit.create(fixed_pressure_drop=Q_(-39, 'kPa'))"
]
},
{
"cell_type": "markdown",
"id": "8e4c5074-1791-4a44-8b25-a4d63681eb00",
"metadata": {},
"source": [
"The start node of the network is at a pressure that is 39 kPa higher than the pressure at the end node of the network. If there would be a real conduit between the start and the end node of the network, there would be a flow of water from the start node towards the end node. The direction of this flow would be opposite to the positive, clock-wise sense of the loop L1, as can be deduced from the scheme above. This is the reason why we need to add a minus sign. It can also be noticed that the fixed pressure difference between the end node and the start node is a pressure rise rather than a pressure drop.\n",
"\n",
"After the pseudo conduit has been created, we still need to add it to the network:"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "49f90846-ae1f-4fb1-a6b5-dbea0e15df30",
"metadata": {},
"outputs": [],
"source": [
"pipe_network.add_conduit(\n",
" conduit=pseudo_conduit,\n",
" conduit_ID='P13',\n",
" start_node_ID='R0',\n",
" end_node_ID='S0',\n",
" loop_ID='L1'\n",
")"
]
},
{
"cell_type": "markdown",
"id": "c79e701c-bad6-4b97-9da0-db75f99f5b9d",
"metadata": {},
"source": [
"## More about Loops"
]
},
{
"cell_type": "markdown",
"id": "e92a938e-f969-4bd6-a003-a97300390ee3",
"metadata": {},
"source": [
"Before we move on, let's first go back to the pipe configuration csv-file that we discussed in the notebook \"Design of a Hydronic Network\" and which is displayed again below: "
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "ca089f9c-f312-4cd2-921b-49baad9f5ee2",
"metadata": {
"jupyter": {
"source_hidden": true
},
"tags": [
"hide-input"
]
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" \n",
" conduit_ID \n",
" start_node_ID \n",
" end_node_ID \n",
" loop_ID \n",
" schedule \n",
" length \n",
" volume_flow_rate \n",
" specific_pressure_drop \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" P1 \n",
" S0 \n",
" S1 \n",
" L1 \n",
" copper \n",
" 4 \n",
" 0.458 \n",
" 0.2 \n",
" \n",
" \n",
" 1 \n",
" P2 \n",
" S1 \n",
" S2 \n",
" L2 \n",
" copper \n",
" 2 \n",
" 0.397 \n",
" 0.2 \n",
" \n",
" \n",
" 2 \n",
" P3 \n",
" S2 \n",
" S3 \n",
" L3 \n",
" copper \n",
" 2 \n",
" 0.214 \n",
" 0.2 \n",
" \n",
" \n",
" 3 \n",
" P4 \n",
" S3 \n",
" S4 \n",
" L4 \n",
" copper \n",
" 2 \n",
" 0.122 \n",
" 0.2 \n",
" \n",
" \n",
" 4 \n",
" P5 \n",
" S1 \n",
" R1 \n",
" (L1, L2) \n",
" pex \n",
" 25 \n",
" 0.061 \n",
" 0.2 \n",
" \n",
" \n",
" 5 \n",
" P6 \n",
" S2 \n",
" R2 \n",
" (L2, L3) \n",
" pex \n",
" 25 \n",
" 0.183 \n",
" 0.2 \n",
" \n",
" \n",
" 6 \n",
" P7 \n",
" S3 \n",
" R3 \n",
" (L3, L4) \n",
" pex \n",
" 15 \n",
" 0.092 \n",
" 0.2 \n",
" \n",
" \n",
" 7 \n",
" P8 \n",
" S4 \n",
" R4 \n",
" L4 \n",
" pex \n",
" 20 \n",
" 0.122 \n",
" 0.2 \n",
" \n",
" \n",
" 8 \n",
" P9 \n",
" R4 \n",
" R3 \n",
" L4 \n",
" copper \n",
" 2 \n",
" 0.122 \n",
" 0.2 \n",
" \n",
" \n",
" 9 \n",
" P10 \n",
" R3 \n",
" R2 \n",
" L3 \n",
" copper \n",
" 2 \n",
" 0.214 \n",
" 0.2 \n",
" \n",
" \n",
" 10 \n",
" P11 \n",
" R2 \n",
" R1 \n",
" L2 \n",
" copper \n",
" 2 \n",
" 0.397 \n",
" 0.2 \n",
" \n",
" \n",
" 11 \n",
" P12 \n",
" R1 \n",
" R0 \n",
" L1 \n",
" copper \n",
" 4 \n",
" 0.458 \n",
" 0.2 \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import pandas as pd\n",
"\n",
"table = pd.read_csv('./networks/ex1_closed-pipe-network-design.csv')\n",
"ja.display_table(table)"
]
},
{
"cell_type": "markdown",
"id": "0ae812d0-e7e5-4cab-b541-4116a5e747aa",
"metadata": {},
"source": [
"Inside the column *loop_ID*, we have specified the loop or loops to which each pipe in the network belongs. For example, pipe 5 belongs to two loops L1 and L2. You must enter the two loop IDs between brackets and separate them with a comma, otherwise the program will give an error. \n",
"\n",
"The sense of the volume flow rates in the pipes is referenced to the sense of the loop the pipes belong to. By convention a clock-wise loop sense is considered to be positive. If the arrow of the volume flow rate in a pipe points in the same direction as the loop arrow, the volume flow rate has a positive sign, otherwise you must give it a negative sign. In the case a pipe belongs to two loops, the sign of the volume flow rate is referenced to the positive sense of the first mentioned loop. In the second loop the flow sign will always be opposite to the flow sign in the first loop, as can be observed in the network scheme above."
]
},
{
"cell_type": "markdown",
"id": "a4594a76-7a07-44fe-a3d5-a8039a4b3937",
"metadata": {},
"source": [
"## Analyze the Pipe Network"
]
},
{
"cell_type": "markdown",
"id": "3faca210-3d49-4332-98fc-167b9003b654",
"metadata": {},
"source": [
"Once alle pipes have been assigned a loop ID, or two loop IDs, and the pseudo conduit has been added between the end node and the start node of the network, we can let the program analyze the network with the Hardy Cross method:"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "acd82c77-ccdc-47d4-9cc6-133e6eacb998",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"12"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"i = pipe_network.analyze(tolerance=Q_(1, 'Pa'), i_max=500)\n",
"i"
]
},
{
"cell_type": "markdown",
"id": "8866d0f3-6ff9-4f88-a934-15bd1be9dc8e",
"metadata": {},
"source": [
"The Hardy Cross method is an iterative solution method to find the volume flow rates in a fluid network. The aim is to find the volume flow rate in each pipe of the network, such that the sum of the pressure differences across the pipes in each loop of the network becomes zero (as demanded by the physical law about conservation of energy). As it may take numerous iterations to find a solution for which the loop pressure differences all become exactly zero, a stop criterium is provided by the `tolerance` parameter. A tolerance of 1 Pa means that the `analyze` method will stop when all loop pressure differences are between 0 and 1 Pa. The parameter `i_max` sets the maximum number of iterations. If no solution has been found within `i_max` iterations, an `OverflowError` excepction will be raised to alert that no solution could be found that fulfills the stop criterium. The volume flow rates we entered in the pipe configuration file are used by the program as an initial guess to start the iterative solving process. Here we use the design flow rates for which we have sized the network.\n",
"\n",
"> **IMPORTANT!** \n",
"> When we choose a volume flow rate for each pipe in the network, we must make sure that the sum of the flow rates that arrive at a node is equal to the sum of the flow rates that leave at this same node (as demanded by the physical law about conservation of mass)."
]
},
{
"cell_type": "markdown",
"id": "54c77702-876d-4c90-a076-c9e7ac714faa",
"metadata": {},
"source": [
"When the `analyze` method is finished and has returned, we can take a look at the results:"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "b2b7a12d-a6e1-4b4d-b05a-f6a080dbd828",
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" \n",
" pipe ID \n",
" L [m] \n",
" DN [mm] \n",
" Di [mm] \n",
" V [l/s] \n",
" v [m/s] \n",
" zeta \n",
" Re \n",
" Δp-dyn. [kPa] \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" P1 \n",
" 4.0 \n",
" 35.0 \n",
" 32.0 \n",
" 0.458009 \n",
" 0.569488 \n",
" 0.007096 \n",
" 32946.314459 \n",
" 0.463940 \n",
" \n",
" \n",
" 1 \n",
" P2 \n",
" 2.0 \n",
" 28.0 \n",
" 25.0 \n",
" 0.397008 \n",
" 0.808777 \n",
" -0.011416 \n",
" 36554.548492 \n",
" 0.580817 \n",
" \n",
" \n",
" 2 \n",
" P3 \n",
" 2.0 \n",
" 22.0 \n",
" 20.0 \n",
" 0.214003 \n",
" 0.681194 \n",
" -0.037437 \n",
" 24630.493799 \n",
" 0.559739 \n",
" \n",
" \n",
" 3 \n",
" P4 \n",
" 2.0 \n",
" 18.0 \n",
" 16.0 \n",
" 0.122002 \n",
" 0.606788 \n",
" 0.096462 \n",
" 17552.098316 \n",
" 0.629693 \n",
" \n",
" \n",
" 4 \n",
" P5 \n",
" 25.0 \n",
" 18.0 \n",
" 14.0 \n",
" 0.061002 \n",
" 0.396274 \n",
" 434.804239 \n",
" 10029.882171 \n",
" 38.030197 \n",
" \n",
" \n",
" 5 \n",
" P6 \n",
" 25.0 \n",
" 26.0 \n",
" 20.0 \n",
" 0.183004 \n",
" 0.582521 \n",
" 186.696474 \n",
" 21062.691816 \n",
" 36.689134 \n",
" \n",
" \n",
" 6 \n",
" P7 \n",
" 15.0 \n",
" 20.0 \n",
" 16.0 \n",
" 0.092001 \n",
" 0.457578 \n",
" 315.569585 \n",
" 13236.018933 \n",
" 35.442611 \n",
" \n",
" \n",
" 7 \n",
" P8 \n",
" 20.0 \n",
" 20.0 \n",
" 16.0 \n",
" 0.122002 \n",
" 0.606788 \n",
" 154.280699 \n",
" 17552.098316 \n",
" 34.185247 \n",
" \n",
" \n",
" 8 \n",
" P9 \n",
" 2.0 \n",
" 18.0 \n",
" 16.0 \n",
" 0.122002 \n",
" 0.606788 \n",
" 0.084951 \n",
" 17552.098316 \n",
" 0.627599 \n",
" \n",
" \n",
" 9 \n",
" P10 \n",
" 2.0 \n",
" 22.0 \n",
" 20.0 \n",
" 0.214003 \n",
" 0.681194 \n",
" 0.514415 \n",
" 24630.493799 \n",
" 0.686250 \n",
" \n",
" \n",
" 10 \n",
" P11 \n",
" 2.0 \n",
" 28.0 \n",
" 25.0 \n",
" 0.397008 \n",
" 0.808777 \n",
" 0.543084 \n",
" 36554.548492 \n",
" 0.760010 \n",
" \n",
" \n",
" 11 \n",
" P12 \n",
" 4.0 \n",
" 35.0 \n",
" 32.0 \n",
" 0.458009 \n",
" 0.569488 \n",
" 0.262696 \n",
" 32946.314459 \n",
" 0.504894 \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"pipe_table1 = pipe_network.get_pipe_table()\n",
"ja.display_table(pipe_table1)"
]
},
{
"cell_type": "markdown",
"id": "df656331-f83b-48de-89c4-af456f122047",
"metadata": {},
"source": [
"As could have been expected, the volume flow rates are still close to the initial design values, as we have added a fixed pressure rise of 39 kPa that is close to what was calculated when designing the network and because we haven't changed anything yet to the configuration of the pipe network."
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "26d16841-721a-4cde-9a23-c0fa28257844",
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" \n",
" path \n",
" Δp-elev. [kPa] \n",
" Δp-dyn. [kPa] \n",
" Δp-tot. [kPa] \n",
" Δp-deficit [kPa] \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" P1|P2|P3|P4|P8|P9|P10|P11|P12 \n",
" 0.0 \n",
" 38.998188 \n",
" 38.998188 \n",
" 0.000843 \n",
" \n",
" \n",
" 1 \n",
" P1|P5|P12 \n",
" 0.0 \n",
" 38.999031 \n",
" 38.999031 \n",
" 0.000000 \n",
" \n",
" \n",
" 2 \n",
" P1|P2|P6|P11|P12 \n",
" 0.0 \n",
" 38.998794 \n",
" 38.998794 \n",
" 0.000237 \n",
" \n",
" \n",
" 3 \n",
" P1|P2|P3|P7|P10|P11|P12 \n",
" 0.0 \n",
" 38.998260 \n",
" 38.998260 \n",
" 0.000771 \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ja.display_table(pipe_network.get_flow_path_table())"
]
},
{
"cell_type": "markdown",
"id": "a176976f-8617-4407-a625-450c097cced0",
"metadata": {},
"source": [
"### Hydraulic Resistance of Pipe Network"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "daa514c9-db01-4f3a-adb6-a366eacb32fc",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"network hydraulic resistance: 1.8591×10¹¹ Pa·s²/m⁶ "
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ja.display_list([\n",
" f\"network hydraulic resistance: {pipe_network.hydraulic_resistance.to('Pa / (m ** 3 / s) ** 2'):~P.5g} \"\n",
"])"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "4a517add-fb0d-4085-854c-2881395b14a0",
"metadata": {},
"outputs": [],
"source": [
"system_curve1 = SystemCurve.create(pipe_network.hydraulic_resistance, name='system curve 1')"
]
},
{
"cell_type": "markdown",
"id": "166456ec-f075-4a34-8db5-4aa3785d6d27",
"metadata": {},
"source": [
"We will this `SystemCurve` object later on when we will display different system curves of the pipe network."
]
},
{
"cell_type": "markdown",
"id": "28767fa8-0dc4-4b48-9f89-b5a292f85de2",
"metadata": {},
"source": [
"## Effect of Closing Control Valves"
]
},
{
"cell_type": "markdown",
"id": "347537dc-79ba-4dae-b0d0-b358e31a794e",
"metadata": {},
"source": [
"What will happen to the volume flow rates in the network when we close the control valves in cross-overs P6 and P7 to 50 % opening? To find this out, we first set the valve opening of these control valves to 50 % of the fully open position:"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "35aa3e13-a3fc-4183-822e-f6b9ed43ad34",
"metadata": {},
"outputs": [],
"source": [
"pipe_network.set_control_valve_opening('P6', percent_open=50)\n",
"pipe_network.set_control_valve_opening('P7', percent_open=50)"
]
},
{
"cell_type": "markdown",
"id": "b722750b-62ca-48cd-8a72-50c6a4aeef20",
"metadata": {},
"source": [
"Then we run the `analyze` method again:"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "80520cf4-01ea-41c6-aa0a-d5fa8cbef5b5",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"155"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"i = pipe_network.analyze(tolerance=Q_(1, 'Pa'), i_max=500)\n",
"i"
]
},
{
"cell_type": "markdown",
"id": "709be3f0-4373-4111-ad46-792a17b1a751",
"metadata": {},
"source": [
"Now can display the pipe table again, to check the volume flow rates in the network. "
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "e60b26b1-90f8-49ea-99ce-e6bdffd1addd",
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" \n",
" pipe ID \n",
" L [m] \n",
" DN [mm] \n",
" Di [mm] \n",
" V [l/s] \n",
" v [m/s] \n",
" zeta \n",
" Re \n",
" Δp-dyn. [kPa] \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" P1 \n",
" 4.0 \n",
" 35.0 \n",
" 32.0 \n",
" 0.356759 \n",
" 0.443593 \n",
" 0.007096 \n",
" 25662.971166 \n",
" 0.298219 \n",
" \n",
" \n",
" 1 \n",
" P2 \n",
" 2.0 \n",
" 28.0 \n",
" 25.0 \n",
" 0.295473 \n",
" 0.601933 \n",
" -0.011416 \n",
" 27205.754582 \n",
" 0.344295 \n",
" \n",
" \n",
" 2 \n",
" P3 \n",
" 2.0 \n",
" 22.0 \n",
" 20.0 \n",
" 0.175576 \n",
" 0.558877 \n",
" -0.037437 \n",
" 20207.794106 \n",
" 0.395152 \n",
" \n",
" \n",
" 3 \n",
" P4 \n",
" 2.0 \n",
" 18.0 \n",
" 16.0 \n",
" 0.124235 \n",
" 0.617895 \n",
" 0.096462 \n",
" 17873.388934 \n",
" 0.650165 \n",
" \n",
" \n",
" 4 \n",
" P5 \n",
" 25.0 \n",
" 18.0 \n",
" 14.0 \n",
" 0.061285 \n",
" 0.398116 \n",
" 434.804239 \n",
" 10076.515197 \n",
" 38.379412 \n",
" \n",
" \n",
" 5 \n",
" P6 \n",
" 25.0 \n",
" 26.0 \n",
" 20.0 \n",
" 0.119897 \n",
" 0.381643 \n",
" 486.754974 \n",
" 13799.399123 \n",
" 37.592559 \n",
" \n",
" \n",
" 6 \n",
" P7 \n",
" 15.0 \n",
" 20.0 \n",
" 16.0 \n",
" 0.051341 \n",
" 0.255351 \n",
" 1108.298588 \n",
" 7386.353698 \n",
" 36.717880 \n",
" \n",
" \n",
" 7 \n",
" P8 \n",
" 20.0 \n",
" 20.0 \n",
" 16.0 \n",
" 0.124235 \n",
" 0.617895 \n",
" 154.280699 \n",
" 17873.388934 \n",
" 35.420302 \n",
" \n",
" \n",
" 8 \n",
" P9 \n",
" 2.0 \n",
" 18.0 \n",
" 16.0 \n",
" 0.124235 \n",
" 0.617895 \n",
" 0.084951 \n",
" 17873.388934 \n",
" 0.647994 \n",
" \n",
" \n",
" 9 \n",
" P10 \n",
" 2.0 \n",
" 22.0 \n",
" 20.0 \n",
" 0.175576 \n",
" 0.558877 \n",
" 0.514415 \n",
" 20207.794106 \n",
" 0.480309 \n",
" \n",
" \n",
" 10 \n",
" P11 \n",
" 2.0 \n",
" 28.0 \n",
" 25.0 \n",
" 0.295473 \n",
" 0.601933 \n",
" 0.543084 \n",
" 27205.754582 \n",
" 0.443552 \n",
" \n",
" \n",
" 11 \n",
" P12 \n",
" 4.0 \n",
" 35.0 \n",
" 32.0 \n",
" 0.356759 \n",
" 0.443593 \n",
" 0.262696 \n",
" 25662.971166 \n",
" 0.323067 \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"pipe_table2 = pipe_network.get_pipe_table()\n",
"ja.display_table(pipe_table2)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "5a6f29a3-04a0-4bf1-b5f0-fccdf5258264",
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" \n",
" path \n",
" Δp-elev. [kPa] \n",
" Δp-dyn. [kPa] \n",
" Δp-tot. [kPa] \n",
" Δp-deficit [kPa] \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" P1|P2|P3|P4|P8|P9|P10|P11|P12 \n",
" 0.0 \n",
" 39.003055 \n",
" 39.003055 \n",
" 0.000000 \n",
" \n",
" \n",
" 1 \n",
" P1|P5|P12 \n",
" 0.0 \n",
" 39.000698 \n",
" 39.000698 \n",
" 0.002357 \n",
" \n",
" \n",
" 2 \n",
" P1|P2|P6|P11|P12 \n",
" 0.0 \n",
" 39.001692 \n",
" 39.001692 \n",
" 0.001363 \n",
" \n",
" \n",
" 3 \n",
" P1|P2|P3|P7|P10|P11|P12 \n",
" 0.0 \n",
" 39.002474 \n",
" 39.002474 \n",
" 0.000581 \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ja.display_table(pipe_network.get_flow_path_table())"
]
},
{
"cell_type": "markdown",
"id": "1d38465d-e793-427a-9bbb-18036e52d755",
"metadata": {},
"source": [
"### Comparing volume flow rates"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "2dfedfac-41b8-48dd-89fc-6e9fb7e5aa5f",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" \n",
" pipe_IDs \n",
" V_1 \n",
" V_2 \n",
" abs. difference \n",
" % difference \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" P1 \n",
" 0.458009 \n",
" 0.356759 \n",
" -0.101251 \n",
" -22.106701 \n",
" \n",
" \n",
" 1 \n",
" P2 \n",
" 0.397008 \n",
" 0.295473 \n",
" -0.101534 \n",
" -25.574913 \n",
" \n",
" \n",
" 2 \n",
" P3 \n",
" 0.214003 \n",
" 0.175576 \n",
" -0.038427 \n",
" -17.956196 \n",
" \n",
" \n",
" 3 \n",
" P4 \n",
" 0.122002 \n",
" 0.124235 \n",
" 0.002233 \n",
" 1.830497 \n",
" \n",
" \n",
" 4 \n",
" P5 \n",
" 0.061002 \n",
" 0.061285 \n",
" 0.000284 \n",
" 0.464941 \n",
" \n",
" \n",
" 5 \n",
" P6 \n",
" 0.183004 \n",
" 0.119897 \n",
" -0.063108 \n",
" -34.484162 \n",
" \n",
" \n",
" 6 \n",
" P7 \n",
" 0.092001 \n",
" 0.051341 \n",
" -0.040660 \n",
" -44.195050 \n",
" \n",
" \n",
" 7 \n",
" P8 \n",
" 0.122002 \n",
" 0.124235 \n",
" 0.002233 \n",
" 1.830497 \n",
" \n",
" \n",
" 8 \n",
" P9 \n",
" 0.122002 \n",
" 0.124235 \n",
" 0.002233 \n",
" 1.830497 \n",
" \n",
" \n",
" 9 \n",
" P10 \n",
" 0.214003 \n",
" 0.175576 \n",
" -0.038427 \n",
" -17.956196 \n",
" \n",
" \n",
" 10 \n",
" P11 \n",
" 0.397008 \n",
" 0.295473 \n",
" -0.101534 \n",
" -25.574913 \n",
" \n",
" \n",
" 11 \n",
" P12 \n",
" 0.458009 \n",
" 0.356759 \n",
" -0.101251 \n",
" -22.106701 \n",
" \n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"data = {\n",
" 'pipe_IDs': pipe_table1.iloc[:, 0].copy(),\n",
" 'V_1': pipe_table1.iloc[:, 4].copy(),\n",
" 'V_2': pipe_table2.iloc[:, 4].copy()\n",
"}\n",
"comp_table = pd.DataFrame(data)\n",
"comp_table['abs. difference'] = comp_table['V_2'] - comp_table['V_1']\n",
"comp_table['% difference'] = comp_table['abs. difference'] / comp_table['V_1'] * 100\n",
"ja.display_table(comp_table)"
]
},
{
"cell_type": "markdown",
"id": "969197cb-9846-4fb2-9db7-f7cb7fe7e710",
"metadata": {},
"source": [
"For the same pressure rise of 39 kPa between the start and the end node of the network, the total flow rate into (and out of) the network has been reduced. In the cross-overs P6 and P7 the volume flow rate has been reduced approximately by 35 % and 44 % respectively. However, in the cross-overs P5 and P8 the volume flow rates have slightly increased, because there is less pressure drop in the supply and return header."
]
},
{
"cell_type": "markdown",
"id": "ec7a7cbe-5878-4cae-82f3-3070123642a8",
"metadata": {},
"source": [
"### Hydraulic Resistance of Pipe Network"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "bd9c967c-a313-4195-974c-9de374690d8e",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"network hydraulic resistance: 3.0644×10¹¹ Pa·s²/m⁶ "
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ja.display_list([\n",
" f\"network hydraulic resistance: {pipe_network.hydraulic_resistance.to('Pa / (m ** 3 / s) ** 2'):~P.5g} \"\n",
"])"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "e4471cbd-3a0b-45ea-b65b-e140fe9aa8a8",
"metadata": {},
"outputs": [],
"source": [
"system_curve2 = SystemCurve.create(pipe_network.hydraulic_resistance, name='system curve 2')"
]
},
{
"cell_type": "markdown",
"id": "eb8b3558-8b8e-45f4-9c2e-c4ad6a026cf5",
"metadata": {},
"source": [
"## Plot the System Curves"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "fef5582f-a8a0-451c-9cdc-f51c8942ebf0",
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [
{
"data": {
"image/png": "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ypUrcerUKZSXlyMlJQVqtdrgGu/p06dj1apVUKvVePXVV/XLt23bhuTkZPz55584f/489uzZg/79+wMAPDw8oFKp8Ouvv+LKlSuor6+Hv78/3njjDcTGxiInJwelpaU4evQoPvjgA1y7dq3DxvT++++joqICM2fOxJkzZ1BUVISvvvpKv3706NFYu3Ytzp49iyNHjmDp0qVGtz1lyhT89NNP2LdvH2JjY/XLH3VsWq0WWq0WjY2NuHTpErRaLSoqKh5t4F0Ms2m+bObm5mLChAn49NNPERISgurqalRXV6Ouru7RB09Ej0YQUZfS0NAgioqKRENDg7m7YpSioiIREREhnJ2dhbW1tRgyZIjIzs422KahoUHY29uL+fPnGyzfvXu3GDZsmLC1tRX29vZi7Nix4q+//tKvX7t2rfDw8BAKhUIsWbJECCHE7du3xfz584Wnp6dQqVTC19dXzJ49W9TX1wshhNBoNCIuLs5gP97e3mLTpk3616WlpQKAKC4ubnNcJ0+eFMHBwUKtVgsnJycxYcIE/bry8nIRGhoqunfvLoYMGSL27t1r0N7WrVtFz549Jdu9fv26sLS0FC4uLkKn0xmse9jYpABo9aPRaNrcXk6YTfNlU6PRSGbz/ly19LS97xE9TRRCPOQCRiJ6qty5cwclJSXw8/PrMs/Or6mpQc+ePVFQUICAgABzd4dIj9nsHLri+x5RZ8HLkIio02pubkZlZSU++eQTDBs2jAdj1Gkwm0QkF7zBmYg6rYqKCvj6+qJPnz7IyMgwd3eI9JhNIpILFgtE1Gn5+Pg89FGPRObAbBKRXPAyJCIiIiIiksRigaiLautLmYiIupr773eP883URCSNlyERdTEqlQpKpRKXL1+Gm5sbLC0t+R8oEXVJQgjodDrU1NRAqVS2+oZrInp8fHQqURek0+lQVVWFW7dumbsrREQmZ2Njgx49erBYIDIBFgtEXZQQAs3Nzbh79665u0JEZDLdunWDhYUFP0ElMhEWC0REREREJIk3OBMRERERkSQWC0REREREJInFAhERERERSWKxQEREREREklgsEBERERGRJBYLREREREQkicUCERERERFJ+h9btE61ugF0/QAAAABJRU5ErkJggg==\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"chart = plot_curves(\n",
" pump_curves=[],\n",
" system_curves=[system_curve1, system_curve2],\n",
" working_point=None,\n",
" fig_size=(8, 6),\n",
" V_step=Q_(0.05, 'L / s'),\n",
" V_max=Q_(0.55, 'L / s'),\n",
" dP_step=Q_(5, 'kPa'),\n",
" dP_max=Q_(50, 'kPa'),\n",
" V_unit='L / s',\n",
" dP_unit='kPa'\n",
")\n",
"\n",
"chart.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1cb37e3b-42fb-4a74-84fb-af4d29b59beb",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.4"
}
},
"nbformat": 4,
"nbformat_minor": 5
}