qFlowBalance ::
  (Arith.Sum a, UV.Unbox a, Arith.Sum (sweep vec a)) =>
  Sequence.Graph node structEdge sectionLabel nodeLabel
                 (Result (sweep vec a)) boundaryLabel structLabel edgeLabel ->
  Map node (Result (sweep vec a))
seqFlowBalance = fmap (f . Storage.nodes . fst) . SeqQty.storages
  where f pm = liftA2 (~-) (PartMap.exit pm) (PartMap.init pm)


seqFlowBalance ::
  (Arith.Sum a, UV.Unbox a, Arith.Sum (sweep vec a)) =>
  Sequence.Graph node structEdge sectionLabel nodeLabel
                 (Result (sweep vec a)) boundaryLabel structLabel edgeLabel ->
  Map node (Result (sweep vec a))
seqFlowBalance = fmap (f . Storage.nodes . fst) . SeqQty.storages
  where f pm = liftA2 (~-) (PartMap.exit pm) (PartMap.init pm)
seqFlowBalance = fmap (f . Storage.nodes . fst) . SeqQty.storages
  where f pm = liftA2 (~-) (PartMap.exit pm) (PartMap.init pm)