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