pywrdrb.parameters.FfmpNjRunningAvgParameter#

class pywrdrb.parameters.FfmpNjRunningAvgParameter(model, node, max_avg_delivery, max_daily_delivery, drought_factor, **kwargs)#

Enforces NJ FFMP delivery limits using a drought-adjusted running average.

This parameter tracks delivery volumes from a NJ node (typically a reservoir or intake) and dynamically adjusts allowable delivery based on drought factor conditions. It ensures compliance with both long-term average and daily maximum delivery constraints, resetting when drought levels change or on the first of each month under normal conditions.

node#

Node from which water is being delivered.

Type:

pywr.Node

max_avg_delivery#

Long-term average daily delivery volume (base level, before drought adjustment).

Type:

float

max_daily_delivery#

Maximum allowable delivery volume for a single day.

Type:

float

drought_factor#

Multiplier reflecting drought status. Varies over time and by scenario.

Type:

pywr.Parameter

max_delivery#

Current remaining delivery volume allowed for each scenario.

Type:

numpy.ndarray

current_drought_factor#

Latest drought factor values, one per scenario.

Type:

numpy.ndarray

previous_drought_factor#

Drought factor values from the previous timestep, one per scenario.

Type:

numpy.ndarray

timestep#

Length of each timestep (e.g., 1 day).

Type:

int

datetime#

Internal tracking of current model date.

Type:

pandas.Timestamp

setup()#

Allocate arrays to store per-scenario delivery limits and drought factors.

reset()#

Initialize delivery limits and drought factors at model start.

value(timestep, scenario_index)#

Return the remaining delivery volume for a given scenario.

after()#

Update delivery limits after each timestep, accounting for flow and drought factor.

load(model, data)#

Load and instantiate this parameter using model configuration data.

__init__(model, node, max_avg_delivery, max_daily_delivery, drought_factor, **kwargs)#

Initialize FfmpNjRunningAvgParameter.

Parameters:
  • model (pywr.Model) – The Pywr model instance.

  • node (pywr.Node) – Node from which water is being delivered.

  • max_avg_delivery (pywr.parameters.ConstantParameter) – Long-term average daily delivery (unadjusted by drought).

  • max_daily_delivery (pywr.parameters.ConstantParameter) – Maximum allowable daily delivery.

  • drought_factor (pywr.Parameter) – Drought adjustment multiplier that varies over time.

  • **kwargs – Additional keyword arguments passed to the base Parameter class.

Notes

The delivery logic accounts for drought level transitions and applies caps on both minimum (0) and maximum (daily limit) allowed deliveries.

Methods

__init__(model, node, max_avg_delivery, ...)

Initialize FfmpNjRunningAvgParameter.

after()

Update delivery budgets based on flow and drought factor changes.

before(self)

finish(self)

get_all_values(self)

get_constant_value(self)

Return a constant value.

get_double_lower_bounds(self)

get_double_upper_bounds(self)

get_double_variables(self)

get_integer_lower_bounds(self)

get_integer_upper_bounds(self)

get_integer_variables(self)

get_value(self, ScenarioIndex scenario_index)

load(model, data)

Load the FfmpNjRunningAvgParameter from a model config dictionary.

register(cls)

reset()

Reset delivery limits and drought factors at the start of the simulation.

set_double_variables(self, double[)

set_integer_variables(self, int[)

setup()

Allocate arrays to store delivery volume and drought factors per scenario.

unregister(cls)

value(timestep, scenario_index)

Return the delivery budget remaining for the specified scenario.

Attributes

children

comment

str

double_size

'int'

integer_size

'int'

is_constant

is_variable

'bool'

model

name

parents

size

tags

dict