library(pipenostics)
# Minimum two nodes should be in district heating network graph:
m325tracefw(verbose = FALSE)
# Consider isomorphic representation of District Heating Network graph:
DHN <- pipenostics::m325testbench
# * avoid using numeric identifiers for nodes:
DHN$sender <- sprintf("N%02i", DHN$sender)
DHN$acceptor <- sprintf("N%02i", DHN$acceptor)
# * alter units:
DHN$d <- 1e3 * DHN$d # convert [m] to [mm]
# Perform backward tracing to get regime on root node:
bw_report <- do.call("m325tracebw", c(as.list(DHN), verbose = FALSE))
# Put the traced values to the root node of test bench:
root_node_idx <- 12
root_node <- sprintf("N%02i", root_node_idx)
regime_param <- c("temperature", "pressure", "flow_rate")
DHN[root_node_idx, regime_param] <-
subset(bw_report,
node == root_node & aggregation == "median",
regime_param)
rm(root_node, root_node_idx)
# Trace the test bench forward for the first time:
fw_report <- do.call("m325tracefw",
c(as.list(DHN), verbose = FALSE, elev_tol = .5))
# Let's compare traced regime at terminal nodes back to test bench:
report <- subset(
rbind(bw_report, fw_report),
node %in% subset(DHN, !(acceptor %in% sender))$acceptor &
aggregation == "identity"
)
regime_delta <- colMeans(
subset(report, backward, regime_param) -
subset(report, !backward, regime_param)
)
print(regime_delta)
stopifnot(sqrt(regime_delta %*% regime_delta) < 0.5)
Run the code above in your browser using DataLab