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_flowsiterable
A monotonic increasing list of maximum flows for the piece wise function
- costsiterable
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__(model, nsteps, *args, **kwargs)
Initialise a new Node object
- Parameters:
- modelModel
The model the node belongs to
- namestring
A unique name for the node
Methods
__init__
(model, nsteps, *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
finalise_load
()Finish loading a node by converting parameter name references to instance references.
finish
(self)get_all_cost
(self, double[)get_all_max_flow
(self, double[)get_all_min_flow
(self, double[)get_constant_max_flow
(self)Returns max_flow value if it is a constant parameter or fixed value otherwise returns NaN.
get_constant_min_flow
(self)Returns min_flow value if it is a constant parameter or fixed value otherwise returns NaN.
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_fixed_max_flow
(self)Returns max_flow value if it is fixed value otherwise returns NaN.
get_fixed_min_flow
(self)Returns min_flow value if it is a fixed value otherwise returns NaN.
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
pre_load
(model, data)Create a node instance from data.
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
costs
domain
flow
Total flow via this node in the current timestep
fully_qualified_name
has_constant_flows
Returns true if both min_flow and max_flow are literal constants or "constant" Parameters.
has_fixed_cost
Returns true if cost is not a Parameter.
has_fixed_flows
Returns true if both min_flow and max_flow are not Parameters.
max_flow
The maximum flow constraint on the node
max_flows
min_flow
The minimum flow constraint on the node
model
The recorder for the node, e.g. a NumpyArrayRecorder.
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'