Skip to content
Open
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
6 changes: 3 additions & 3 deletions docs/technical_reference/costing/clarifier.rst
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,17 @@ The following parameters are constructed for the unit on the FlowsheetCostingBlo
.. csv-table::
:header: "Description", "Symbol", "Parameter Name", "Default Value", "Units"

"**Circular clarifier**"
"**Circular clarifier** (cost method = ``cost_circular_clarifier``)"
"Capital cost A parameter :math:`^1`", ":math:`A_{circular}`", "``construction_a_parameter``", "-6e-4", ":math:`\text{USD}_{2011}\text{/ft}^4`"
"Capital cost B parameter :math:`^1`", ":math:`B_{circular}`", "``construction_b_parameter``", "98.952", ":math:`\text{USD}_{2011}\text{/ft}^2`"
"Capital cost C parameter :math:`^1`", ":math:`C_{circular}`", "``construction_c_parameter``", "191806", ":math:`\text{USD}_{2011}`"

"**Rectangular clarifier**"
"**Rectangular clarifier** (cost method = ``cost_rectangular_clarifier``)"
"Capital cost A parameter :math:`^1`", ":math:`A_{rectangular}`", "``construction_a_parameter``", "-2.9e-3", ":math:`\text{USD}_{2011}\text{/ft}^4`"
"Capital cost B parameter :math:`^1`", ":math:`B_{rectangular}`", "``construction_b_parameter``", "169.19", ":math:`\text{USD}_{2011}\text{/ft}^2`"
"Capital cost C parameter :math:`^1`", ":math:`C_{rectangular}`", "``construction_c_parameter``", "94365", ":math:`\text{USD}_{2011}`"

"**Primary clarifier**"
"**Primary clarifier** (cost method = ``cost_primary_clarifier``)"
"Capital cost A parameter :math:`^2`", ":math:`A_{primary}`", "``capital_a_parameter``", "-2.9e-3", ":math:`\text{USD}_{2021}`"
"Capital cost B parameter :math:`^2`", ":math:`B_{primary}`", "``capital_b_parameter``", "538746.398", ":math:`\text{dimensionless}`"

Expand Down
4 changes: 2 additions & 2 deletions docs/technical_reference/costing/crystallizer.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@ The following parameters are constructed for the unit on the FlowsheetCostingBlo
.. csv-table::
:header: "Description", "Symbol", "Parameter Name", "Default Value", "Units"

"**Mass-based Capital Costing**"
"**Mass-based Capital Costing** (cost method = ``cost_crystallizer_by_mass``)"
"Reference free-on-board (FOB) capital cost :math:`^1`", ":math:`Cost_{ref}`", "``fob_unit_cost``", "675000", ":math:`\text{USD}_{2007}`"
"Reference crystallizer capacity :math:`^1`", ":math:`size_{ref}`", "``ref_capacity``", "1", ":math:`\text{kg/s}`"
"Crystallizer cost exponent parameter :math:`^1`", ":math:`n`", "``ref_exponent``", "0.53", ":math:`\text{dimensionless}`"
"Installed equipment cost factor :math:`^2`", ":math:`IEC`", "``iec_percent``", "1.43", ":math:`\text{dimensionless}`"

"**Volume-based Capital Costing**"
"**Volume-based Capital Costing** (cost method = ``cost_crystallizer_by_volume``)"
"Capital cost A parameter :math:`^3`", "A", "``volume_cost``", "16320", ":math:`\text{USD}_{2007}\text{/ft}^3`"
"Capital cost B parameter :math:`^3`", "B", "``vol_basis_exponent``", "0.47", ":math:`\text{dimensionless}`"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ Default costing methods are provided for the unit models listed below. However,
pressure_exchanger
pump
reverse_osmosis
steam_ejector
stoichiometric_reactor
thickener
uv_aop
6 changes: 3 additions & 3 deletions docs/technical_reference/costing/dewatering.rst
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,15 @@ The following parameters are constructed for the unit on the FlowsheetCostingBlo
.. csv-table::
:header: "Description", "Symbol", "Parameter Name", "Default Value", "Units"

"**Centrifuge**"
"**Centrifuge** (cost method = ``cost_centrifuge``)"
"Capital cost A parameter :math:`^1`", ":math:`A_{centrifuge}`", "``capital_a_parameter``", "328.03", ":math:`\text{USD}_{2007}\text{/gal/hr}`"
"Capital cost B parameter :math:`^1`", ":math:`B_{centrifuge}`", "``capital_b_parameter``", "751295", ":math:`\text{USD}_{2007}`"

"**Filter belt press**"
"**Filter belt press** (cost method = ``cost_filter_belt_press``)"
"Capital cost A parameter :math:`^1`", ":math:`A_{fbp}`", "``capital_a_parameter``", "146.29", ":math:`\text{USD}_{2007}\text{/gal/hr}`"
"Capital cost B parameter :math:`^1`", ":math:`B_{fbp}`", "``capital_b_parameter``", "433972", ":math:`\text{USD}_{2007}`"

"**Filter plate press**"
"**Filter plate press** (cost method = ``cost_filter_plate_press``)"
"Capital cost A parameter :math:`^1`", ":math:`A_{fpp}`", "``capital_a_parameter``", "102794", ":math:`\text{USD}_{2007}\text{/gal/hr}`"
"Capital cost B parameter :math:`^1`", ":math:`B_{fpp}`", "``capital_b_parameter``", "0.4216", ":math:`\text{USD}_{2007}`"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ The following parameters are constructed for the unit on the FlowsheetCostingBlo
.. csv-table::
:header: "Description", "Symbol", "Parameter Name", "Default Value", "Units"

"Pressure exchanger unit cost", ":math:`C_{PX}`", "``pressure_exchanger_cost``", "535", ":math:`\text{USD}_{2018}\text{/m}^3\text{/hr}`"
"Pressure exchanger unit cost", ":math:`C_{PX}`", "``unit_cost``", "535", ":math:`\text{USD}_{2018}\text{/m}^3\text{/hr}`"

Costing Method Variables
++++++++++++++++++++++++
Expand Down
4 changes: 2 additions & 2 deletions docs/technical_reference/costing/heater_chiller.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ The following parameters are constructed for the unit on the FlowsheetCostingBlo
.. csv-table::
:header: "Description", "Symbol", "Parameter Name", "Default Value", "Units"

"**Electric Heater**"
"**Electric Heater** (cost method = ``cost_electric_heater``)"
"Heater unit cost", ":math:`C_{heater}`", "``unit_cost``", "0.066", ":math:`\text{USD}_{2018}\text{/W}`"
"Heat generation efficiency", ":math:`HE`", "``HE``", "0.99", ":math:`\text{dimensionless}`"

"**Chiller**"
"**Chiller** (cost method = ``cost_heater_chiller``)"
"Chiller unit cost", ":math:`C_{chiller}`", "``unit_cost``", "0.2", ":math:`\text{USD}_{2018}\text{/W}`"
"Coefficient of performance", ":math:`COP`", "``COP``", "7", ":math:`\text{dimensionless}`"

Expand Down
8 changes: 4 additions & 4 deletions docs/technical_reference/costing/ion_exchange.rst
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,10 @@ These parameters are created directly on ``m.fs.costing``.
.. csv-table::
:header: "Description", "Parameter Name", "Default Value", "Units", "Notes"

"Unit cost of NaCl", "``nacl``", "0.09", ":math:`\text{USD}_{2020}\text{/kg}`", "Assumes solid NaCl. From CatCost v 1.0.4"
"Unit cost of HCl", "``hcl``", "0.17", ":math:`\text{USD}_{2020}\text{/kg}`", "Assumes 37% solution HCl. From CatCost v 1.0.4"
"Unit cost of NaOH", "``naoh``", "0.59", ":math:`\text{USD}_{2020}\text{/kg}`", "Assumes 30% solution NaOH. From iDST"
"Unit cost of Methanol (MeOH)", "``meoh``", "3.395", ":math:`\text{USD}_{2008}\text{/kg}`", "Assumes 100% pure MeOH. From ICIS"
"Unit cost of NaCl", "``unit_cost_NaCl``", "0.09", ":math:`\text{USD}_{2020}\text{/kg}`", "Assumes solid NaCl. From CatCost v 1.0.4"
"Unit cost of HCl", "``unit_cost_HCl``", "0.17", ":math:`\text{USD}_{2020}\text{/kg}`", "Assumes 37% solution HCl. From CatCost v 1.0.4"
"Unit cost of NaOH", "``unit_cost_NaOH``", "0.59", ":math:`\text{USD}_{2020}\text{/kg}`", "Assumes 30% solution NaOH. From iDST"
"Unit cost of Methanol (MeOH)", "``unit_cost_MeOH``", "3.395", ":math:`\text{USD}_{2008}\text{/kg}`", "Assumes 100% pure MeOH. From ICIS"

Costing Method Variables
++++++++++++++++++++++++
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ The following parameters are constructed for the unit on the FlowsheetCostingBlo
:header: "Description", "Symbol", "Parameter Name", "Default Value", "Units"

"Membrane replacement factor", ":math:`f_{replace}`", "``factor_membrane_replacement``", "0.2", ":math:`\text{yr}^{-1}`"
"Membrane cost", ":math:`C_{mem}`", "``membrane_unit_cost``", "56", ":math:`\text{USD}_{2018}\text{/m}^2`"
"Membrane cost", ":math:`C_{mem}`", "``membrane_cost``", "56", ":math:`\text{USD}_{2018}\text{/m}^2`"
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should instances of membrane_cost also be replaced with unit_cost?


Costing Method Variables
++++++++++++++++++++++++
Expand Down
14 changes: 7 additions & 7 deletions docs/technical_reference/costing/mixer.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,17 @@ The following parameters are constructed for the unit on the FlowsheetCostingBlo
.. csv-table::
:header: "Description", "Symbol", "Parameter Name", "Default Value", "Units"

"**Standard mixer**"
"**Standard mixer** (cost method = `cost_default_mixer`)"
"Mixer unit cost", ":math:`C_{mix, standard}`", "``unit_cost``", "361", ":math:`\text{USD}_{2018}\text{/L/s}`"

"**NaOCl mixer**"
"Mixer unit cost", ":math:`C_{mix, NaOCl}`", "``cost``", "5.08", ":math:`\text{USD}_{2018}\text{/m}^{3}\text{/day}`"
"NaOCl cost", ":math:`C_{NaOCl}`", "``unit_cost``", "0.23", ":math:`\text{USD}_{2018}\text{/kg}`"
"**NaOCl mixer** (cost method = `cost_naocl_mixer`)"
"Mixer unit cost", ":math:`C_{mix, NaOCl}`", "``unit_cost``", "5.08", ":math:`\text{USD}_{2018}\text{/m}^{3}\text{/day}`"
"NaOCl cost", ":math:`C_{NaOCl}`", "``unit_cost_NaOCl``", "0.23", ":math:`\text{USD}_{2018}\text{/kg}`"
"NaOCl purity", ":math:`p_{NaOCl}`", "``purity``", "0.15", ":math:`\text{dimensionless}`"

"**CaOH2 mixer**"
"Mixer unit cost", ":math:`C_{mix, CaOH2}`", "``cost``", "873.911", ":math:`\text{USD}_{2018}\text{/kg/day}`"
"CaOH2 cost", ":math:`C_{CaOH2}`", "``unit_cost``", "0.12", ":math:`\text{USD}_{2018}\text{/kg}`"
"**CaOH2 mixer** (cost method = `cost_caoh2_mixer`)"
"Mixer unit cost", ":math:`C_{mix, CaOH2}`", "``unit_cost``", "873.911", ":math:`\text{USD}_{2018}\text{/kg/day}`"
"CaOH2 cost", ":math:`C_{CaOH2}`", "``unit_cost_CaOH2``", "0.12", ":math:`\text{USD}_{2018}\text{/kg}`"
"CaOH2 purity", ":math:`p_{CaOH2}`", "``purity``", "1", ":math:`\text{dimensionless}`"

Costing Method Variables
Expand Down
2 changes: 1 addition & 1 deletion docs/technical_reference/costing/pressure_exchanger.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ The following parameters are constructed for the unit on the FlowsheetCostingBlo
.. csv-table::
:header: "Description", "Symbol", "Parameter Name", "Default Value", "Units"

"Pressure exchanger unit cost", ":math:`C_{PX}`", "``pressure_exchanger_cost``", "535", ":math:`\text{USD}_{2018}\text{/m}^3\text{/hr}`"
"Pressure exchanger unit cost", ":math:`C_{PX}`", "``unit_cost``", "535", ":math:`\text{USD}_{2018}\text{/m}^3\text{/hr}`"

Costing Method Variables
++++++++++++++++++++++++
Expand Down
4 changes: 2 additions & 2 deletions docs/technical_reference/costing/pump.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ The following parameters are constructed for the unit on the FlowsheetCostingBlo
:header: "Description", "Symbol", "Parameter Name", "Default Value", "Units"

"**High-pressure pump** (cost method = ``cost_high_pressure_pump``)"
"Pump unit cost", ":math:`C_{pump}`", "``cost``", "1.908", ":math:`\text{USD}_{2018}\text{/W}`"
"Pump unit cost", ":math:`C_{pump}`", "``unit_cost``", "1.908", ":math:`\text{USD}_{2018}\text{/W}`"

"**Low-pressure pump** (cost method = ``cost_low_pressure_pump``)"
"Pump unit cost", ":math:`C_{pump}`", "``cost``", "889", ":math:`\text{USD}_{2018}\text{/L/s}`"
"Pump unit cost", ":math:`C_{pump}`", "``unit_cost``", "889", ":math:`\text{USD}_{2018}\text{/L/s}`"

Costing Method Variables
++++++++++++++++++++++++
Expand Down
47 changes: 47 additions & 0 deletions docs/technical_reference/costing/steam_ejector.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
Steam Ejector Costing Method
============================

Costing Method Parameters
+++++++++++++++++++++++++

The following parameters are constructed for the unit on the FlowsheetCostingBlock (e.g., ``m.fs.costing.thickener``) when applying the ``cost_thickener`` costing method in the ``watertap_costing_package``:

.. csv-table::
:header: "Description", "Symbol", "Parameter Name", "Default Value", "Units"

"Base cost coefficient for steam ejector", ":math:`C_{base}`", "``base_cost``", "1949", ":math:`\text{USD}_{2020}`"
"Cost scaling exponent", ":math:`C_{exponent}`", "``cost_exponent``", "0.3", ":math:`\text{dimensionless}`"
"Steam cost", ":math:`C_{steam}`", "``steam_cost``", "0.008", ":math:`\text{USD}_{2018}\text{/kg}`"

Costing Method Variables
++++++++++++++++++++++++

There are no costing method variables unique to the steam ejector.

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

Capital cost is dependent upon the steam and entrained vapor mass flow, :math:`Q`, as shown in the equation below.

.. math::

C_{cap,tot} = C_{base} * (Q_{steam} + Q_{entrained vapor}^{C_{exponent}}


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

The only operating cost associated with this steam ejector model is the cost of steam,
which is a function of the steam cost (on a mass basis), :math:`C_{steam}`, and the
mass flow of steam, :math:`Q_{steam}`, as shown in the equation below:

.. math::

C_{op, tot} = C_{steam} * Q_{steam}


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

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

4 changes: 2 additions & 2 deletions watertap/costing/unit_models/energy_recovery_device.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ def cost_energy_recovery_device(

def build_energy_recovery_device_cost_param_block(blk):

blk.pressure_exchanger_cost = pyo.Var(
blk.unit_cost = pyo.Var(
initialize=535,
doc="Pressure exchanger cost",
units=pyo.units.USD_2018 / (pyo.units.meter**3 / pyo.units.hours),
Expand All @@ -71,7 +71,7 @@ def cost_pressure_exchanger_erd(blk, cost_electricity_flow=True):
t0 = blk.flowsheet().time.first()
cost_by_flow_volume(
blk,
blk.costing_package.energy_recovery_device.pressure_exchanger_cost,
blk.costing_package.energy_recovery_device.unit_cost,
pyo.units.convert(
blk.unit_model.control_volume.properties_in[t0].flow_vol,
(pyo.units.meter**3 / pyo.units.hours),
Expand Down
16 changes: 8 additions & 8 deletions watertap/costing/unit_models/ion_exchange.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@

def build_hcl_cost_param_block(blk):

blk.cost = pyo.Param(
blk.unit_cost_HCl = pyo.Param(
mutable=True,
initialize=0.17,
doc="HCl cost", # for 37% sol'n - CatCost v 1.0.4
Expand All @@ -36,12 +36,12 @@ def build_hcl_cost_param_block(blk):
)

costing = blk.parent_block()
costing.register_flow_type("HCl", blk.cost / blk.purity)
costing.register_flow_type("HCl", blk.unit_cost_HCl / blk.purity)


def build_naoh_cost_param_block(blk):

blk.cost = pyo.Param(
blk.unit_cost_NaOH = pyo.Param(
mutable=True,
initialize=0.59,
doc="NaOH cost", # for 30% sol'n - iDST
Expand All @@ -56,12 +56,12 @@ def build_naoh_cost_param_block(blk):
)

costing = blk.parent_block()
costing.register_flow_type("NaOH", blk.cost / blk.purity)
costing.register_flow_type("NaOH", blk.unit_cost_NaOH / blk.purity)


def build_meoh_cost_param_block(blk):
# MeOH = Methanol
blk.cost = pyo.Param(
blk.unit_cost_MeOH = pyo.Param(
mutable=True,
initialize=3.395,
doc="MeOH cost", # for 100% purity - ICIS
Expand All @@ -76,12 +76,12 @@ def build_meoh_cost_param_block(blk):
)

costing = blk.parent_block()
costing.register_flow_type("MeOH", blk.cost / blk.purity)
costing.register_flow_type("MeOH", blk.unit_cost_MeOH / blk.purity)


def build_nacl_cost_param_block(blk):

blk.cost = pyo.Param(
blk.unit_cost_NaCl = pyo.Param(
mutable=True,
initialize=0.09,
doc="NaCl cost", # for solid, 100% purity - CatCost
Expand All @@ -96,7 +96,7 @@ def build_nacl_cost_param_block(blk):
)

costing = blk.parent_block()
costing.register_flow_type("NaCl", blk.cost / blk.purity)
costing.register_flow_type("NaCl", blk.unit_cost_NaCl / blk.purity)


def build_ion_exhange_cost_param_block(blk):
Expand Down
8 changes: 4 additions & 4 deletions watertap/costing/unit_models/mixer.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ def build_naocl_mixer_cost_param_block(blk):

def build_naocl_cost_param_block(blk):

blk.cost = pyo.Param(
blk.unit_cost_NaOCl = pyo.Param(
initialize=0.23,
doc="NaOCl cost",
units=pyo.units.USD_2018 / pyo.units.kg,
Expand All @@ -100,7 +100,7 @@ def build_naocl_cost_param_block(blk):
)

costing = blk.parent_block()
costing.register_flow_type("NaOCl", blk.cost / blk.purity)
costing.register_flow_type("NaOCl", blk.unit_cost_NaOCl / blk.purity)


@register_costing_parameter_block(
Expand Down Expand Up @@ -133,7 +133,7 @@ def cost_naocl_mixer(blk, dosing_rate):


def build_caoh2_cost_param_block(blk):
blk.cost = pyo.Param(
blk.unit_cost_CaOH2 = pyo.Param(
mutable=True,
initialize=0.12,
doc="CaOH2 cost",
Expand All @@ -147,7 +147,7 @@ def build_caoh2_cost_param_block(blk):
)

costing = blk.parent_block()
costing.register_flow_type("CaOH2", blk.cost / blk.purity)
costing.register_flow_type("CaOH2", blk.unit_cost_CaOH2 / blk.purity)


def build_caoh2_mixer_cost_param_block(blk):
Expand Down
4 changes: 2 additions & 2 deletions watertap/costing/unit_models/pressure_exchanger.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

def build_pressure_exchanger_cost_param_block(blk):

blk.cost = pyo.Var(
blk.unit_cost = pyo.Var(
initialize=535,
doc="Pressure exchanger cost",
units=pyo.units.USD_2018 / (pyo.units.meter**3 / pyo.units.hours),
Expand All @@ -35,7 +35,7 @@ def cost_pressure_exchanger(blk):
"""
cost_by_flow_volume(
blk,
blk.costing_package.pressure_exchanger.cost,
blk.costing_package.pressure_exchanger.unit_cost,
pyo.units.convert(
blk.unit_model.feed_side.properties_in[0].flow_vol,
(pyo.units.meter**3 / pyo.units.hours),
Expand Down
8 changes: 4 additions & 4 deletions watertap/costing/unit_models/pump.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ def cost_pump(blk, pump_type=PumpType.high_pressure, cost_electricity_flow=True)

def build_high_pressure_pump_cost_param_block(blk):

blk.cost = pyo.Var(
blk.unit_cost = pyo.Var(
initialize=53 / 1e5 * 3600, # 1.908
bounds=(0, None),
doc="High pressure pump cost",
Expand Down Expand Up @@ -80,7 +80,7 @@ def cost_high_pressure_pump(blk, cost_electricity_flow=True):
expr=blk.capital_cost
== blk.cost_factor
* pyo.units.convert(
blk.costing_package.high_pressure_pump.cost
blk.costing_package.high_pressure_pump.unit_cost
* pyo.units.convert(blk.unit_model.work_mechanical[t0], pyo.units.W),
to_units=blk.costing_package.base_currency,
)
Expand All @@ -102,7 +102,7 @@ def cost_high_pressure_pump(blk, cost_electricity_flow=True):

def build_low_pressure_pump_cost_param_block(blk):

blk.cost = pyo.Var(
blk.unit_cost = pyo.Var(
initialize=889,
doc="Low pressure pump cost",
units=pyo.units.USD_2018 / (pyo.units.liter / pyo.units.second),
Expand All @@ -126,7 +126,7 @@ def cost_low_pressure_pump(blk, cost_electricity_flow=True):
t0 = blk.flowsheet().time.first()
cost_by_flow_volume(
blk,
blk.costing_package.low_pressure_pump.cost,
blk.costing_package.low_pressure_pump.unit_cost,
pyo.units.convert(
blk.unit_model.control_volume.properties_in[t0].flow_vol,
(pyo.units.m**3 / pyo.units.s),
Expand Down
4 changes: 2 additions & 2 deletions watertap/flowsheets/dye_desalination/dye_desalination_ui.py
Original file line number Diff line number Diff line change
Expand Up @@ -284,7 +284,7 @@ def export_variables(flowsheet=None, exports=None, build_options=None, **kwargs)
input_category="RO costing",
is_output=False,
)
v = fs.ro_costing.high_pressure_pump.cost
v = fs.ro_costing.high_pressure_pump.unit_cost
exports.add(
obj=v,
name="RO unit pump cost",
Expand All @@ -296,7 +296,7 @@ def export_variables(flowsheet=None, exports=None, build_options=None, **kwargs)
input_category="RO costing",
is_output=False,
)
v = fs.ro_costing.pressure_exchanger.cost
v = fs.ro_costing.pressure_exchanger.unit_cost
exports.add(
obj=v,
name=v.doc,
Expand Down
Loading
Loading