watertap.flowsheets.flex_desal package
Submodules
watertap.flowsheets.flex_desal.flowsheet module
This module contains functions needed for the construction of flexible desalination flowsheet
- watertap.flowsheets.flex_desal.flowsheet.add_delayed_startup_constraints(m)[source]
Adds the delayed startup constraints to the model
- watertap.flowsheets.flex_desal.flowsheet.add_demand_and_fixed_costs(m)[source]
Adds variables and expressions/constraints for demand and fixed costs
- watertap.flowsheets.flex_desal.flowsheet.add_operational_cost_expressions(blk, params: FlexDesalParams)[source]
Adds cost expressions to the flowsheet
- watertap.flowsheets.flex_desal.flowsheet.add_useful_expressions(m)[source]
Defines useful expressions for custom objective functions
- watertap.flowsheets.flex_desal.flowsheet.build_desal_flowsheet(blk, params: FlexDesalParams)[source]
Builds a flowsheet instance of the entire desalination process
- Parameters:
blk (Block) – Pyomo Block instance
params (object) – Object containing model parameters
watertap.flowsheets.flex_desal.params module
This module contains the default values of all the required parameters.
- class watertap.flowsheets.flex_desal.params.Battery(energy_capacity: float = 0, power_capacity: float = 50, efficiency: float = 0.86, initial_soc: float = 0.5, minimum_soc: float = 0.2, maximum_soc: float = 0.95)[source]
Bases:
objectParameters for the battery
- __init__(energy_capacity: float = 0, power_capacity: float = 50, efficiency: float = 0.86, initial_soc: float = 0.5, minimum_soc: float = 0.2, maximum_soc: float = 0.95) None
- class watertap.flowsheets.flex_desal.params.BrineDischargeParams(energy_intensity: float = 0.1, allow_shutdown: bool = False, leakage_fraction: float = 0, minimum_flowrate: float | None = None, nominal_flowrate: float | None = None, maximum_flowrate: float | None = None, nominal_recovery: float | None = None, minimum_recovery: float | None = None, maximum_recovery: float | None = None, minimum_uptime: int | None = None, minimum_downtime: int | None = None, startup_delay: int | None = None)[source]
Bases:
UnitParamsParameters for the brine discharge unit
- __init__(energy_intensity: float = 0.1, allow_shutdown: bool = False, leakage_fraction: float = 0, minimum_flowrate: float | None = None, nominal_flowrate: float | None = None, maximum_flowrate: float | None = None, nominal_recovery: float | None = None, minimum_recovery: float | None = None, maximum_recovery: float | None = None, minimum_uptime: int | None = None, minimum_downtime: int | None = None, startup_delay: int | None = None) None
- class watertap.flowsheets.flex_desal.params.FlexDesalParams(start_date: str = '2022-07-05 00:00:00', end_date: str = '2022-07-06 00:00:00', timestep_hours: float = 0.25, product_water_price: float = 0, fixed_monthly_cost: float = 766000, customer_rate: float = 100, constrain_to_baseline_production: bool = False, curtailment_fraction: float = 0.0, annual_production_AF: float = 3125, production_constraint_to_objective: bool = False, production_constraint_penalty: float = 0.6, emissions_cost: float = 0, include_demand_response: bool = False, include_battery: bool = False, include_onsite_solar: bool = False, onsite_capacity: float = 0)[source]
Bases:
objectParameters for flexible desalination
- __init__(start_date: str = '2022-07-05 00:00:00', end_date: str = '2022-07-06 00:00:00', timestep_hours: float = 0.25, product_water_price: float = 0, fixed_monthly_cost: float = 766000, customer_rate: float = 100, constrain_to_baseline_production: bool = False, curtailment_fraction: float = 0.0, annual_production_AF: float = 3125, production_constraint_to_objective: bool = False, production_constraint_penalty: float = 0.6, emissions_cost: float = 0, include_demand_response: bool = False, include_battery: bool = False, include_onsite_solar: bool = False, onsite_capacity: float = 0) None
- class watertap.flowsheets.flex_desal.params.IntakeParams(energy_intensity: float = 0.157121734, allow_shutdown: bool = False, leakage_fraction: float = 0, minimum_flowrate: float = 1063.5, nominal_flowrate: float = 1063.5, maximum_flowrate: float = 1063.5, nominal_recovery: float | None = None, minimum_recovery: float | None = None, maximum_recovery: float | None = None, minimum_uptime: int | None = None, minimum_downtime: int | None = None, startup_delay: int | None = None)[source]
Bases:
UnitParamsParameters for the intake unit
- __init__(energy_intensity: float = 0.157121734, allow_shutdown: bool = False, leakage_fraction: float = 0, minimum_flowrate: float = 1063.5, nominal_flowrate: float = 1063.5, maximum_flowrate: float = 1063.5, nominal_recovery: float | None = None, minimum_recovery: float | None = None, maximum_recovery: float | None = None, minimum_uptime: int | None = None, minimum_downtime: int | None = None, startup_delay: int | None = None) None
- class watertap.flowsheets.flex_desal.params.PosttreatmentParams(energy_intensity: float = 0.41, allow_shutdown: bool = False, leakage_fraction: float = 0, minimum_flowrate: float | None = None, nominal_flowrate: float | None = None, maximum_flowrate: float | None = None, nominal_recovery: float | None = None, minimum_recovery: float | None = None, maximum_recovery: float | None = None, minimum_uptime: int | None = None, minimum_downtime: int | None = None, startup_delay: int | None = None)[source]
Bases:
UnitParamsParameters for the posttreatment unit
- __init__(energy_intensity: float = 0.41, allow_shutdown: bool = False, leakage_fraction: float = 0, minimum_flowrate: float | None = None, nominal_flowrate: float | None = None, maximum_flowrate: float | None = None, nominal_recovery: float | None = None, minimum_recovery: float | None = None, maximum_recovery: float | None = None, minimum_uptime: int | None = None, minimum_downtime: int | None = None, startup_delay: int | None = None) None
- class watertap.flowsheets.flex_desal.params.PretreatmentParams(energy_intensity: float = 0.01, allow_shutdown: bool = False, leakage_fraction: float = 0, minimum_flowrate: float | None = None, nominal_flowrate: float | None = None, maximum_flowrate: float | None = None, nominal_recovery: float | None = None, minimum_recovery: float | None = None, maximum_recovery: float | None = None, minimum_uptime: int | None = None, minimum_downtime: int = 0, startup_delay: int = 0)[source]
Bases:
UnitParamsParameters for the pretreatment unit
- __init__(energy_intensity: float = 0.01, allow_shutdown: bool = False, leakage_fraction: float = 0, minimum_flowrate: float | None = None, nominal_flowrate: float | None = None, maximum_flowrate: float | None = None, nominal_recovery: float | None = None, minimum_recovery: float | None = None, maximum_recovery: float | None = None, minimum_uptime: int | None = None, minimum_downtime: int = 0, startup_delay: int = 0) None
- class watertap.flowsheets.flex_desal.params.ROParams(energy_intensity: float | None = None, allow_shutdown: bool = True, leakage_fraction: float | None = None, minimum_flowrate: float | None = None, nominal_flowrate: float = 337.67, maximum_flowrate: float | None = None, nominal_recovery: float = 0.465, minimum_recovery: float = 0.4, maximum_recovery: float = 0.55, minimum_uptime: int = 1, minimum_downtime: int = 4, startup_delay: int = 8, num_ro_skids: int = 3, minimum_operating_skids: int = 2, allow_variable_recovery: bool = False)[source]
Bases:
UnitParamsParameters for the RO unit
- __init__(energy_intensity: float | None = None, allow_shutdown: bool = True, leakage_fraction: float | None = None, minimum_flowrate: float | None = None, nominal_flowrate: float = 337.67, maximum_flowrate: float | None = None, nominal_recovery: float = 0.465, minimum_recovery: float = 0.4, maximum_recovery: float = 0.55, minimum_uptime: int = 1, minimum_downtime: int = 4, startup_delay: int = 8, num_ro_skids: int = 3, minimum_operating_skids: int = 2, allow_variable_recovery: bool = False) None
- get_energy_intensity_bounds(recovery_lb=None, recovery_ub=None)[source]
Returns the bounds on energy intensity based on the bounds of recovery
- get_optimum_energy_intensity(recovery_lb, recovery_ub)[source]
Returns the optimum energy intensity if it exists inside the interval. Returns None if the optimum is at the bounds.
- property surrogate_coeffs
Returs the coefficients of the surrogate model as a dictionary
- property surrogate_type
Returns the surrogate type for RO energy intensity
- class watertap.flowsheets.flex_desal.params.UnitParams(energy_intensity: float | None = None, allow_shutdown: bool = False, leakage_fraction: float | None = None, minimum_flowrate: float | None = None, nominal_flowrate: float | None = None, maximum_flowrate: float | None = None, nominal_recovery: float | None = None, minimum_recovery: float | None = None, maximum_recovery: float | None = None, minimum_uptime: int | None = None, minimum_downtime: int | None = None, startup_delay: int | None = None)[source]
Bases:
objectAbstract dataclass for parameters of all units
- __init__(energy_intensity: float | None = None, allow_shutdown: bool = False, leakage_fraction: float | None = None, minimum_flowrate: float | None = None, nominal_flowrate: float | None = None, maximum_flowrate: float | None = None, nominal_recovery: float | None = None, minimum_recovery: float | None = None, maximum_recovery: float | None = None, minimum_uptime: int | None = None, minimum_downtime: int | None = None, startup_delay: int | None = None) None
- property get_leakage_fraction
Returns the leakage fraction value
- property get_recovery
Returns the recovery value
watertap.flowsheets.flex_desal.unit_models module
This module contains unit models needed for flexible desalination analysis.
- watertap.flowsheets.flex_desal.unit_models.brine_discharge_operation_model(blk, params: FlexDesalParams)[source]
Builds operation model for the brine discharge unit
- Parameters:
blk (OperationModel) – IDAES OperationModel instance
params (object) – Input parameters needed for the model
- watertap.flowsheets.flex_desal.unit_models.intake_operation_model(blk, params: IntakeParams)[source]
Builds operation model for the intake
- Parameters:
blk (OperationModel) – IDAES OperationModel instance
params (object) – Input parameters needed for the model
- watertap.flowsheets.flex_desal.unit_models.posttreatment_operation_model(blk, params: FlexDesalParams)[source]
Builds operation model for the posttreatment unit
- Parameters:
blk (OperationModel) – IDAES OperationModel instance
params (object) – Input parameters needed for the model
- watertap.flowsheets.flex_desal.unit_models.power_generation_operation_model(blk, params: FlexDesalParams)[source]
Builds the operation model for onsite power generation
- Parameters:
blk (OperationModel) – Instance of IDAES OperationModel
design_blk (DesignModel) – Design model containing information on the peak capacity
- watertap.flowsheets.flex_desal.unit_models.pretreatment_operation_model(blk, params: PretreatmentParams)[source]
Builds operation model for the pretreatment unit
- Parameters:
blk (OperationModel) – IDAES OperationModel instance
params (object) – Input parameters needed for the model
watertap.flowsheets.flex_desal.utils module
This module contains some utility functions
- watertap.flowsheets.flex_desal.utils.fix_recovery(m, recovery)[source]
Modifies the model for the fixed recovery case
- watertap.flowsheets.flex_desal.utils.get_baseline_model(m)[source]
Returns a baseline model from the given model