# NOT RUN {
# Minimum two nodes should be in district heating network graph:
m325tracefw(verbose = FALSE)
# node trace backward aggregation temperature pressure consumption job
# 1 1 sensor FALSE identity 70.00000 0.5883990 20 0
# 2 2 1 FALSE identity 69.71603 0.5813153 20 1
# Example with the test bench:
nx <- pipenostics::m325testbench
# avoid using numeric identifiers for nodes:
nx$sender <- paste0("N", nx$sender)
nx$acceptor <- paste0("N", nx$acceptor)
# Alter units:
nx$d <- 1e3 * nx$d # convert [m] to [mm]
# Perform backward tracing to get regime on root node:
bw_report <- do.call("m325tracebw", c(as.list(nx), verbose = FALSE))
# Put the traced values to the root node of the test bench:
root_node_idx <- 12
root_node <- paste0("N", root_node_idx)
regime_param <- c("temperature", "pressure", "consumption")
nx[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(nx), 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(nx, !(acceptor %in% sender))$acceptor &
aggregation == "identity"
)
regime_delta <- colMeans(
subset(report, backward, regime_param) -
subset(report, !backward, regime_param)
)
print(regime_delta)
# temperature pressure consumption
# -4.640201e-01 -5.208802e-03 -5.465713e-16
stopifnot(sqrt(regime_delta %*% regime_delta) < 0.5)
# }
Run the code above in your browser using DataLab