Pywr
1.9.1.dev12+g59f77b9
  • Installing Pywr
  • Tutorial
  • Problem formulation
  • JSON model format
  • Cookbook
  • Extending Pywr
  • Python API reference
    • Core classes
    • Nodes
      • Nodes classes
        • pywr.nodes.Node
        • pywr.nodes.Link
        • pywr.nodes.Input
        • pywr.nodes.Output
        • pywr.nodes.BreakLink
        • pywr.nodes.PiecewiseLink
        • pywr.nodes.MultiSplitLink
        • pywr.nodes.Storage
        • pywr.nodes.VirtualStorage
        • pywr.nodes.RollingVirtualStorage
        • pywr.nodes.AnnualVirtualStorage
        • pywr.nodes.SeasonalVirtualStorage
        • pywr.nodes.AggregatedStorage
        • pywr.nodes.AggregatedNode
        • pywr.nodes.DelayNode
        • pywr.domains.river.Catchment
        • pywr.domains.river.Reservoir
        • pywr.domains.river.River
        • pywr.domains.river.RiverSplit
        • pywr.domains.river.RiverSplitWithGauge
        • pywr.domains.river.RiverGauge
    • Optimisation
    • Parameters
    • Recorders
    • Solvers
    • Notebook Utilities
    • Utilities
  • License
Pywr
  • »
  • Pywr reference documentation. »
  • Nodes »
  • pywr.nodes.PiecewiseLink
  • View page source

pywr.nodes.PiecewiseLink¶

class pywr.nodes.PiecewiseLink(*args, **kwargs)¶

An extension of Node that represents a non-linear Link with a piece wise cost function.

This object is intended to model situations where there is a benefit of supplying certain flow rates but beyond a fixed limit there is a change in (or zero) cost.

Parameters
max_flowiterable

A monotonic increasing list of maximum flows for the piece wise function

costiterable

A list of costs corresponding to the max_flow steps

Notes

This Node is implemented using a compound node structure like so:

        | Separate Domain         |
Output -> Sublink 0 -> Sub Output -> Input
       -> Sublink 1 ---^
       ...             |
       -> Sublink n ---|

This means routes do not directly traverse this node due to the separate domain in the middle. Instead several new routes are made for each of the sublinks and connections to the Output/Input node. The reason for this breaking of the route is to avoid an geometric increase in the number of routes when multiple PiecewiseLinks are present in the same route.

__init__(*args, **kwargs)¶

Initialise a new Node object

Parameters
modelModel

The model the node belongs to

namestring

A unique name for the node

Methods

__init__(*args, **kwargs)

Initialise a new Node object

after(timestep)

Set total flow on this link as sum of sublinks

before(self, Timestep ts)

Called at the beginning of the timestep

check()

Check the node is valid

commit(self, int scenario_index, double value)

Called once for each route the node is a member of

commit_all(self, double[)

Called once for each route the node is a member of

connect(node[, from_slot, to_slot])

Create an edge from this Node to another Node

disconnect([node, slot_name, all_slots])

Remove a connection from this Node to another Node

finish(self)

get_conversion_factor(self)

Get the conversion factor

get_cost(self, ScenarioIndex scenario_index)

Get the cost per unit flow at a given timestep

get_max_flow(self, ScenarioIndex scenario_index)

Get the maximum flow at a given timestep

get_min_flow(self, ScenarioIndex scenario_index)

Get the minimum flow at a given timestep

iter_slots([slot_name, is_connector])

Returns the object(s) wich should be connected to given slot_name

load(data, model)

reset(self)

Called at the beginning of a run

setup(self, model)

Called before the first run of the model

Attributes

allow_isolated

A property to flag whether this Node can be unconnected in a network.

comment

comment: basestring

component_attrs

components

Generator that returns all of the Components attached to the Node

conversion_factor

The conversion between inflow and outflow for the node

cost

The cost per unit flow via the node

domain

flow

Total flow via this node in the current timestep

fully_qualified_name

max_flow

The maximum flow constraint on the node

min_flow

The minimum flow constraint on the node

model

The recorder for the node, e.g.

name

Name of the node.

parent

The parent Node/Storage of this object.

prev_flow

Total flow via this node in the previous timestep

recorders

Returns a list of pywr.recorders.Recorder objects attached to this node.

virtual

virtual: ‘bool’

Next Previous

© Copyright Copyright (C) 2014-19 Joshua Arnott, James E. Tomlinson, Atkins, University of Manchester

Built with Sphinx using a theme provided by Read the Docs.