Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ED Cost Documentation #1454

Merged
merged 2 commits into from
Jun 27, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 25 additions & 15 deletions docs/technical_reference/costing/electrodialysis.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,13 @@ The following parameters are constructed for the unit on the FlowsheetCostingBlo
.. csv-table::
:header: "Description", "Symbol", "Parameter Name", "Default Value", "Units"

"description", ":math:`Symbol_{example}`", "``parameter_name``", "1", ":math:`\text{dimensionless}`"
"Membrane unit cost", ":math:`C_{mem}`", "``membrane_capital_cost``", "160", ":math:`\text{USD}_{2018}\text{/m}^2`"
"Membrane replacement factor (fraction of membrane replaced/year)", ":math:`f_{mem,\, replace}`", "``factor_membrane_replacement``", "0.2", ":math:`\text{yr}^{-1}`"
"Electrode unit cost", ":math:`C_{elec}`", "``stack_electrode_capital_cost``", "2100", ":math:`\text{USD}_{2018}\text{/m}^2`"
"Electrode replacement factor (fraction of electrode replaced/year)", ":math:`f_{elec,\, replace}`", "``factor_stack_electrode_replacement``", "0.2", ":math:`\text{yr}^{-1}`"
"Rectifier cost coefficient, a", ":math:`a_{rectifier}`", "``rectifier_cost_coeff[0]``", "508.6", ":math:`\text{dimensionless}`"
"Rectifier cost coefficient, b", ":math:`b_{rectifier}`", "``rectifier_cost_coeff[1]``", "2810", ":math:`\text{dimensionless}`"
"AC to DC conversion efficiency", ":math:`\eta_{AC-DC}`", "``ac_dc_conversion_efficiency``", "0.9", ":math:`\text{dimensionless}`"

Costing Method Variables
++++++++++++++++++++++++
Expand All @@ -19,41 +25,45 @@ The following variables are constructed on the unit block (e.g., m.fs.unit.costi
.. csv-table::
:header: "Description", "Symbol", "Variable Name", "Index", "Units"

"description", ":math:`Symbol_{example}`", "``variable_name``", "[t]", ":math:`\text{dimensionless}`"
"Cell pair number in a stack", ":math:`n_{pair}`", "``cell_pair_num``", "None", ":math:`\text{dimensionless}`"
"Cell width", ":math:`w`", "``cell_width``", "None", ":math:`\text{m}`"
"Cell length", ":math:`l`", "``cell_length``", "None", ":math:`\text{m}`"
"Power", ":math:`P`", "``power``", "[t]", ":math:`\text{kW}`"

Capital Cost Calculations
+++++++++++++++++++++++++

Describe capital costs..keep it concise where possible
Capital cost is dependent upon the cell pair number, cell width, and cell length, as shown in the equations below.

If the system has a rectifier (``has_rectifier=True``):

.. math::

C_{cap,tot} = C_{cap,example1}+C_{cap,example2}+C_{cap,other}
C_{rectifier} = b_{rectifier} + (a_{rectifier} * P / \eta_{AC-DC})

C_{cap,tot} = (C_{mem} * 2 * n_{pair} * w * l) + (C_{elec} * 2 * w * l) + C_{rectifier}

Otherwise:

.. math::

C_{cap,example1} = fill in equation for each component in total capex equation
C_{cap,tot} = (C_{mem} * 2 * n_{pair} * w * l) + (C_{elec} * 2 * w * l)


Operating Cost Calculations
+++++++++++++++++++++++++++

Describe operating/maintenance costs..keep it concise where possible
Electricity :math:`C_{elec}` is a variable operating cost based on the energy intensity :math:`E` of the unit process
(power for electrodialysis), electricity price :math:`P`, electricity flow :math:`Q`, and the plant
utilization factor :math:`f_{util}`. If a rectifier is included, the energy intensity is the power required for the rectifier.
The annual electricity costs are calculated as:

.. math::

C_{op,tot} = C_{op,example1}+C_{op,example2}+C_{op,other}

.. math::

C_{op,example1} = fill in equation for each component in total opex equation
C_{op, tot} = C_{elec} = E Q f_{util} P


Code Documentation
------------------

* :mod:`watertap.costing.unit_models.electrodialysis`

References
----------
Aim to include at least one reference in most cases, but delete this section if no references used for cost relationships/default values
10 changes: 5 additions & 5 deletions watertap/costing/unit_models/electrodialysis.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ def build_electrodialysis_cost_param_block(blk):
# The following costing itemization and values are referenced to "Desalination 452 (2019) 265–278"
blk.membrane_capital_cost = pyo.Var(
initialize=160,
doc="Membrane and capitcal costs in [US$/m^2-membrane-area]",
doc="Membrane and capital costs in [US$/m^2-membrane-area]",
units=pyo.units.USD_2018 / (pyo.units.meter**2),
)

Expand All @@ -33,7 +33,7 @@ def build_electrodialysis_cost_param_block(blk):
units=pyo.units.year**-1,
)

blk.stack_electrode_captical_cost = pyo.Var(
blk.stack_electrode_capital_cost = pyo.Var(
initialize=2100,
doc="Electrode cost in [US$/m^2-electrode-area] ",
units=pyo.units.USD_2018 / (pyo.units.meter**2),
Expand Down Expand Up @@ -102,7 +102,7 @@ def cost_electrodialysis_stack(blk):
* blk.unit_model.cell_width
* blk.unit_model.cell_length
)
+ blk.costing_package.electrodialysis.stack_electrode_captical_cost
+ blk.costing_package.electrodialysis.stack_electrode_capital_cost
* (2 * blk.unit_model.cell_width * blk.unit_model.cell_length),
to_units=blk.costing_package.base_currency,
)
Expand All @@ -121,7 +121,7 @@ def cost_electrodialysis_stack(blk):
* blk.unit_model.cell_width
* blk.unit_model.cell_length
)
+ blk.costing_package.electrodialysis.stack_electrode_captical_cost
+ blk.costing_package.electrodialysis.stack_electrode_capital_cost
* (2 * blk.unit_model.cell_width * blk.unit_model.cell_length),
to_units=blk.costing_package.base_currency,
)
Expand All @@ -138,7 +138,7 @@ def cost_electrodialysis_stack(blk):
* blk.unit_model.cell_length
)
+ blk.costing_package.electrodialysis.factor_stack_electrode_replacement
* blk.costing_package.electrodialysis.stack_electrode_captical_cost
* blk.costing_package.electrodialysis.stack_electrode_capital_cost
* (2 * blk.unit_model.cell_width * blk.unit_model.cell_length),
to_units=blk.costing_package.base_currency
/ blk.costing_package.base_period,
Expand Down
2 changes: 1 addition & 1 deletion watertap/costing/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,7 @@ def cost_rectifier(blk, power=100 * pyo.units.kW, ac_dc_conversion_efficiency=0.
)
)

# cost electicity flow
# cost electricity flow
blk.costing_package.cost_flow(blk.ac_power, "electricity")


Expand Down