From ca5c6ec770093c0ad53fd7c50c6aaa2eb5cadfe2 Mon Sep 17 00:00:00 2001 From: MarcusHolly <96305519+MarcusHolly@users.noreply.github.com> Date: Mon, 10 Jun 2024 13:08:16 -0400 Subject: [PATCH] Delete Simple IEDO GUI Flowsheets (#1417) --- setup.py | 13 - .../GLSD_anaerobic_digestion_ui.png | Bin 8939 -> 0 bytes .../GLSD_anaerobic_digestion_ui.py | 452 ------- .../amo_1575_hrcs/hrcs_ui.png | Bin 24009 -> 0 bytes .../amo_1575_hrcs/hrcs_ui.py | 788 ----------- .../amo_1575_magprex/magprex_ui.png | Bin 17320 -> 0 bytes .../amo_1575_magprex/magprex_ui.py | 722 ---------- .../amo_1595_ui.png | Bin 14105 -> 0 bytes .../amo_1595_ui.py | 835 ------------ .../amo_1690/amo_1690_ui.png | Bin 16642 -> 0 bytes .../amo_1690/amo_1690_ui.py | 934 ------------- .../biomembrane_filtration_ui.png | Bin 15983 -> 0 bytes .../biomembrane_filtration_ui.py | 685 ---------- .../electrochemical_nutrient_removal_ui.png | Bin 40318 -> 0 bytes .../electrochemical_nutrient_removal_ui.py | 569 -------- .../groundwater_treatment_ui.png | Bin 15737 -> 0 bytes .../groundwater_treatment_ui.py | 753 ----------- .../metab/metab.py | 36 - .../metab/metab_ui.png | Bin 98085 -> 0 bytes .../metab/metab_ui.py | 917 ------------- .../peracetic_acid_disinfection_ui.png | Bin 12629 -> 0 bytes .../peracetic_acid_disinfection_ui.py | 490 ------- .../suboxic_ASM_ui.png | Bin 28265 -> 0 bytes .../suboxic_ASM_ui.py | 566 -------- .../supercritical_sludge_to_gas_ui.png | Bin 45638 -> 0 bytes .../supercritical_sludge_to_gas_ui.py | 636 --------- .../swine_wwt/swine_wwt_ui.png | Bin 47718 -> 0 bytes .../swine_wwt/swine_wwt_ui.py | 1182 ----------------- watertap/ui/tests/test_fsapi.py | 6 +- 29 files changed, 3 insertions(+), 9581 deletions(-) delete mode 100644 watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/GLSD_anaerobic_digester/GLSD_anaerobic_digestion_ui.png delete mode 100644 watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/GLSD_anaerobic_digester/GLSD_anaerobic_digestion_ui.py delete mode 100644 watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/amo_1575_hrcs/hrcs_ui.png delete mode 100644 watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/amo_1575_hrcs/hrcs_ui.py delete mode 100644 watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/amo_1575_magprex/magprex_ui.png delete mode 100644 watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/amo_1575_magprex/magprex_ui.py delete mode 100644 watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/amo_1595_photothermal_membrane_candoP/amo_1595_ui.png delete mode 100644 watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/amo_1595_photothermal_membrane_candoP/amo_1595_ui.py delete mode 100644 watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/amo_1690/amo_1690_ui.png delete mode 100644 watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/amo_1690/amo_1690_ui.py delete mode 100644 watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/biomembrane_filtration/biomembrane_filtration_ui.png delete mode 100644 watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/biomembrane_filtration/biomembrane_filtration_ui.py delete mode 100644 watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/electrochemical_nutrient_removal/electrochemical_nutrient_removal_ui.png delete mode 100644 watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/electrochemical_nutrient_removal/electrochemical_nutrient_removal_ui.py delete mode 100644 watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/groundwater_treatment/groundwater_treatment_ui.png delete mode 100644 watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/groundwater_treatment/groundwater_treatment_ui.py delete mode 100644 watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/metab/metab_ui.png delete mode 100644 watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/metab/metab_ui.py delete mode 100644 watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/peracetic_acid_disinfection/peracetic_acid_disinfection_ui.png delete mode 100644 watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/peracetic_acid_disinfection/peracetic_acid_disinfection_ui.py delete mode 100644 watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/suboxic_activated_sludge_process/suboxic_ASM_ui.png delete mode 100644 watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/suboxic_activated_sludge_process/suboxic_ASM_ui.py delete mode 100644 watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/supercritical_sludge_to_gas/supercritical_sludge_to_gas_ui.png delete mode 100644 watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/supercritical_sludge_to_gas/supercritical_sludge_to_gas_ui.py delete mode 100644 watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/swine_wwt/swine_wwt_ui.png delete mode 100644 watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/swine_wwt/swine_wwt_ui.py diff --git a/setup.py b/setup.py index 52faf5a767..9bdfe9e265 100644 --- a/setup.py +++ b/setup.py @@ -153,20 +153,7 @@ "nf_with_bypass = watertap.examples.flowsheets.nf_dspmde.nf_with_bypass_ui", "bsm2 = watertap.examples.flowsheets.case_studies.full_water_resource_recovery_facility.BSM2_ui", "bsm2_P_extension = watertap.examples.flowsheets.case_studies.full_water_resource_recovery_facility.BSM2_P_extension_ui", - "metab = watertap.examples.flowsheets.case_studies.wastewater_resource_recovery.metab.metab_ui", - "suboxic_ASM = watertap.examples.flowsheets.case_studies.wastewater_resource_recovery.suboxic_activated_sludge_process.suboxic_ASM_ui", - "Magprex = watertap.examples.flowsheets.case_studies.wastewater_resource_recovery.amo_1575_magprex.magprex_ui", - "biomembrane_filtration = watertap.examples.flowsheets.case_studies.wastewater_resource_recovery.biomembrane_filtration.biomembrane_filtration_ui", - "ENR = watertap.examples.flowsheets.case_studies.wastewater_resource_recovery.electrochemical_nutrient_removal.electrochemical_nutrient_removal_ui", - "CANDO_P = watertap.examples.flowsheets.case_studies.wastewater_resource_recovery.amo_1595_photothermal_membrane_candoP.amo_1595_ui", - "supercritical_sludge_to_gas = watertap.examples.flowsheets.case_studies.wastewater_resource_recovery.supercritical_sludge_to_gas.supercritical_sludge_to_gas_ui", - "PAA = watertap.examples.flowsheets.case_studies.wastewater_resource_recovery.peracetic_acid_disinfection.peracetic_acid_disinfection_ui", - "AMO 1690 = watertap.examples.flowsheets.case_studies.wastewater_resource_recovery.amo_1690.amo_1690_ui", - "HRCS = watertap.examples.flowsheets.case_studies.wastewater_resource_recovery.amo_1575_hrcs.hrcs_ui", - "groundwater_treatment = watertap.examples.flowsheets.case_studies.wastewater_resource_recovery.groundwater_treatment.groundwater_treatment_ui", "dye_desalination = watertap.examples.flowsheets.case_studies.wastewater_resource_recovery.dye_desalination.dye_desalination_ui", - "swine_wwt = watertap.examples.flowsheets.case_studies.wastewater_resource_recovery.swine_wwt.swine_wwt_ui", - "GLSD anaerobic digestion = watertap.examples.flowsheets.case_studies.wastewater_resource_recovery.GLSD_anaerobic_digester.GLSD_anaerobic_digestion_ui", "mvc = watertap.examples.flowsheets.mvc.mvc_single_stage_ui", "RO = watertap.examples.flowsheets.RO_with_energy_recovery.RO_with_energy_recovery_ui", "OARO = watertap.examples.flowsheets.oaro.oaro_multi_ui", diff --git a/watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/GLSD_anaerobic_digester/GLSD_anaerobic_digestion_ui.png b/watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/GLSD_anaerobic_digester/GLSD_anaerobic_digestion_ui.png deleted file mode 100644 index 56426fd6eb076cb25309a0ea0779837fe6e3d074..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8939 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 diff --git a/watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/GLSD_anaerobic_digester/GLSD_anaerobic_digestion_ui.py b/watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/GLSD_anaerobic_digester/GLSD_anaerobic_digestion_ui.py deleted file mode 100644 index 89a486e042..0000000000 --- a/watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/GLSD_anaerobic_digester/GLSD_anaerobic_digestion_ui.py +++ /dev/null @@ -1,452 +0,0 @@ -################################################################################# -# WaterTAP Copyright (c) 2020-2024, The Regents of the University of California, -# through Lawrence Berkeley National Laboratory, Oak Ridge National Laboratory, -# National Renewable Energy Laboratory, and National Energy Technology -# Laboratory (subject to receipt of any required approvals from the U.S. Dept. -# of Energy). All rights reserved. -# -# Please see the files COPYRIGHT.md and LICENSE.md for full copyright and license -# information, respectively. These files are also available online at the URL -# "https://github.com/watertap-org/watertap/" -################################################################################# -from watertap.ui.fsapi import FlowsheetInterface -from watertap.core.util.initialization import assert_degrees_of_freedom -from watertap.examples.flowsheets.case_studies.wastewater_resource_recovery.GLSD_anaerobic_digester.GLSD_anaerobic_digestion import ( - build, - set_operating_conditions, - initialize_system, - solve, - add_costing, -) -from pyomo.environ import units as pyunits, assert_optimal_termination -from pyomo.util.check_units import assert_units_consistent - - -def export_to_ui(): - return FlowsheetInterface( - name="GLSD Anaerobic Digestion", - do_export=export_variables, - do_build=build_flowsheet, - do_solve=solve_flowsheet, - ) - - -def export_variables(flowsheet=None, exports=None, build_options=None, **kwargs): - fs = flowsheet - # --- Input data --- - # Feed conditions - exports.add( - obj=fs.feed.flow_vol[0], - name="Volumetric flow rate", - ui_units=pyunits.m**3 / pyunits.hr, - display_units="m3/h", - rounding=1, - description="Inlet volumetric flow rate", - is_input=True, - input_category="Feed", - is_output=True, - output_category="Feed", - ) - exports.add( - obj=fs.feed.conc_mass_comp[0, "tss"], - name="TSS concentration", - ui_units=pyunits.g / pyunits.L, - display_units="g/L", - rounding=1, - description="Inlet total suspended solids (TSS) concentration", - is_input=True, - input_category="Feed", - is_output=True, - output_category="Feed", - ) - - # Unit model data, anaerobic digester - exports.add( - obj=fs.AD.recovery_frac_mass_H2O[0], - name="Water recovery", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=2, - description="Water recovery [g-H2O treated/g-H2O inlet]", - is_input=True, - input_category="Anaerobic digester", - is_output=False, - ) - exports.add( - obj=fs.AD.reaction_conversion[0, "tss_reaction"], - name="TSS conversion", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=2, - description="TSS conversion [g-TSS reacted/g-TSS inlet]", - is_input=True, - input_category="Anaerobic digester", - is_output=False, - ) - exports.add( - obj=fs.AD.generation_ratio["tss_reaction", "methane"], - name="CH4 conversion ratio", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=4, - description="CH4 mass conversion ratio with respect to TSS [g-CH4 produced/g-TSS" - " reacted]", - is_input=True, - input_category="Anaerobic digester", - is_output=False, - ) - exports.add( - obj=fs.AD.generation_ratio["tss_reaction", "carbon_dioxide"], - name="CO2 conversion ratio", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=4, - description="CO2 mass conversion ratio with respect to TSS [g-CO2 produced/g-TSS" - " reacted]", - is_input=True, - input_category="Anaerobic digester", - is_output=False, - ) - exports.add( - obj=fs.AD.generation_ratio["tss_reaction", "nitrogen"], - name="N2 conversion ratio", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=4, - description="N2 mass conversion ratio with respect to TSS [g-N2 produced/g-TSS" - " reacted]", - is_input=True, - input_category="Anaerobic digester", - is_output=False, - ) - exports.add( - obj=fs.AD.generation_ratio["tss_reaction", "oxygen"], - name="O2 conversion ratio", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=4, - description="O2 mass conversion ratio with respect to TSS [g-O2 produced/g-TSS" - " reacted]", - is_input=True, - input_category="Anaerobic digester", - is_output=False, - ) - exports.add( - obj=fs.AD.HRT, - name="HRT", - ui_units=pyunits.hr, - display_units="h", - rounding=0, - description="Hydraulic retention time", - is_input=True, - input_category="Anaerobic digester", - is_output=False, - ) - exports.add( - obj=fs.AD.energy_electric_flow_vol_inlet, - name="Specific power", - ui_units=pyunits.kWh / pyunits.m**3, - display_units="kWh/m3", - rounding=2, - description="Specific power relating the power to the inlet flow", - is_input=True, - input_category="Anaerobic digester", - is_output=False, - ) - - # System costing - exports.add( - obj=fs.costing.utilization_factor, - name="Utilization factor", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=2, - description="Utilization factor - [annual use hours/total hours in year]", - is_input=True, - input_category="System costing", - is_output=False, - ) - exports.add( - obj=fs.costing.TIC, - name="Practical investment factor", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=1, - description="Practical investment factor - [total investment cost/direct " - "capital costs]", - is_input=True, - input_category="System costing", - is_output=False, - ) - exports.add( - obj=fs.costing.plant_lifetime, - name="Plant lifetime", - ui_units=pyunits.year, - display_units="years", - rounding=1, - description="Plant lifetime", - is_input=True, - input_category="System costing", - is_output=False, - ) - exports.add( - obj=fs.costing.wacc, - name="Discount rate", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=2, - description="Discount rate used in calculating the capital annualization", - is_input=True, - input_category="System costing", - is_output=False, - ) - exports.add( - obj=fs.costing.maintenance_costs_percent_FCI, - name="Fixed operating cost factor", - ui_units=1 / pyunits.year, - display_units="fraction/year", - rounding=2, - description="Fixed operating cost factor - [annual fixed operating cost/total " - "investment cost]", - is_input=True, - input_category="System costing", - is_output=False, - ) - exports.add( - obj=fs.costing.electricity_cost, - name="Electricity cost", - ui_units=fs.costing.base_currency / pyunits.kWh, - display_units="$/kWh", - rounding=3, - description="Electricity cost", - is_input=True, - input_category="System costing", - is_output=False, - ) - - # Outlets - exports.add( - obj=fs.product_H2O.properties[0].flow_vol, - name="Product water flow rate", - ui_units=pyunits.m**3 / pyunits.hr, - display_units="m3/h", - rounding=2, - description="Outlet product water flow rate", - is_input=False, - is_output=True, - output_category="Outlets", - ) - exports.add( - obj=fs.product_H2O.properties[0].conc_mass_comp["tss"], - name="Product water TSS concentration", - ui_units=pyunits.g / pyunits.L, - display_units="g/L", - rounding=2, - description="Outlet product water total suspended solids concentration", - is_input=False, - is_output=True, - output_category="Outlets", - ) - - # System metrics - exports.add( - obj=fs.costing.LCOT, - name="Levelized cost of treatment", - ui_units=fs.costing.base_currency / pyunits.m**3, - display_units="$/m3 of feed", - rounding=2, - description="Levelized cost of treatment including operating and capital costs", - is_input=False, - is_output=True, - output_category="Levelized cost metrics", - ) - exports.add( - obj=fs.costing.LCOW, - name="Levelized cost of water", - ui_units=fs.costing.base_currency / pyunits.m**3, - display_units="$/m3 of product", - rounding=2, - description="Levelized cost of water including operating and capital costs", - is_input=False, - is_output=True, - output_category="Levelized cost metrics", - ) - - # Normalized metrics - total_capital_norm = fs.costing.total_capital_cost / fs.feed.properties[0].flow_vol - exports.add( - obj=total_capital_norm, - name="Total capital", - ui_units=fs.costing.base_currency / (pyunits.m**3 / pyunits.day), - display_units="$/(m3/day)", - rounding=1, - description="Normalized total capital costs accounting for indirect " - "capital and installation - [total capital costs/feed flow rate]", - is_input=False, - is_output=True, - output_category="Normalized cost metrics", - ) - direct_capital_norm = ( - fs.AD.costing.direct_capital_cost + fs.P1.costing.direct_capital_cost - ) / fs.feed.properties[0].flow_vol - exports.add( - obj=direct_capital_norm, - name="Direct capital", - ui_units=fs.costing.base_currency / (pyunits.m**3 / pyunits.day), - display_units="$/(m3/day)", - rounding=1, - description="Normalized direct capital costs - [total direct capital " - "costs/feed flow rate] ", - is_input=False, - is_output=True, - output_category="Normalized cost metrics", - ) - elec_operating_norm = ( - fs.costing.aggregate_flow_costs["electricity"] / fs.costing.annual_water_inlet - ) - exports.add( - obj=elec_operating_norm, - name="Electricity", - ui_units=fs.costing.base_currency / pyunits.m**3, - display_units="$/m3 of feed", - rounding=2, - description="Normalized electricity cost - [annual electricity costs/annual " - "feed flow rate]", - is_input=False, - is_output=True, - output_category="Normalized cost metrics", - ) - - # performance metrics - recovery_vol = ( - fs.product_H2O.properties[0].flow_vol / fs.feed.properties[0].flow_vol - ) - exports.add( - obj=recovery_vol, - name="Volumetric recovery", - ui_units=pyunits.dimensionless, - display_units="m3 of product/m3 of feed", - rounding=4, - description="Normalized heating cost - [annual heating costs/annual feed " - "flow rate]", - is_input=False, - is_output=True, - output_category="Normalized performance metrics", - ) - removal_tss = ( - 1 - - fs.product_H2O.properties[0].flow_mass_comp["tss"] - / fs.feed.properties[0].flow_mass_comp["tss"] - ) - exports.add( - obj=removal_tss, - name="TSS removal", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=2, - description="TSS removal fraction [1 - outlet TSS flow/inlet TSS flow]", - is_input=False, - is_output=True, - output_category="Normalized performance metrics", - ) - - # Capital costs - exports.add( - obj=fs.costing.total_capital_cost, - name="Total", - ui_units=fs.costing.base_currency, - display_units="$", - rounding=0, - description="Total capital costs - including investment factor to account " - "for indirect capital", - is_input=False, - is_output=True, - output_category="Capital costs", - ) - exports.add( - obj=fs.AD.costing.capital_cost, - name="Anaerobic digester", - ui_units=fs.costing.base_currency, - display_units="$", - rounding=0, - description="Anaerobic digester", - is_input=False, - is_output=True, - output_category="Capital costs", - ) - exports.add( - obj=fs.P1.costing.capital_cost, - name="Pump", - ui_units=fs.costing.base_currency, - display_units="$", - rounding=0, - description="Pump", - is_input=False, - is_output=True, - output_category="Capital costs", - ) - - # Operating costs - exports.add( - obj=fs.costing.total_operating_cost, - name="Total", - ui_units=fs.costing.base_currency / pyunits.year, - display_units="$/year", - rounding=0, - description="Total annual operating costs - including electricity, heating, " - "and fixed", - is_input=False, - is_output=True, - output_category="Operating costs", - ) - exports.add( - obj=fs.costing.aggregate_flow_costs["electricity"], - name="Electricity", - ui_units=fs.costing.base_currency / pyunits.year, - display_units="$/year", - rounding=0, - description="Annual electricity costs ", - is_input=False, - is_output=True, - output_category="Operating costs", - ) - exports.add( - obj=fs.costing.total_fixed_operating_cost, - name="Fixed", - ui_units=fs.costing.base_currency / pyunits.year, - display_units="$/year", - rounding=0, - description="Annual fixed operating costs - these costs include material " - "replacement, maintenance, and labor", - is_input=False, - is_output=True, - output_category="Operating costs", - ) - - -def build_flowsheet(build_options=None, **kwargs): - # build and solve initial flowsheet - m = build() - - set_operating_conditions(m) - assert_degrees_of_freedom(m, 0) - assert_units_consistent(m) - - initialize_system(m) - - results = solve(m) - assert_optimal_termination(results) - - add_costing(m) - assert_degrees_of_freedom(m, 0) - m.fs.costing.initialize() - - results = solve(m) - assert_optimal_termination(results) - return m - - -def solve_flowsheet(flowsheet=None): - fs = flowsheet - results = solve(fs) - return results diff --git a/watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/amo_1575_hrcs/hrcs_ui.png b/watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/amo_1575_hrcs/hrcs_ui.png deleted file mode 100644 index 40118b4d16a6d326a2a3093b5722ee988a1f2d4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24009 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

xnEAR7s8;?t)Zz}^&2(VX0 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≶ILvX*!mmqY}7=kStMQ_jgu&BJ@!qI>KzpF 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 Fe*p`J5v%|J diff --git a/watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/biomembrane_filtration/biomembrane_filtration_ui.py b/watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/biomembrane_filtration/biomembrane_filtration_ui.py deleted file mode 100644 index df396ace7e..0000000000 --- a/watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/biomembrane_filtration/biomembrane_filtration_ui.py +++ /dev/null @@ -1,685 +0,0 @@ -################################################################################# -# WaterTAP Copyright (c) 2020-2024, The Regents of the University of California, -# through Lawrence Berkeley National Laboratory, Oak Ridge National Laboratory, -# National Renewable Energy Laboratory, and National Energy Technology -# Laboratory (subject to receipt of any required approvals from the U.S. Dept. -# of Energy). All rights reserved. -# -# Please see the files COPYRIGHT.md and LICENSE.md for full copyright and license -# information, respectively. These files are also available online at the URL -# "https://github.com/watertap-org/watertap/" -################################################################################# -from watertap.ui.fsapi import FlowsheetInterface -from watertap.core.util.initialization import assert_degrees_of_freedom -from watertap.examples.flowsheets.case_studies.wastewater_resource_recovery.biomembrane_filtration.biomembrane_filtration import ( - build, - set_operating_conditions, - initialize_system, - solve, - add_costing, -) -from pyomo.environ import units as pyunits, assert_optimal_termination -from pyomo.util.check_units import assert_units_consistent - - -def export_to_ui(): - return FlowsheetInterface( - name="Biomembrane filtration", - do_export=export_variables, - do_build=build_flowsheet, - do_solve=solve_flowsheet, - ) - - -def export_variables(flowsheet=None, exports=None, build_options=None, **kwargs): - fs = flowsheet - # --- Input data --- - # Feed conditions - exports.add( - obj=fs.feed.flow_vol[0], - name="Volumetric flow rate", - ui_units=pyunits.m**3 / pyunits.hr, - display_units="m3/h", - rounding=1, - description="Inlet volumetric flow rate", - is_input=True, - input_category="Feed", - is_output=True, - output_category="Feed", - ) - exports.add( - obj=fs.feed.conc_mass_comp[0, "bod"], - name="BOD concentration", - ui_units=pyunits.mg / pyunits.L, - display_units="mg/L", - rounding=1, - description="Inlet biochemical oxygen demand (BOD) concentration", - is_input=True, - input_category="Feed", - is_output=True, - output_category="Feed", - ) - exports.add( - obj=fs.feed.conc_mass_comp[0, "tss"], - name="TSS concentration", - ui_units=pyunits.mg / pyunits.L, - display_units="mg/L", - rounding=1, - description="Inlet total suspended solids (TSS) concentration", - is_input=True, - input_category="Feed", - is_output=True, - output_category="Feed", - ) - exports.add( - obj=fs.feed.conc_mass_comp[0, "ammonium_as_nitrogen"], - name="NH4-N concentration", - ui_units=pyunits.mg / pyunits.L, - display_units="mg/L", - rounding=1, - description="Inlet ammonium as nitrogen (NH4-N) concentration", - is_input=True, - input_category="Feed", - is_output=True, - output_category="Feed", - ) - exports.add( - obj=fs.feed.conc_mass_comp[0, "nitrate"], - name="NO3-N concentration", - ui_units=pyunits.mg / pyunits.L, - display_units="mg/L", - rounding=1, - description="Inlet nitrate (NO3-N) concentration", - is_input=True, - input_category="Feed", - is_output=True, - output_category="Feed", - ) - - # Unit model data, mabr - exports.add( - obj=fs.mabr.recovery_frac_mass_H2O[0], - name="Water recovery", - ui_units=pyunits.dimensionless, - display_units="fraction", # we should change to % - rounding=2, - description="Water recovery [g-H2O treated/g-H2O inlet]", - is_input=True, - input_category="MABR", - is_output=False, - ) - exports.add( - obj=fs.mabr.removal_frac_mass_comp[0, "tss"], - name="TSS removal", - ui_units=pyunits.dimensionless, - display_units="fraction", # we should change to % - rounding=2, - description="TSS removal [g-TSS byproduct/g-TSS inlet]", - is_input=True, - input_category="MABR", - is_output=False, - ) - exports.add( - obj=fs.mabr.reaction_conversion[0, "ammonium_to_nitrate"], - name="NH4-N conversion", - ui_units=pyunits.dimensionless, - display_units="fraction", # we should change to % - rounding=2, - description="NH4-N conversion [g-NH4-N reacted/g-NH4-N inlet]", - is_input=True, - input_category="MABR", - is_output=False, - ) - exports.add( - obj=fs.mabr.generation_ratio["ammonium_to_nitrate", "bod"], - name="BOD conversion ratio", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=2, - description="BOD mass conversion ratio with respect to NH4-N [g-BOD produced/g-NH4-N" - " reacted]", - is_input=True, - input_category="MABR", - is_output=False, - ) - exports.add( - obj=fs.mabr.generation_ratio["ammonium_to_nitrate", "nitrate"], - name="NO3-N conversion ratio", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=2, - description="NO3-N mass conversion ratio with respect to NH4-N [g-NO3-N produced/g-NH4-N" - " reacted]", - is_input=True, - input_category="MABR", - is_output=False, - ) - exports.add( - obj=fs.mabr.nitrogen_removal_rate, - name="Nitrogen removal rate", - ui_units=pyunits.g / pyunits.m**2 / pyunits.day, - display_units="g/m2/day", - rounding=1, - description="Nitrogen removal rate", - is_input=True, - input_category="MABR", - is_output=False, - ) - exports.add( - obj=fs.mabr.air_flow_rate[0], - name="Air flow rate", - ui_units=pyunits.m**3 / pyunits.hr / pyunits.m**2, - display_units="m3 of air/h/m2", - rounding=3, - description="Air flow rate", - is_input=True, - input_category="MABR", - is_output=False, - ) - exports.add( - obj=fs.mabr.energy_electric_flow_vol_inlet, - name="Blower specific power", - ui_units=pyunits.kWh / pyunits.m**3, - display_units="kWh/m3 of air", - rounding=5, - description="Blower specific power relating the power to the volume of the " - "air", - is_input=True, - input_category="MABR", - is_output=False, - ) - - # Unit cost data, mabr - exports.add( - obj=fs.costing.mabr.reactor_cost[None], - name="Reactor cost", - ui_units=fs.costing.base_currency / pyunits.m**2, - display_units="$/m2 of reactor", - rounding=0, - description="Reactor capital cost parameter", - is_input=True, - input_category="MABR costing", - is_output=False, - ) - exports.add( - obj=fs.costing.mabr.blower_cost[None], - name="Blower cost", - ui_units=fs.costing.base_currency / (pyunits.m**3 / pyunits.hr), - display_units="$/(m3/h)", - rounding=0, - description="Blower capital cost parameter", - is_input=True, - input_category="MABR costing", - is_output=False, - ) - - # Unit model data, dmbr - exports.add( - obj=fs.dmbr.recovery_frac_mass_H2O[0], - name="Water recovery", - ui_units=pyunits.dimensionless, - display_units="fraction", # we should change to % - rounding=2, - description="Water recovery [g-H2O treated/g-H2O inlet]", - is_input=True, - input_category="DMBR", - is_output=False, - ) - exports.add( - obj=fs.dmbr.removal_frac_mass_comp[0, "tss"], - name="TSS removal", - ui_units=pyunits.dimensionless, - display_units="fraction", # we should change to % - rounding=2, - description="TSS removal [g-TSS byproduct/g-TSS inlet]", - is_input=True, - input_category="DMBR", - is_output=False, - ) - exports.add( - obj=fs.dmbr.reaction_conversion[0, "nitrate_to_nitrogen"], - name="NO3-N conversion", - ui_units=pyunits.dimensionless, - display_units="fraction", # we should change to % - rounding=2, - description="NO3-N conversion [g-NO3-N reacted/g-NO3-N inlet]", - is_input=True, - input_category="DMBR", - is_output=False, - ) - exports.add( - obj=fs.dmbr.generation_ratio["nitrate_to_nitrogen", "nitrogen"], - name="N2 conversion ratio", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=2, - description="N2 mass conversion ratio with respect to NO3-N [g-N2 " - "produced/g-NO3-N reacted]", - is_input=True, - input_category="DMBR", - is_output=False, - ) - exports.add( - obj=fs.dmbr.reaction_conversion[0, "BOD_usage"], - name="BOD conversion", - ui_units=pyunits.dimensionless, - display_units="fraction", # we should change to % - rounding=2, - description="BOD conversion [g-BOD reacted/g-BOD inlet]", - is_input=True, - input_category="DMBR", - is_output=False, - ) - exports.add( - obj=fs.dmbr.energy_electric_flow_vol_inlet, - name="Electricity specific power", - ui_units=pyunits.kWh / pyunits.m**3, - display_units="kWh/m3 of reactor", - rounding=2, - description="Electricity specific power relating the power to the volume of the " - "reactor", - is_input=True, - input_category="DMBR", - is_output=False, - ) - - # Unit cost data, dmbr - exports.add( - obj=fs.costing.dmbr.water_flux[None], - name="Water flux", - ui_units=pyunits.L / pyunits.m**2 / pyunits.hr, - display_units="$/m2/h", - rounding=0, - description="Reactor sizing parameter - water flux", - is_input=True, - input_category="DMBR costing", - is_output=False, - ) - exports.add( - obj=fs.costing.dmbr.reactor_cost[None], - name="Reactor cost", - ui_units=fs.costing.base_currency / pyunits.m**2, - display_units="$/m2 of reactor", - rounding=1, - description="Reactor capital cost parameter", - is_input=True, - input_category="DMBR costing", - is_output=False, - ) - - # System costing - exports.add( - obj=fs.costing.utilization_factor, - name="Utilization factor", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=2, - description="Utilization factor - [annual use hours/total hours in year]", - is_input=True, - input_category="System costing", - is_output=False, - ) - exports.add( - obj=fs.costing.TIC, - name="Practical investment factor", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=1, - description="Practical investment factor - [total investment cost/direct " - "capital costs]", - is_input=True, - input_category="System costing", - is_output=False, - ) - exports.add( - obj=fs.costing.plant_lifetime, - name="Plant lifetime", - ui_units=pyunits.year, - display_units="years", - rounding=1, - description="Plant lifetime", - is_input=True, - input_category="System costing", - is_output=False, - ) - exports.add( - obj=fs.costing.wacc, - name="Discount rate", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=2, - description="Discount rate used in calculating the capital annualization", - is_input=True, - input_category="System costing", - is_output=False, - ) - exports.add( - obj=fs.costing.maintenance_costs_percent_FCI, - name="Fixed operating cost factor", - ui_units=1 / pyunits.year, - display_units="fraction/year", - rounding=2, - description="Fixed operating cost factor - [annual fixed operating cost/total " - "investment cost]", - is_input=True, - input_category="System costing", - is_output=False, - ) - exports.add( - obj=fs.costing.electricity_cost, - name="Electricity cost", - ui_units=fs.costing.base_currency / pyunits.kWh, - display_units="$/kWh", - rounding=3, - description="Electricity cost", - is_input=True, - input_category="System costing", - is_output=False, - ) - - # Outlets - exports.add( - obj=fs.product_H2O.properties[0].flow_vol, - name="Product water flow rate", - ui_units=pyunits.m**3 / pyunits.hr, - display_units="m3/h", - rounding=2, - description="Outlet product water flow rate", - is_input=False, - is_output=True, - output_category="Outlets", - ) - exports.add( - obj=fs.product_H2O.properties[0].conc_mass_comp["bod"], - name="Product water BOD concentration", - ui_units=pyunits.g / pyunits.L, - display_units="g/L", - rounding=4, - description="Outlet product water biological oxygen demand concentration", - is_input=False, - is_output=True, - output_category="Outlets", - ) - exports.add( - obj=fs.product_H2O.properties[0].conc_mass_comp["tss"], - name="Product water TSS concentration", - ui_units=pyunits.g / pyunits.L, - display_units="g/L", - rounding=4, - description="Outlet product water total suspended solids concentration", - is_input=False, - is_output=True, - output_category="Outlets", - ) - exports.add( - obj=fs.product_H2O.properties[0].conc_mass_comp["ammonium_as_nitrogen"], - name="Product water NH4-N concentration", - ui_units=pyunits.g / pyunits.L, - display_units="g/L", - rounding=4, - description="Outlet product water NH4-N concentration", - is_input=False, - is_output=True, - output_category="Outlets", - ) - exports.add( - obj=fs.product_H2O.properties[0].conc_mass_comp["nitrate"], - name="Product water NO3-N concentration", - ui_units=pyunits.g / pyunits.L, - display_units="g/L", - rounding=4, - description="Outlet product water NO3-N concentration", - is_input=False, - is_output=True, - output_category="Outlets", - ) - - # System metrics - exports.add( - obj=fs.costing.LCOT, - name="Levelized cost of treatment", - ui_units=fs.costing.base_currency / pyunits.m**3, - display_units="$/m3 of feed", - rounding=2, - description="Levelized cost of treatment including operating and capital costs", - is_input=False, - is_output=True, - output_category="Levelized cost metrics", - ) - exports.add( - obj=fs.costing.LCOW, - name="Levelized cost of water", - ui_units=fs.costing.base_currency / pyunits.m**3, - display_units="$/m3 of product", - rounding=2, - description="Levelized cost of water including operating and capital costs", - is_input=False, - is_output=True, - output_category="Levelized cost metrics", - ) - - # Normalized metrics - total_capital_norm = fs.costing.total_capital_cost / fs.feed.properties[0].flow_vol - exports.add( - obj=total_capital_norm, - name="Total capital", - ui_units=fs.costing.base_currency / (pyunits.m**3 / pyunits.day), - display_units="$/(m3/day)", - rounding=1, - description="Normalized total capital costs accounting for indirect " - "capital and installation - [total capital costs/feed flow rate]", - is_input=False, - is_output=True, - output_category="Normalized cost metrics", - ) - direct_capital_norm = ( - fs.mabr.costing.direct_capital_cost - + fs.dmbr.costing.direct_capital_cost - + fs.P1.costing.direct_capital_cost - ) / fs.feed.properties[0].flow_vol - exports.add( - obj=direct_capital_norm, - name="Direct capital", - ui_units=fs.costing.base_currency / (pyunits.m**3 / pyunits.day), - display_units="$/(m3/day)", - rounding=1, - description="Normalized direct capital costs - [total direct capital " - "costs/feed flow rate] ", - is_input=False, - is_output=True, - output_category="Normalized cost metrics", - ) - elec_operating_norm = ( - fs.costing.aggregate_flow_costs["electricity"] / fs.costing.annual_water_inlet - ) - exports.add( - obj=elec_operating_norm, - name="Electricity", - ui_units=fs.costing.base_currency / pyunits.m**3, - display_units="$/m3 of feed", - rounding=2, - description="Normalized electricity cost - [annual electricity costs/annual " - "feed flow rate]", - is_input=False, - is_output=True, - output_category="Normalized cost metrics", - ) - - # performance metrics - recovery_vol = ( - fs.product_H2O.properties[0].flow_vol / fs.feed.properties[0].flow_vol - ) - exports.add( - obj=recovery_vol, - name="Volumetric recovery", - ui_units=pyunits.dimensionless, - display_units="m3 of product/m3 of feed", - rounding=3, - description="Normalized heating cost - [annual heating costs/annual feed " - "flow rate]", - is_input=False, - is_output=True, - output_category="Normalized performance metrics", - ) - removal_bod = ( - 1 - - fs.product_H2O.properties[0].flow_mass_comp["bod"] - / fs.feed.properties[0].flow_mass_comp["bod"] - ) - exports.add( - obj=removal_bod, - name="BOD removal", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=3, - description="BOD removal fraction [1 - outlet BOD flow/inlet BOD flow]", - is_input=False, - is_output=True, - output_category="Normalized performance metrics", - ) - removal_tss = ( - 1 - - fs.product_H2O.properties[0].flow_mass_comp["tss"] - / fs.feed.properties[0].flow_mass_comp["tss"] - ) - exports.add( - obj=removal_tss, - name="TSS removal", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=3, - description="TSS removal fraction [1 - outlet TSS flow/inlet TSS flow]", - is_input=False, - is_output=True, - output_category="Normalized performance metrics", - ) - removal_TN = 1 - ( - fs.product_H2O.properties[0].flow_mass_comp["ammonium_as_nitrogen"] - + fs.product_H2O.properties[0].flow_mass_comp["nitrate"] - ) / ( - fs.feed.properties[0].flow_mass_comp["ammonium_as_nitrogen"] - + fs.feed.properties[0].flow_mass_comp["nitrate"] - ) - exports.add( - obj=removal_TN, - name="Total N removal", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=3, - description="Total N removal fraction [1 - outlet total N flow/inlet total N flow]", - is_input=False, - is_output=True, - output_category="Normalized performance metrics", - ) - - # Capital costs - exports.add( - obj=fs.costing.total_capital_cost, - name="Total", - ui_units=fs.costing.base_currency, - display_units="$", - rounding=0, - description="Total capital costs - including investment factor to account " - "for indirect capital", - is_input=False, - is_output=True, - output_category="Capital costs", - ) - exports.add( - obj=fs.mabr.costing.capital_cost, - name="MABR", - ui_units=fs.costing.base_currency, - display_units="$", - rounding=0, - description="MABR", - is_input=False, - is_output=True, - output_category="Capital costs", - ) - exports.add( - obj=fs.dmbr.costing.capital_cost, - name="DMBR", - ui_units=fs.costing.base_currency, - display_units="$", - rounding=0, - description="DMBR", - is_input=False, - is_output=True, - output_category="Capital costs", - ) - exports.add( - obj=fs.P1.costing.capital_cost, - name="Pump", - ui_units=fs.costing.base_currency, - display_units="$", - rounding=0, - description="Pump", - is_input=False, - is_output=True, - output_category="Capital costs", - ) - - # Operating costs - exports.add( - obj=fs.costing.total_operating_cost, - name="Total", - ui_units=fs.costing.base_currency / pyunits.year, - display_units="$/year", - rounding=0, - description="Total annual operating costs - including electricity, heating, " - "and fixed", - is_input=False, - is_output=True, - output_category="Operating costs", - ) - exports.add( - obj=fs.costing.aggregate_flow_costs["electricity"], - name="Electricity", - ui_units=fs.costing.base_currency / pyunits.year, - display_units="$/year", - rounding=0, - description="Annual electricity costs ", - is_input=False, - is_output=True, - output_category="Operating costs", - ) - exports.add( - obj=fs.costing.total_fixed_operating_cost, - name="Fixed", - ui_units=fs.costing.base_currency / pyunits.year, - display_units="$/year", - rounding=0, - description="Annual fixed operating costs - these costs include material " - "replacement, maintenance, and labor", - is_input=False, - is_output=True, - output_category="Operating costs", - ) - - -def build_flowsheet(build_options=None, **kwargs): - # build and solve initial flowsheet - m = build() - - set_operating_conditions(m) - assert_degrees_of_freedom(m, 0) - assert_units_consistent(m) - - initialize_system(m) - - results = solve(m) - assert_optimal_termination(results) - - add_costing(m) - assert_degrees_of_freedom(m, 0) - m.fs.costing.initialize() - - results = solve(m) - assert_optimal_termination(results) - return m - - -def solve_flowsheet(flowsheet=None): - fs = flowsheet - results = solve(fs) - return results diff --git a/watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/electrochemical_nutrient_removal/electrochemical_nutrient_removal_ui.png b/watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/electrochemical_nutrient_removal/electrochemical_nutrient_removal_ui.png deleted file mode 100644 index 4fd7c7d0593bed04be759e9fea850d05bd6fedac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40318 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 diff --git a/watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/groundwater_treatment/groundwater_treatment_ui.py b/watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/groundwater_treatment/groundwater_treatment_ui.py deleted file mode 100644 index 4e806df373..0000000000 --- a/watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/groundwater_treatment/groundwater_treatment_ui.py +++ /dev/null @@ -1,753 +0,0 @@ -################################################################################# -# WaterTAP Copyright (c) 2020-2024, The Regents of the University of California, -# through Lawrence Berkeley National Laboratory, Oak Ridge National Laboratory, -# National Renewable Energy Laboratory, and National Energy Technology -# Laboratory (subject to receipt of any required approvals from the U.S. Dept. -# of Energy). All rights reserved. -# -# Please see the files COPYRIGHT.md and LICENSE.md for full copyright and license -# information, respectively. These files are also available online at the URL -# "https://github.com/watertap-org/watertap/" -################################################################################# -from watertap.ui.fsapi import FlowsheetInterface -from watertap.core.util.initialization import assert_degrees_of_freedom -from watertap.examples.flowsheets.case_studies.wastewater_resource_recovery.groundwater_treatment.groundwater_treatment import ( - build, - set_operating_conditions, - initialize_system, - solve, - add_costing, -) -from pyomo.environ import units as pyunits, assert_optimal_termination -from pyomo.util.check_units import assert_units_consistent - - -def export_to_ui(): - return FlowsheetInterface( - name="Groundwater treatment", - do_export=export_variables, - do_build=build_flowsheet, - do_solve=solve_flowsheet, - ) - - -def export_variables(flowsheet=None, exports=None, build_options=None, **kwargs): - fs = flowsheet - # --- Input data --- - # Feed conditions - exports.add( - obj=fs.feed.flow_vol[0], - name="Volumetric flow rate", - ui_units=pyunits.m**3 / pyunits.hr, - display_units="m3/h", - rounding=2, - description="Inlet volumetric flow rate", - is_input=True, - input_category="Feed", - is_output=True, - output_category="Feed", - ) - exports.add( - obj=fs.feed.conc_mass_comp[0, "arsenic"], - name="Arsenic concentration", - ui_units=pyunits.mg / pyunits.L, - display_units="mg/L", - rounding=2, - description="Inlet arsenic concentration", - is_input=True, - input_category="Feed", - is_output=True, - output_category="Feed", - ) - exports.add( - obj=fs.feed.conc_mass_comp[0, "uranium"], - name="Uranium concentration", - ui_units=pyunits.mg / pyunits.L, - display_units="mg/L", - rounding=2, - description="Inlet uranium concentration", - is_input=True, - input_category="Feed", - is_output=True, - output_category="Feed", - ) - exports.add( - obj=fs.feed.conc_mass_comp[0, "nitrate"], - name="Nitrate concentration", - ui_units=pyunits.mg / pyunits.L, - display_units="mg/L", - rounding=2, - description="Inlet nitrate concentration", - is_input=True, - input_category="Feed", - is_output=True, - output_category="Feed", - ) - exports.add( - obj=fs.feed.conc_mass_comp[0, "phosphates"], - name="Phosphates concentration", - ui_units=pyunits.mg / pyunits.L, - display_units="mg/L", - rounding=2, - description="Inlet phosphates concentration", - is_input=True, - input_category="Feed", - is_output=True, - output_category="Feed", - ) - exports.add( - obj=fs.feed.conc_mass_comp[0, "iron"], - name="Iron concentration", - ui_units=pyunits.mg / pyunits.L, - display_units="mg/L", - rounding=2, - description="Inlet iron concentration", - is_input=True, - input_category="Feed", - is_output=True, - output_category="Feed", - ) - exports.add( - obj=fs.feed.conc_mass_comp[0, "filtration_media"], - name="Filtration media concentration", - ui_units=pyunits.mg / pyunits.L, - display_units="mg/L", - rounding=2, - description="Inlet filtration media concentration", - is_input=True, - input_category="Feed", - is_output=True, - output_category="Feed", - ) - - # Unit model data, pump - exports.add( - obj=fs.pump.lift_height, - name="Lift height", - ui_units=pyunits.m, - display_units="m", - rounding=2, - description="Lift height for pump", - is_input=True, - input_category="Pump", - is_output=False, - ) - exports.add( - obj=fs.pump.eta_pump, - name="Pump efficiency", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=2, - description="Efficiency of pump", - is_input=True, - input_category="Pump", - is_output=False, - ) - exports.add( - obj=fs.pump.eta_motor, - name="Motor efficiency", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=2, - description="Efficiency of motor", - is_input=True, - input_category="Pump", - is_output=False, - ) - - # Unit cost data, pump - exports.add( - obj=fs.costing.pump_electricity.pump_cost[None], - name="Pump cost", - ui_units=fs.costing.base_currency / (pyunits.m**3 / pyunits.hr), - display_units="$/(m^3/hr)", - rounding=0, - description="Pump capital cost parameter", - is_input=True, - input_category="Pump costing", - is_output=False, - ) - - # Unit model data, microbial battery - exports.add( - obj=fs.micbatt.recovery_frac_mass_H2O[0], - name="Water recovery", - ui_units=pyunits.dimensionless, - display_units="fraction", # we should change to % - rounding=2, - description="Water recovery [g-H2O treated/g-H2O inlet]", - is_input=True, - input_category="Microbial battery", - is_output=False, - ) - exports.add( - obj=fs.micbatt.reaction_conversion[0, "iron_precipitation"], - name="Iron conversion", - ui_units=pyunits.dimensionless, - display_units="fraction", # we should change to % - rounding=2, - description="Iron conversion [g-Fe reacted/g-Fe inlet]", - is_input=True, - input_category="Microbial battery", - is_output=False, - ) - exports.add( - obj=fs.micbatt.removal_frac_mass_comp[0, "arsenic"], - name="Arsenic removal", - ui_units=pyunits.dimensionless, - display_units="fraction", # we should change to % - rounding=2, - description="Arsenic removal [g-As removed/g-As inlet]", - is_input=True, - input_category="Microbial battery", - is_output=False, - ) - exports.add( - obj=fs.micbatt.removal_frac_mass_comp[0, "uranium"], - name="Uranium removal", - ui_units=pyunits.dimensionless, - display_units="fraction", # we should change to % - rounding=2, - description="Uranium removal [g-U removed/g-U inlet]", - is_input=True, - input_category="Microbial battery", - is_output=False, - ) - exports.add( - obj=fs.micbatt.removal_frac_mass_comp[0, "nitrate"], - name="Nitrate removal", - ui_units=pyunits.dimensionless, - display_units="fraction", # we should change to % - rounding=2, - description="Nitrate removal [g-nitrate removed/g-nitrate inlet]", - is_input=True, - input_category="Microbial battery", - is_output=False, - ) - exports.add( - obj=fs.micbatt.removal_frac_mass_comp[0, "phosphates"], - name="Phosphates removal", - ui_units=pyunits.dimensionless, - display_units="fraction", # we should change to % - rounding=2, - description="Phosphates removal [g-P removed/g-P inlet]", - is_input=True, - input_category="Microbial battery", - is_output=False, - ) - exports.add( - obj=fs.micbatt.energy_electric_flow_vol_inlet, - name="Electricity intensity", - ui_units=pyunits.kWh / pyunits.m**3, - display_units="kWh/m3", - rounding=2, - description="Electricity intensity relating the intensity to the product volume", - is_input=True, - input_category="Microbial battery", - is_output=False, - ) - exports.add( - obj=fs.micbatt.HRT, - name="HRT", - ui_units=pyunits.hr, - display_units="h", - rounding=1, - description="Hydraulic retention time", - is_input=True, - input_category="Microbial battery", - is_output=False, - ) - # Unit cost data, microbial battery - exports.add( - obj=fs.costing.microbial_battery.sizing_cost[None], - name="Microbial battery cost", - ui_units=(fs.costing.base_currency * pyunits.day) / pyunits.m**3, - display_units="($ * day)/m3 of microbial battery", - rounding=0, - description="Microbial battery capital cost parameter", - is_input=True, - input_category="Microbial battery costing", - is_output=False, - ) - # System costing - exports.add( - obj=fs.costing.utilization_factor, - name="Utilization factor", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=2, - description="Utilization factor - [annual use hours/total hours in year]", - is_input=True, - input_category="System costing", - is_output=False, - ) - exports.add( - obj=fs.costing.TIC, - name="Practical investment factor", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=1, - description="Practical investment factor - [total investment cost/direct " - "capital costs]", - is_input=True, - input_category="System costing", - is_output=False, - ) - exports.add( - obj=fs.costing.plant_lifetime, - name="Plant lifetime", - ui_units=pyunits.year, - display_units="years", - rounding=1, - description="Plant lifetime", - is_input=True, - input_category="System costing", - is_output=False, - ) - exports.add( - obj=fs.costing.wacc, - name="Discount rate", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=2, - description="Discount rate used in calculating the capital annualization", - is_input=True, - input_category="System costing", - is_output=False, - ) - exports.add( - obj=fs.costing.maintenance_costs_percent_FCI, - name="Fixed operating cost factor", - ui_units=1 / pyunits.year, - display_units="fraction/year", - rounding=2, - description="Fixed operating cost factor - [annual fixed operating cost/total " - "investment cost]", - is_input=True, - input_category="System costing", - is_output=False, - ) - exports.add( - obj=fs.costing.electricity_cost, - name="Electricity cost", - ui_units=fs.costing.base_currency / pyunits.kWh, - display_units="$/kWh", - rounding=3, - description="Electricity cost", - is_input=True, - input_category="System costing", - is_output=False, - ) - exports.add( - obj=fs.costing.filtration_media_cost, - name="Filtration media cost", - ui_units=fs.costing.base_currency / pyunits.kg, - display_units="$/kg", - rounding=3, - description="Filtration media cost", - is_input=True, - input_category="System costing", - is_output=False, - ) - exports.add( - obj=fs.costing.filtration_media_disposal_cost, - name="Filtration media disposal cost", - ui_units=fs.costing.base_currency / pyunits.kg, - display_units="$/kg", - rounding=3, - description="Filtration media disposal cost", - is_input=True, - input_category="System costing", - is_output=False, - ) - # Outlets - exports.add( - obj=fs.filtered_water.properties[0].flow_vol, - name="Filtered water flow rate", - ui_units=pyunits.m**3 / pyunits.hr, - display_units="m3/h", - rounding=2, - description="Outlet filtered water flow rate", - is_input=False, - is_output=True, - output_category="Outlets", - ) - exports.add( - obj=fs.filtered_water.properties[0].conc_mass_comp["arsenic"], - name="Filtered water arsenic concentration", - ui_units=pyunits.mg / pyunits.L, - display_units="mg/L", - rounding=3, - description="Outlet filtered water arsenic concentration", - is_input=False, - is_output=True, - output_category="Outlets", - ) - exports.add( - obj=fs.filtered_water.properties[0].conc_mass_comp["uranium"], - name="Filtered water uranium concentration", - ui_units=pyunits.mg / pyunits.L, - display_units="mg/L", - rounding=3, - description="Outlet filtered water uranium concentration", - is_input=False, - is_output=True, - output_category="Outlets", - ) - exports.add( - obj=fs.filtered_water.properties[0].conc_mass_comp["nitrate"], - name="Filtered water nitrate concentration", - ui_units=pyunits.mg / pyunits.L, - display_units="mg/L", - rounding=3, - description="Outlet filtered water nitrate concentration", - is_input=False, - is_output=True, - output_category="Outlets", - ) - exports.add( - obj=fs.filtered_water.properties[0].conc_mass_comp["phosphates"], - name="Filtered water phosphates concentration", - ui_units=pyunits.mg / pyunits.L, - display_units="mg/L", - rounding=3, - description="Outlet filtered water phosphates concentration", - is_input=False, - is_output=True, - output_category="Outlets", - ) - exports.add( - obj=fs.byproduct.properties[0].flow_mass_comp["arsenic"], - name="Byproduct arsenic flow rate", - ui_units=pyunits.mg / pyunits.day, - display_units="mg-arsenic/day", - rounding=5, - description="Outlet byproduct arsenic flow rate", - is_input=False, - is_output=True, - output_category="Outlets", - ) - exports.add( - obj=fs.byproduct.properties[0].flow_mass_comp["uranium"], - name="Byproduct uranium flow rate", - ui_units=pyunits.mg / pyunits.day, - display_units="mg-uranium/day", - rounding=5, - description="Outlet byproduct uranium flow rate", - is_input=False, - is_output=True, - output_category="Outlets", - ) - exports.add( - obj=fs.byproduct.properties[0].flow_mass_comp["nitrate"], - name="Byproduct nitrate flow rate", - ui_units=pyunits.mg / pyunits.day, - display_units="mg-nitrate/day", - rounding=5, - description="Outlet byproduct nitrate flow rate", - is_input=False, - is_output=True, - output_category="Outlets", - ) - exports.add( - obj=fs.byproduct.properties[0].flow_mass_comp["phosphates"], - name="Byproduct phosphates flow rate", - ui_units=pyunits.mg / pyunits.day, - display_units="mg-phosphates/day", - rounding=5, - description="Outlet byproduct phosphates flow rate", - is_input=False, - is_output=True, - output_category="Outlets", - ) - exports.add( - obj=fs.byproduct.properties[0].flow_mass_comp["filtration_media"], - name="Byproduct filtration media flow rate", - ui_units=pyunits.mg / pyunits.day, - display_units="mg-media/day", - rounding=5, - description="Outlet byproduct filtration media flow rate", - is_input=False, - is_output=True, - output_category="Outlets", - ) - # System metrics - exports.add( - obj=fs.costing.LCOT, - name="LCOT", - ui_units=fs.costing.base_currency / pyunits.m**3, - display_units="$/m3 of feed", - rounding=3, - description="Levelized cost of treatment including operating and capital costs", - is_input=False, - is_output=True, - output_category="Levelized cost metrics", - ) - exports.add( - obj=fs.costing.LCOW, - name="LCOW", - ui_units=fs.costing.base_currency / pyunits.m**3, - display_units="$/m3 of treated water", - rounding=3, - description="Levelized cost of water including operating and capital costs", - is_input=False, - is_output=True, - output_category="Levelized cost metrics", - ) - # Normalized metrics - total_capital_norm = fs.costing.total_capital_cost / fs.feed.properties[0].flow_vol - exports.add( - obj=total_capital_norm, - name="Total capital", - ui_units=fs.costing.base_currency / (pyunits.m**3 / pyunits.day), - display_units="$/(m3/day)", - rounding=1, - description="Normalized total capital costs accounting for indirect " - "capital and installation - [total capital costs/feed flow rate]", - is_input=False, - is_output=True, - output_category="Normalized cost metrics", - ) - direct_capital_norm = ( - (fs.pump.costing.capital_cost + fs.micbatt.costing.capital_cost) - / fs.costing.TIC - / fs.feed.properties[0].flow_vol - ) - exports.add( - obj=direct_capital_norm, - name="Direct capital", - ui_units=fs.costing.base_currency / (pyunits.m**3 / pyunits.day), - display_units="$/(m3/day)", - rounding=1, - description="Normalized direct capital costs - [total direct capital " - "costs/feed flow rate] ", - is_input=False, - is_output=True, - output_category="Normalized cost metrics", - ) - elec_operating_norm = ( - fs.costing.aggregate_flow_costs["electricity"] / fs.costing.annual_water_inlet - ) - exports.add( - obj=elec_operating_norm, - name="Electricity", - ui_units=fs.costing.base_currency / pyunits.m**3, - display_units="$/m3 of feed", - rounding=2, - description="Normalized electricity cost - [annual electricity costs/annual " - "feed flow rate]", - is_input=False, - is_output=True, - output_category="Normalized cost metrics", - ) - - # performance metrics - recovery_vol = ( - fs.filtered_water.properties[0].flow_vol / fs.feed.properties[0].flow_vol - ) - exports.add( - obj=recovery_vol, - name="Volumetric recovery", - ui_units=pyunits.dimensionless, - display_units="m3 of product/m3 of feed", - rounding=3, - description="Normalized volumetric recovery", - is_input=False, - is_output=True, - output_category="Normalized performance metrics", - ) - removal_arsenic = ( - 1 - - fs.filtered_water.properties[0].flow_mass_comp["arsenic"] - / fs.feed.properties[0].flow_mass_comp["arsenic"] - ) - exports.add( - obj=removal_arsenic, - name="Arsenic removal", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=3, - description="Arsenic removal fraction [1 - outlet As flow/inlet As flow]", - is_input=False, - is_output=True, - output_category="Normalized performance metrics", - ) - removal_uranium = ( - 1 - - fs.filtered_water.properties[0].flow_mass_comp["uranium"] - / fs.feed.properties[0].flow_mass_comp["uranium"] - ) - exports.add( - obj=removal_uranium, - name="Uranium removal", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=3, - description="Uranium removal fraction [1 - outlet U flow/inlet U flow]", - is_input=False, - is_output=True, - output_category="Normalized performance metrics", - ) - removal_nitrate = ( - 1 - - fs.filtered_water.properties[0].flow_mass_comp["nitrate"] - / fs.feed.properties[0].flow_mass_comp["nitrate"] - ) - exports.add( - obj=removal_nitrate, - name="Nitrate removal", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=3, - description="Nitrate removal fraction [1 - outlet NO3 flow/inlet NO3 flow]", - is_input=False, - is_output=True, - output_category="Normalized performance metrics", - ) - removal_phosphates = ( - 1 - - fs.filtered_water.properties[0].flow_mass_comp["phosphates"] - / fs.feed.properties[0].flow_mass_comp["phosphates"] - ) - exports.add( - obj=removal_phosphates, - name="Phosphates removal", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=3, - description="Phosphates removal fraction [1 - outlet P flow/inlet P flow]", - is_input=False, - is_output=True, - output_category="Normalized performance metrics", - ) - removal_iron = ( - 1 - - fs.filtered_water.properties[0].flow_mass_comp["iron"] - / fs.feed.properties[0].flow_mass_comp["iron"] - ) - exports.add( - obj=removal_iron, - name="Iron removal", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=3, - description="Iron removal fraction [1 - outlet Fe flow/inlet Fe flow]", - is_input=False, - is_output=True, - output_category="Normalized performance metrics", - ) - removal_filtration_media = ( - 1 - - fs.filtered_water.properties[0].flow_mass_comp["filtration_media"] - / fs.feed.properties[0].flow_mass_comp["filtration_media"] - ) - exports.add( - obj=removal_filtration_media, - name="Filtration media removal", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=3, - description="Filtration media removal fraction [1 - outlet media flow/inlet media flow]", - is_input=False, - is_output=True, - output_category="Normalized performance metrics", - ) - # Capital costs - exports.add( - obj=fs.costing.total_capital_cost, - name="Total", - ui_units=fs.costing.base_currency, - display_units="$", - rounding=0, - description="Total capital costs - including investment factor to account " - "for indirect capital", - is_input=False, - is_output=True, - output_category="Capital costs", - ) - exports.add( - obj=fs.pump.costing.capital_cost, - name="Pump", - ui_units=fs.costing.base_currency, - display_units="$", - rounding=0, - description="Pump", - is_input=False, - is_output=True, - output_category="Capital costs", - ) - exports.add( - obj=fs.micbatt.costing.capital_cost, - name="Microbial battery", - ui_units=fs.costing.base_currency, - display_units="$", - rounding=0, - description="Microbial battery", - is_input=False, - is_output=True, - output_category="Capital costs", - ) - # Operating costs - exports.add( - obj=fs.costing.total_operating_cost, - name="Total", - ui_units=fs.costing.base_currency / pyunits.year, - display_units="$/year", - rounding=0, - description="Total annual operating costs - including electricity, heating, " - "and fixed", - is_input=False, - is_output=True, - output_category="Operating costs", - ) - exports.add( - obj=fs.costing.aggregate_flow_costs["electricity"], - name="Electricity", - ui_units=fs.costing.base_currency / pyunits.year, - display_units="$/year", - rounding=0, - description="Annual electricity costs ", - is_input=False, - is_output=True, - output_category="Operating costs", - ) - exports.add( - obj=fs.costing.total_fixed_operating_cost, - name="Fixed", - ui_units=fs.costing.base_currency / pyunits.year, - display_units="$/year", - rounding=0, - description="Annual fixed operating costs - these costs include material " - "replacement, maintenance, and labor", - is_input=False, - is_output=True, - output_category="Operating costs", - ) - - -def build_flowsheet(build_options=None, **kwargs): - # build and solve initial flowsheet - m = build() - - set_operating_conditions(m) - assert_degrees_of_freedom(m, 0) - assert_units_consistent(m) - - initialize_system(m) - - results = solve(m) - assert_optimal_termination(results) - - add_costing(m) - assert_degrees_of_freedom(m, 0) - m.fs.costing.initialize() - - results = solve(m) - assert_optimal_termination(results) - return m - - -def solve_flowsheet(flowsheet=None): - fs = flowsheet - results = solve(fs) - return results diff --git a/watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/metab/metab.py b/watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/metab/metab.py index 2f39e8e7f5..f3c4303466 100644 --- a/watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/metab/metab.py +++ b/watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/metab/metab.py @@ -480,42 +480,6 @@ def rule_LCOCR_comp(b, c): m.fs.costing.LCOCR_comp = Expression(m.fs.costing.LC_comp, rule=rule_LCOCR_comp) -def adjust_default_parameters(m): - m.fs.metab_hydrogen.hydraulic_retention_time.fix(6) # default - 12 hours, 0.5x - m.fs.metab_hydrogen.generation_ratio["cod_to_hydrogen", "hydrogen"].set_value( - 0.05 - ) # default - 0.005, 10x - m.fs.costing.metab.bead_bulk_density["hydrogen"].fix(7.17) # default 23.9, 0.3x - m.fs.costing.metab.bead_replacement_factor["hydrogen"].fix(1) # default 3.376, 0.3x - m.fs.metab_hydrogen.energy_electric_mixer_vol.fix(0.049875) # default 0.049875 - m.fs.metab_hydrogen.energy_electric_vacuum_flow_vol_byproduct.fix( - 9.190 - ) # default 9190, 0.001x - m.fs.metab_hydrogen.energy_thermal_flow_vol_inlet.fix(7875) # default 78750, 0.1x - m.fs.costing.metab.bead_cost["hydrogen"].fix(14.40) # default 1440, 0.01x - m.fs.costing.metab.reactor_cost["hydrogen"].fix(78.9) # default 789, 0.1x - m.fs.costing.metab.vacuum_cost["hydrogen"].fix(5930) # default 59300, 0.1x - m.fs.costing.metab.mixer_cost["hydrogen"].fix(27.40) # default 2740, 0.01x - m.fs.costing.metab.membrane_cost["hydrogen"].fix(498) # default 498 - - m.fs.metab_methane.hydraulic_retention_time.fix(15) # default 150, 0.1x - m.fs.metab_methane.generation_ratio["cod_to_methane", "methane"].set_value( - 0.101 - ) # default 0.101, no change - m.fs.costing.metab.bead_bulk_density["methane"].fix(7.17) # default 23.9, 0.3x - m.fs.costing.metab.bead_replacement_factor["methane"].fix(1) # default 3.376, 0.3x - m.fs.metab_methane.energy_electric_mixer_vol.fix(0.049875) # default 0.049875 - m.fs.metab_methane.energy_electric_vacuum_flow_vol_byproduct.fix( - 1.53 - ) # default 15.3, 0.1x - m.fs.metab_methane.energy_thermal_flow_vol_inlet.fix(0) # default 0 - m.fs.costing.metab.bead_cost["methane"].fix(14.40) # default 1440, 0.01x - m.fs.costing.metab.reactor_cost["methane"].fix(78.9) # default 789, 0.1x - m.fs.costing.metab.vacuum_cost["methane"].fix(136.0) # default 1360, 0.1x - m.fs.costing.metab.mixer_cost["methane"].fix(27.40) # default 2740, 0.01x - m.fs.costing.metab.membrane_cost["methane"].fix(498) # default 498 - - def display_metrics_results(m): print("----------Levelized costs----------") LCOT = value( diff --git a/watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/metab/metab_ui.png b/watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/metab/metab_ui.png deleted file mode 100644 index 7ec95cf85bffc69a87e6de5a1025173ace600b52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98085 zcmeFac~sL^`ZyehDSq3kbf&EfAhcSwAP9(TBGA?y1S+e55EKCkAZS>GkU)o4>Vl}O zvZYo6CM;1PAPGsZR#3Jm5W*IMB18yDgg{~lNq!dy22tDj_kGWB&YZUMdG5W>zTG7k zesnyr>JyDmAP~r^LkIUdLm(^bA&`%H|4$A4KesDi<$!;vz?~2L04ZgWEa^6g2lJ_tmPIkfkC*K@w((ob(A#j!fknv?B6 z{PxRtpZ-)-b+!EmyH5=as;aL3xWd`_{|a5ZD^pKMQZA%8oEiFOTH(6JaEF|(!XjA7 zQ8|47q(y~ZNN9-o-`>$1`_9H6Ibn4LBeyiU_0(rmaAalSHEZJ0EJ3*`+p_6~35zW3 z4dD~QIf9=IGi5*>@7m=veQjW5Ln{qW(ixAQH4NuK-I-KCfu)3!`_{gvsVOTRuE#b`^F%Rw54#%Cw- z7`5Pk{mZhob4W+|Y0x5%JjRv#z^?F`)#VM942V|2REs0_-%1cj#A{#F88JUUABxmB zJz&@@7sB}^W+9N(4soZ8UDq#xw1^K{>p_j9>JklE6Enql+v(Z0C9N8Xd(sM+x^8oN zwfMKXujk?LEi3@^(2*stUB*G!p%<77XjUX)J+R-T3_eFw1V$6QmeZY~#u8glJuw+U+c9hR3k#$;ntX@ ze<~sCQRMLnj%~%gdo!(_uj}*^q!Tf|av7WI8U_~6oeFirIxkVRJJ3slW=2sFo3dMa zja~8!AR@hhtLvtxoDm`nI)j>KVxQF-QYWuCxk+|H8uhGMF1TY$V8$DtKP}0^1hOf0 zGILw6vJQw=<UYBKSfap2W#O@} zZra8HEw1kD2I3fMWJO79ZD-FC4yi`K+AD1_b{{JzuCHoq!)rS^fGJnuQO{?rb>zng z2UR03whNX4Mz(F=PBk>$DH>+5rbl6^YJ;vAc7k2T=gP?vgY$fjk!Mkx1i0DP;R&T) zw^S?wuxf>_hnBFUn^L(#T`s5;G#g?9M*_sugozulOKO9im|a($1Lj=3;?IxN<~uP( zrC3mjb}22*leW|eCL`fB2Jh+(xVWAEpL9KgMOg69KEl0w@&2$AzM0{1t)Daa@;}+Q z%^Hc82dBTn*nO%5tQYFH>ByL!_5E2j6iF>CS

|v-Lsj%7`IerX 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 LRh21|G7I=Wod9NS diff --git a/watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/peracetic_acid_disinfection/peracetic_acid_disinfection_ui.py b/watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/peracetic_acid_disinfection/peracetic_acid_disinfection_ui.py deleted file mode 100644 index a305fe32ff..0000000000 --- a/watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/peracetic_acid_disinfection/peracetic_acid_disinfection_ui.py +++ /dev/null @@ -1,490 +0,0 @@ -################################################################################# -# WaterTAP Copyright (c) 2020-2024, The Regents of the University of California, -# through Lawrence Berkeley National Laboratory, Oak Ridge National Laboratory, -# National Renewable Energy Laboratory, and National Energy Technology -# Laboratory (subject to receipt of any required approvals from the U.S. Dept. -# of Energy). All rights reserved. -# -# Please see the files COPYRIGHT.md and LICENSE.md for full copyright and license -# information, respectively. These files are also available online at the URL -# "https://github.com/watertap-org/watertap/" -################################################################################# -from watertap.ui.fsapi import FlowsheetInterface -from watertap.core.util.initialization import assert_degrees_of_freedom -from watertap.examples.flowsheets.case_studies.wastewater_resource_recovery.peracetic_acid_disinfection.peracetic_acid_disinfection import ( - build, - set_operating_conditions, - initialize_system, - solve, - add_costing, -) -from pyomo.environ import units as pyunits, assert_optimal_termination -from pyomo.util.check_units import assert_units_consistent - - -def export_to_ui(): - return FlowsheetInterface( - name="Peracetic acid disinfection", - do_export=export_variables, - do_build=build_flowsheet, - do_solve=solve_flowsheet, - ) - - -def export_variables(flowsheet=None, exports=None, build_options=None, **kwargs): - fs = flowsheet - # --- Input data --- - # Feed conditions - exports.add( - obj=fs.feed.flow_vol[0], - name="Volumetric flow rate", - ui_units=pyunits.m**3 / pyunits.hr, - display_units="m3/h", - rounding=2, - description="Inlet volumetric flow rate", - is_input=True, - input_category="Feed", - is_output=True, - output_category="Feed", - ) - exports.add( - obj=fs.feed.conc_mass_comp[0, "peracetic_acid"], - name="Peracetic acid concentration", - ui_units=pyunits.mg / pyunits.L, - display_units="mg/L", - rounding=2, - description="Inlet peracetic acid concentration", - is_input=True, - input_category="Feed", - is_output=True, - output_category="Feed", - ) - exports.add( - obj=fs.feed.conc_mass_comp[0, "total_coliforms_fecal_ecoli"], - name="Ecoli concentration", - ui_units=pyunits.mg / pyunits.L, - display_units="mg/L", - rounding=7, - description="Inlet total coliforms fecal ecoli concentration", - is_input=True, - input_category="Feed", - is_output=True, - output_category="Feed", - ) - - # Unit model data, peracetic acid disinfection - exports.add( - obj=fs.PAA.recovery_frac_mass_H2O[0], - name="Water recovery", - ui_units=pyunits.dimensionless, - display_units="fraction", # we should change to % - rounding=2, - description="Water recovery [g-H2O treated/g-H2O inlet]", - is_input=True, - input_category="Peracetic acid disinfection", - is_output=False, - ) - exports.add( - obj=fs.PAA.reaction_conversion[0, "paa_decomposition"], - name="PAA decomposition", - ui_units=pyunits.dimensionless, - display_units="fraction", # we should change to % - rounding=2, - description="Peracetic acid decomposition [g-PAA decomposed/g-PAA inlet]", - is_input=True, - input_category="Peracetic acid disinfection", - is_output=False, - ) - exports.add( - obj=fs.PAA.reaction_conversion[0, "ecoli_inactivation"], - name="Ecoli inactivation", - ui_units=pyunits.dimensionless, - display_units="fraction", # we should change to % - rounding=2, - description="Ecoli (total coliforms fecal ecoli) inactivation [g-ecoli inactivated/g-ecoli inlet]", - is_input=True, - input_category="Peracetic acid disinfection", - is_output=False, - ) - exports.add( - obj=fs.PAA.energy_electric_flow_vol_inlet, - name="Electricity intensity", - ui_units=pyunits.kWh / pyunits.m**3, - display_units="fraction", - rounding=2, - description="Electricity intensity with respect to inlet flow rate of unit", - is_input=True, - input_category="Peracetic acid disinfection", - is_output=False, - ) - exports.add( - obj=fs.PAA.ecoli_cell_mass, - name="Ecoli mass", - ui_units=pyunits.kg, - display_units="kg", - rounding=16, - description="Ecoli cell mass", - is_input=True, - input_category="Peracetic acid disinfection", - is_output=False, - ) - exports.add( - obj=fs.PAA.disinfection_solution_wt_frac_PAA, - name="PAA weight fraction of disinfection solution", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=3, - description="Disinfection solution weight fraction of peracetic acid", - is_input=True, - input_category="Peracetic acid disinfection", - is_output=False, - ) - exports.add( - obj=fs.PAA.disinfection_solution_density, - name="Disinfection solution density", - ui_units=pyunits.kg / pyunits.L, - display_units="kg/L", - rounding=3, - description="Disinfection solution density", - is_input=True, - input_category="Peracetic acid disinfection", - is_output=False, - ) - exports.add( - obj=fs.PAA.HRT, - name="HRT", - ui_units=pyunits.hr, - display_units="h", - rounding=0, - description="Hydraulic retention time", - is_input=True, - input_category="Peracetic acid disinfection", - is_output=False, - ) - - # Unit cost data, peracetic acid disinfection - exports.add( - obj=fs.costing.peracetic_acid_disinfection.sizing_cost[None], - name="Peracetic acid disinfection cost", - ui_units=(fs.costing.base_currency * pyunits.day) / pyunits.m**3, - display_units="($*day)/m3 of PAA", - rounding=0, - description="Peracetic acid disinfection capital cost parameter", - is_input=True, - input_category="Peracetic acid disinfection costing", - is_output=False, - ) - - # System costing - exports.add( - obj=fs.costing.utilization_factor, - name="Utilization factor", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=2, - description="Utilization factor - [annual use hours/total hours in year]", - is_input=True, - input_category="System costing", - is_output=False, - ) - exports.add( - obj=fs.costing.TIC, - name="Practical investment factor", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=1, - description="Practical investment factor - [total investment cost/direct " - "capital costs]", - is_input=True, - input_category="System costing", - is_output=False, - ) - exports.add( - obj=fs.costing.plant_lifetime, - name="Plant lifetime", - ui_units=pyunits.year, - display_units="years", - rounding=1, - description="Plant lifetime", - is_input=True, - input_category="System costing", - is_output=False, - ) - exports.add( - obj=fs.costing.wacc, - name="Discount rate", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=2, - description="Discount rate used in calculating the capital annualization", - is_input=True, - input_category="System costing", - is_output=False, - ) - exports.add( - obj=fs.costing.maintenance_costs_percent_FCI, - name="Fixed operating cost factor", - ui_units=1 / pyunits.year, - display_units="fraction/year", - rounding=2, - description="Fixed operating cost factor - [annual fixed operating cost/total " - "investment cost]", - is_input=True, - input_category="System costing", - is_output=False, - ) - exports.add( - obj=fs.costing.electricity_cost, - name="Electricity cost", - ui_units=fs.costing.base_currency / pyunits.kWh, - display_units="$/kWh", - rounding=3, - description="Electricity cost", - is_input=True, - input_category="System costing", - is_output=False, - ) - exports.add( - obj=fs.costing.disinfection_solution_cost, - name="Disinfection solution cost", - ui_units=fs.costing.base_currency / pyunits.gal, - display_units="$/gal", - rounding=3, - description="Disinfection cost", - is_input=True, - input_category="System costing", - is_output=False, - ) - - # Outlets - exports.add( - obj=fs.treated_water.properties[0].flow_vol, - name="Treated water flow rate", - ui_units=pyunits.m**3 / pyunits.hr, - display_units="m3/h", - rounding=2, - description="Outlet treated water flow rate", - is_input=False, - is_output=True, - output_category="Outlets", - ) - exports.add( - obj=fs.treated_water.properties[0].conc_mass_comp["peracetic_acid"], - name="Treated water PAA concentration", - ui_units=pyunits.mg / pyunits.L, - display_units="mg/L", - rounding=5, - description="Outlet treated water peracetic acid concentration", - is_input=False, - is_output=True, - output_category="Outlets", - ) - exports.add( - obj=fs.treated_water.properties[0].conc_mass_comp[ - "total_coliforms_fecal_ecoli" - ], - name="Treated water Ecoli concentration", - ui_units=pyunits.mg / pyunits.L, - display_units="mg/L", - rounding=7, - description="Outlet treated water ecoli concentration", - is_input=False, - is_output=True, - output_category="Outlets", - ) - - # System metrics - exports.add( - obj=fs.costing.LCOT, - name="LCOT", - ui_units=fs.costing.base_currency / pyunits.m**3, - display_units="$/m3 of feed", - rounding=3, - description="Levelized cost of treatment including operating and capital costs", - is_input=False, - is_output=True, - output_category="Levelized cost metrics", - ) - - # Normalized metrics - total_capital_norm = fs.costing.total_capital_cost / fs.feed.properties[0].flow_vol - exports.add( - obj=total_capital_norm, - name="Total capital", - ui_units=fs.costing.base_currency / (pyunits.m**3 / pyunits.day), - display_units="$/(m3/day)", - rounding=1, - description="Normalized total capital costs accounting for indirect " - "capital and installation - [total capital costs/feed flow rate]", - is_input=False, - is_output=True, - output_category="Normalized cost metrics", - ) - direct_capital_norm = (fs.PAA.costing.direct_capital_cost) / fs.feed.properties[ - 0 - ].flow_vol - exports.add( - obj=direct_capital_norm, - name="Direct capital", - ui_units=fs.costing.base_currency / (pyunits.m**3 / pyunits.day), - display_units="$/(m3/day)", - rounding=1, - description="Normalized direct capital costs - [total direct capital " - "costs/feed flow rate] ", - is_input=False, - is_output=True, - output_category="Normalized cost metrics", - ) - elec_operating_norm = ( - fs.costing.aggregate_flow_costs["electricity"] / fs.costing.annual_water_inlet - ) - exports.add( - obj=elec_operating_norm, - name="Electricity", - ui_units=fs.costing.base_currency / pyunits.m**3, - display_units="$/m3 of feed", - rounding=2, - description="Normalized electricity cost - [annual electricity costs/annual " - "feed flow rate]", - is_input=False, - is_output=True, - output_category="Normalized cost metrics", - ) - # - # performance metrics - recovery_vol = ( - fs.treated_water.properties[0].flow_vol / fs.feed.properties[0].flow_vol - ) - exports.add( - obj=recovery_vol, - name="Volumetric recovery", - ui_units=pyunits.dimensionless, - display_units="m3 of product/m3 of feed", - rounding=3, - description="Normalized volumetric recovery", - is_input=False, - is_output=True, - output_category="Normalized performance metrics", - ) - removal_PAA = ( - 1 - - fs.treated_water.properties[0].flow_mass_comp["peracetic_acid"] - / fs.feed.properties[0].flow_mass_comp["peracetic_acid"] - ) - exports.add( - obj=removal_PAA, - name="PAA removal", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=3, - description="Peracetic acid removal fraction [1 - outlet PAA flow/inlet PAA flow]", - is_input=False, - is_output=True, - output_category="Normalized performance metrics", - ) - removal_Ecoli = ( - 1 - - fs.treated_water.properties[0].flow_mass_comp["total_coliforms_fecal_ecoli"] - / fs.feed.properties[0].flow_mass_comp["total_coliforms_fecal_ecoli"] - ) - exports.add( - obj=removal_Ecoli, - name="Ecoli removal", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=3, - description="Ecoli removal fraction [1 - outlet Ecoli flow/inlet Ecoli flow]", - is_input=False, - is_output=True, - output_category="Normalized performance metrics", - ) - - # Capital costs - exports.add( - obj=fs.costing.total_capital_cost, - name="Total", - ui_units=fs.costing.base_currency, - display_units="$", - rounding=0, - description="Total capital costs - including investment factor to account " - "for indirect capital", - is_input=False, - is_output=True, - output_category="Capital costs", - ) - exports.add( - obj=fs.PAA.costing.capital_cost, - name="Peracetic acid disinfection", - ui_units=fs.costing.base_currency, - display_units="$", - rounding=0, - description="Peracetic acid disinfection", - is_input=False, - is_output=True, - output_category="Capital costs", - ) - - # Operating costs - exports.add( - obj=fs.costing.total_operating_cost, - name="Total", - ui_units=fs.costing.base_currency / pyunits.year, - display_units="$/year", - rounding=0, - description="Total annual operating costs - including electricity, heating, " - "and fixed", - is_input=False, - is_output=True, - output_category="Operating costs", - ) - exports.add( - obj=fs.costing.aggregate_flow_costs["electricity"], - name="Electricity", - ui_units=fs.costing.base_currency / pyunits.year, - display_units="$/year", - rounding=0, - description="Annual electricity costs ", - is_input=False, - is_output=True, - output_category="Operating costs", - ) - exports.add( - obj=fs.costing.total_fixed_operating_cost, - name="Fixed", - ui_units=fs.costing.base_currency / pyunits.year, - display_units="$/year", - rounding=0, - description="Annual fixed operating costs - these costs include material " - "replacement, maintenance, and labor", - is_input=False, - is_output=True, - output_category="Operating costs", - ) - - -def build_flowsheet(build_options=None, **kwargs): - # build and solve initial flowsheet - m = build() - - set_operating_conditions(m) - assert_degrees_of_freedom(m, 0) - assert_units_consistent(m) - - initialize_system(m) - - results = solve(m) - assert_optimal_termination(results) - - add_costing(m) - assert_degrees_of_freedom(m, 0) - m.fs.costing.initialize() - - results = solve(m) - assert_optimal_termination(results) - return m - - -def solve_flowsheet(flowsheet=None): - fs = flowsheet - results = solve(fs) - return results diff --git a/watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/suboxic_activated_sludge_process/suboxic_ASM_ui.png b/watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/suboxic_activated_sludge_process/suboxic_ASM_ui.png deleted file mode 100644 index b83bf00bf6390d28e86fc37891ad501da59171fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28265 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

EY5o$q3bL)?-RK$wIp;?9ro-pPG1Ci1W9B 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 diff --git a/watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/suboxic_activated_sludge_process/suboxic_ASM_ui.py b/watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/suboxic_activated_sludge_process/suboxic_ASM_ui.py deleted file mode 100644 index b7a609fad6..0000000000 --- a/watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/suboxic_activated_sludge_process/suboxic_ASM_ui.py +++ /dev/null @@ -1,566 +0,0 @@ -################################################################################# -# WaterTAP Copyright (c) 2020-2024, The Regents of the University of California, -# through Lawrence Berkeley National Laboratory, Oak Ridge National Laboratory, -# National Renewable Energy Laboratory, and National Energy Technology -# Laboratory (subject to receipt of any required approvals from the U.S. Dept. -# of Energy). All rights reserved. -# -# Please see the files COPYRIGHT.md and LICENSE.md for full copyright and license -# information, respectively. These files are also available online at the URL -# "https://github.com/watertap-org/watertap/" -################################################################################# -from watertap.ui.fsapi import FlowsheetInterface -from watertap.core.util.initialization import assert_degrees_of_freedom -from watertap.examples.flowsheets.case_studies.wastewater_resource_recovery.suboxic_activated_sludge_process.suboxic_activated_sludge_process import ( - build, - set_operating_conditions, - initialize_system, - solve, - add_costing, -) -from pyomo.environ import units as pyunits, assert_optimal_termination -from pyomo.util.check_units import assert_units_consistent - - -def export_to_ui(): - return FlowsheetInterface( - name="Suboxic ASM", - do_export=export_variables, - do_build=build_flowsheet, - do_solve=solve_flowsheet, - ) - - -def export_variables(flowsheet=None, exports=None, build_options=None, **kwargs): - fs = flowsheet - # --- Input data --- - # Feed conditions - exports.add( - obj=fs.feed.flow_vol[0], - name="Volumetric flow rate", - ui_units=pyunits.m**3 / pyunits.hr, - display_units="m3/h", - rounding=1, - description="Inlet volumetric flow rate", - is_input=True, - input_category="Feed", - is_output=True, - output_category="Feed", - ) - exports.add( - obj=fs.feed.conc_mass_comp[0, "bod"], - name="BOD concentration", - ui_units=pyunits.mg / pyunits.L, - display_units="mg/L", - rounding=1, - description="Inlet biological oxygen demand (BOD) concentration", - is_input=True, - input_category="Feed", - is_output=True, - output_category="Feed", - ) - exports.add( - obj=fs.feed.conc_mass_comp[0, "tss"], - name="TSS concentration", - ui_units=pyunits.mg / pyunits.L, - display_units="mg/L", - rounding=1, - description="Inlet total suspended solids (TSS) concentration", - is_input=True, - input_category="Feed", - is_output=True, - output_category="Feed", - ) - exports.add( - obj=fs.feed.conc_mass_comp[0, "tkn"], - name="TKN concentration", - ui_units=pyunits.mg / pyunits.L, - display_units="mg/L", - rounding=1, - description="Inlet total Kjeldahl nitrogen (TKN) concentration", - is_input=True, - input_category="Feed", - is_output=True, - output_category="Feed", - ) - exports.add( - obj=fs.feed.conc_mass_comp[0, "phosphorus"], - name="Total P concentration", - ui_units=pyunits.mg / pyunits.L, - display_units="mg/L", - rounding=1, - description="Inlet total phosphorus (TP) concentration", - is_input=True, - input_category="Feed", - is_output=True, - output_category="Feed", - ) - - # Unit model data, suboxic ASM - exports.add( - obj=fs.suboxicASM.recovery_frac_mass_H2O[0], - name="Water recovery", - ui_units=pyunits.dimensionless, - display_units="fraction", # we should change to % - rounding=2, - description="Water recovery [g-H2O treated/g-H2O inlet]", - is_input=True, - input_category="Suboxic ASM", - is_output=False, - ) - exports.add( - obj=fs.suboxicASM.removal_frac_mass_comp[0, "bod"], - name="BOD removal", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=4, - description="BOD removal [g-BOD reacted/g-BOD byproduct]", - is_input=True, - input_category="Suboxic ASM", - is_output=False, - ) - exports.add( - obj=fs.suboxicASM.removal_frac_mass_comp[0, "tss"], - name="TSS removal", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=4, - description="TSS removal [g-TSS reacted/g-TSS byproduct]", - is_input=True, - input_category="Suboxic ASM", - is_output=False, - ) - exports.add( - obj=fs.suboxicASM.removal_frac_mass_comp[0, "tkn"], - name="TKN removal", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=4, - description="TKN removal [g-TKN reacted/g-TKN byproduct]", - is_input=True, - input_category="Suboxic ASM", - is_output=False, - ) - exports.add( - obj=fs.suboxicASM.removal_frac_mass_comp[0, "phosphorus"], - name="TP removal", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=4, - description="TP removal [g-TP reacted/g-TP byproduct]", - is_input=True, - input_category="Suboxic ASM", - is_output=False, - ) - exports.add( - obj=fs.suboxicASM.energy_electric_flow_vol_inlet, - name="Electricity specific power", - ui_units=pyunits.kWh / pyunits.m**3, - display_units="kWh/m3", - rounding=1, - description="Specific power relating the power to the inlet flow rate", - is_input=True, - input_category="Suboxic ASM", - is_output=False, - ) - - # Unit cost data, suboxic ASM - exports.add( - obj=fs.costing.suboxic_activated_sludge_process.aeration_basin_cost[None], - name="Aeration basin cost", - ui_units=fs.costing.base_currency / (pyunits.m**3 / pyunits.hr), - display_units="$/(m3/h)", - rounding=1, - description="Aeration basin capital cost parameter", - is_input=True, - input_category="Suboxic ASM costing", - is_output=False, - ) - exports.add( - obj=fs.costing.suboxic_activated_sludge_process.other_equipment_cost[None], - name="Other equipment cost", - ui_units=fs.costing.base_currency / (pyunits.m**3 / pyunits.hr), - display_units="$/(m3/h)", - rounding=1, - description="Other equipment capital cost parameter", - is_input=True, - input_category="Suboxic ASM costing", - is_output=False, - ) - exports.add( - obj=fs.costing.suboxic_activated_sludge_process.control_system_cost[None], - name="Control system cost", - ui_units=fs.costing.base_currency / (pyunits.m**3 / pyunits.hr), - display_units="$/(m3/h)", - rounding=1, - description="Control system capital cost parameter", - is_input=True, - input_category="Suboxic ASM costing", - is_output=False, - ) - - # System costing - exports.add( - obj=fs.costing.utilization_factor, - name="Utilization factor", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=2, - description="Utilization factor - [annual use hours/total hours in year]", - is_input=True, - input_category="System costing", - is_output=False, - ) - exports.add( - obj=fs.costing.TIC, - name="Practical investment factor", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=1, - description="Practical investment factor - [total investment cost/direct " - "capital costs]", - is_input=True, - input_category="System costing", - is_output=False, - ) - exports.add( - obj=fs.costing.plant_lifetime, - name="Plant lifetime", - ui_units=pyunits.year, - display_units="years", - rounding=1, - description="Plant lifetime", - is_input=True, - input_category="System costing", - is_output=False, - ) - exports.add( - obj=fs.costing.wacc, - name="Discount rate", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=2, - description="Discount rate used in calculating the capital annualization", - is_input=True, - input_category="System costing", - is_output=False, - ) - exports.add( - obj=fs.costing.maintenance_costs_percent_FCI, - name="Fixed operating cost factor", - ui_units=1 / pyunits.year, - display_units="fraction/year", - rounding=2, - description="Fixed operating cost factor - [annual fixed operating cost/total " - "investment cost]", - is_input=True, - input_category="System costing", - is_output=False, - ) - exports.add( - obj=fs.costing.electricity_cost, - name="Electricity cost", - ui_units=fs.costing.base_currency / pyunits.kWh, - display_units="$/kWh", - rounding=3, - description="Electricity cost", - is_input=True, - input_category="System costing", - is_output=False, - ) - - # Outlets - exports.add( - obj=fs.product_H2O.properties[0].flow_vol, - name="Product water flow rate", - ui_units=pyunits.m**3 / pyunits.hr, - display_units="m3/h", - rounding=2, - description="Outlet product water flow rate", - is_input=False, - is_output=True, - output_category="Outlets", - ) - exports.add( - obj=fs.product_H2O.properties[0].conc_mass_comp["bod"], - name="Product water BOD concentration", - ui_units=pyunits.g / pyunits.L, - display_units="g/L", - rounding=2, - description="Outlet product water biological oxygen demand (BOD) concentration", - is_input=False, - is_output=True, - output_category="Outlets", - ) - exports.add( - obj=fs.product_H2O.properties[0].conc_mass_comp["tss"], - name="Product water TSS concentration", - ui_units=pyunits.g / pyunits.L, - display_units="g/L", - rounding=2, - description="Outlet product water total suspended solids (TSS) concentration", - is_input=False, - is_output=True, - output_category="Outlets", - ) - exports.add( - obj=fs.product_H2O.properties[0].conc_mass_comp["tkn"], - name="Product water TKN concentration", - ui_units=pyunits.g / pyunits.L, - display_units="g/L", - rounding=2, - description="Outlet product water total Kjeldahl nitrogen (TKN) concentration", - is_input=False, - is_output=True, - output_category="Outlets", - ) - exports.add( - obj=fs.product_H2O.properties[0].conc_mass_comp["phosphorus"], - name="Product water TP concentration", - ui_units=pyunits.g / pyunits.L, - display_units="g/L", - rounding=2, - description="Outlet product water total phosphorus (TP) concentration", - is_input=False, - is_output=True, - output_category="Outlets", - ) - - # System metrics - exports.add( - obj=fs.costing.LCOT, - name="Levelized cost of treatment", - ui_units=fs.costing.base_currency / pyunits.m**3, - display_units="$/m3 of feed", - rounding=2, - description="Levelized cost of treatment including operating and capital costs", - is_input=False, - is_output=True, - output_category="Levelized cost metrics", - ) - exports.add( - obj=fs.costing.LCOW, - name="Levelized cost of water", - ui_units=fs.costing.base_currency / pyunits.m**3, - display_units="$/m3 of product", - rounding=2, - description="Levelized cost of water including operating and capital costs", - is_input=False, - is_output=True, - output_category="Levelized cost metrics", - ) - - # Normalized metrics - total_capital_norm = fs.costing.total_capital_cost / fs.feed.properties[0].flow_vol - exports.add( - obj=total_capital_norm, - name="Total capital", - ui_units=fs.costing.base_currency / (pyunits.m**3 / pyunits.day), - display_units="$/(m3/day)", - rounding=1, - description="Normalized total capital costs accounting for indirect " - "capital and installation - [total capital costs/feed flow rate]", - is_input=False, - is_output=True, - output_category="Normalized cost metrics", - ) - direct_capital_norm = ( - fs.suboxicASM.costing.direct_capital_cost / fs.feed.properties[0].flow_vol - ) - exports.add( - obj=direct_capital_norm, - name="Direct capital", - ui_units=fs.costing.base_currency / (pyunits.m**3 / pyunits.day), - display_units="$/(m3/day)", - rounding=1, - description="Normalized direct capital costs - [total direct capital " - "costs/feed flow rate] ", - is_input=False, - is_output=True, - output_category="Normalized cost metrics", - ) - elec_operating_norm = ( - fs.costing.aggregate_flow_costs["electricity"] / fs.costing.annual_water_inlet - ) - exports.add( - obj=elec_operating_norm, - name="Electricity", - ui_units=fs.costing.base_currency / pyunits.m**3, - display_units="$/m3 of feed", - rounding=4, - description="Normalized electricity cost - [annual electricity costs/annual " - "feed flow rate]", - is_input=False, - is_output=True, - output_category="Normalized cost metrics", - ) - - # performance metrics - recovery_vol = ( - fs.product_H2O.properties[0].flow_vol / fs.feed.properties[0].flow_vol - ) - exports.add( - obj=recovery_vol, - name="Volumetric recovery", - ui_units=pyunits.dimensionless, - display_units="m3 of product/m3 of feed", - rounding=4, - description="Normalized volumetric recovery" "flow rate]", - is_input=False, - is_output=True, - output_category="Normalized performance metrics", - ) - removal_bod = ( - 1 - - fs.product_H2O.properties[0].flow_mass_comp["bod"] - / fs.feed.properties[0].flow_mass_comp["bod"] - ) - exports.add( - obj=removal_bod, - name="BOD removal", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=4, - description="BOD removal fraction [1 - outlet BOD flow/inlet BOD flow]", - is_input=False, - is_output=True, - output_category="Normalized performance metrics", - ) - removal_tss = ( - 1 - - fs.product_H2O.properties[0].flow_mass_comp["tss"] - / fs.feed.properties[0].flow_mass_comp["tss"] - ) - exports.add( - obj=removal_tss, - name="TSS removal", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=4, - description="TSS removal fraction [1 - outlet TSS flow/inlet TSS flow]", - is_input=False, - is_output=True, - output_category="Normalized performance metrics", - ) - removal_tkn = ( - 1 - - fs.product_H2O.properties[0].flow_mass_comp["tkn"] - / fs.feed.properties[0].flow_mass_comp["tkn"] - ) - exports.add( - obj=removal_tkn, - name="TKN removal", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=4, - description="TKN removal fraction [1 - outlet TKN flow/inlet TKN flow]", - is_input=False, - is_output=True, - output_category="Normalized performance metrics", - ) - removal_tp = ( - 1 - - fs.product_H2O.properties[0].flow_mass_comp["phosphorus"] - / fs.feed.properties[0].flow_mass_comp["phosphorus"] - ) - exports.add( - obj=removal_tp, - name="TP removal", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=4, - description="TP removal fraction [1 - outlet TP flow/inlet TP flow]", - is_input=False, - is_output=True, - output_category="Normalized performance metrics", - ) - - # Capital costs - exports.add( - obj=fs.costing.total_capital_cost, - name="Total", - ui_units=fs.costing.base_currency, - display_units="$", - rounding=0, - description="Total capital costs - including investment factor to account " - "for indirect capital", - is_input=False, - is_output=True, - output_category="Capital costs", - ) - exports.add( - obj=fs.suboxicASM.costing.capital_cost, - name="Suboxic ASM", - ui_units=fs.costing.base_currency, - display_units="$", - rounding=0, - description="Suboxic ASM", - is_input=False, - is_output=True, - output_category="Capital costs", - ) - - # Operating costs - exports.add( - obj=fs.costing.total_operating_cost, - name="Total", - ui_units=fs.costing.base_currency / pyunits.year, - display_units="$/year", - rounding=0, - description="Total annual operating costs - including electricity, heating, " - "and fixed", - is_input=False, - is_output=True, - output_category="Operating costs", - ) - exports.add( - obj=fs.costing.aggregate_flow_costs["electricity"], - name="Electricity", - ui_units=fs.costing.base_currency / pyunits.year, - display_units="$/year", - rounding=0, - description="Annual electricity costs ", - is_input=False, - is_output=True, - output_category="Operating costs", - ) - exports.add( - obj=fs.costing.total_fixed_operating_cost, - name="Fixed", - ui_units=fs.costing.base_currency / pyunits.year, - display_units="$/year", - rounding=0, - description="Annual fixed operating costs - these costs include material " - "replacement, maintenance, and labor", - is_input=False, - is_output=True, - output_category="Operating costs", - ) - - -def build_flowsheet(build_options=None, **kwargs): - # build and solve initial flowsheet - m = build() - - set_operating_conditions(m) - assert_degrees_of_freedom(m, 0) - assert_units_consistent(m) - - initialize_system(m) - - results = solve(m) - assert_optimal_termination(results) - - add_costing(m) - assert_degrees_of_freedom(m, 0) - m.fs.costing.initialize() - - results = solve(m) - assert_optimal_termination(results) - return m - - -def solve_flowsheet(flowsheet=None): - fs = flowsheet - results = solve(fs) - return results diff --git a/watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/supercritical_sludge_to_gas/supercritical_sludge_to_gas_ui.png b/watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/supercritical_sludge_to_gas/supercritical_sludge_to_gas_ui.png deleted file mode 100644 index 2650e27a37312fa9f6c727a9f2d14184c111aa3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45638 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 z 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 IVE+040Ev;yTL1t6 diff --git a/watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/supercritical_sludge_to_gas/supercritical_sludge_to_gas_ui.py b/watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/supercritical_sludge_to_gas/supercritical_sludge_to_gas_ui.py deleted file mode 100644 index 5d793d1c35..0000000000 --- a/watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/supercritical_sludge_to_gas/supercritical_sludge_to_gas_ui.py +++ /dev/null @@ -1,636 +0,0 @@ -################################################################################# -# WaterTAP Copyright (c) 2020-2024, The Regents of the University of California, -# through Lawrence Berkeley National Laboratory, Oak Ridge National Laboratory, -# National Renewable Energy Laboratory, and National Energy Technology -# Laboratory (subject to receipt of any required approvals from the U.S. Dept. -# of Energy). All rights reserved. -# -# Please see the files COPYRIGHT.md and LICENSE.md for full copyright and license -# information, respectively. These files are also available online at the URL -# "https://github.com/watertap-org/watertap/" -################################################################################# -from watertap.ui.fsapi import FlowsheetInterface -from watertap.core.util.initialization import assert_degrees_of_freedom -from watertap.examples.flowsheets.case_studies.wastewater_resource_recovery.supercritical_sludge_to_gas.supercritical_sludge_to_gas import ( - build, - set_operating_conditions, - initialize_system, - solve, - add_costing, -) -from pyomo.environ import units as pyunits, assert_optimal_termination -from pyomo.util.check_units import assert_units_consistent - - -def export_to_ui(): - return FlowsheetInterface( - name="Supercritical sludge to gas", - do_export=export_variables, - do_build=build_flowsheet, - do_solve=solve_flowsheet, - ) - - -def export_variables(flowsheet=None, exports=None, build_options=None, **kwargs): - fs = flowsheet - # --- Input data --- - # Feed conditions - flow_mass = ( - fs.feed.flow_mass_comp[0, "H2O"] - + fs.feed.flow_mass_comp[0, "organic_solid"] - + fs.feed.flow_mass_comp[0, "inorganic_solid"] - + fs.feed.flow_mass_comp[0, "organic_liquid"] - + fs.feed.flow_mass_comp[0, "carbon_dioxide"] - ) - exports.add( - obj=flow_mass, - name="Mass flow rate", - ui_units=pyunits.metric_ton / pyunits.day, - display_units="ton/day", - rounding=1, - description="Inlet mass flow rate", - is_input=True, - input_category="Feed", - is_output=True, - output_category="Feed", - ) - exports.add( - obj=fs.feed.flow_mass_comp[0, "organic_solid"], - name="Organics(s) mass flow", - ui_units=pyunits.metric_ton / pyunits.day, - display_units="ton/day", - rounding=1, - description="Inlet organics(solid) mass flow", - is_input=True, - input_category="Feed", - is_output=True, - output_category="Feed", - ) - exports.add( - obj=fs.feed.flow_mass_comp[0, "inorganic_solid"], - name="Inorganics(s) mass flow", - ui_units=pyunits.metric_ton / pyunits.day, - display_units="ton/day", - rounding=1, - description="Inlet inorganics(solid) mass flow", - is_input=True, - input_category="Feed", - is_output=True, - output_category="Feed", - ) - - # Unit model data, AT-HTL - exports.add( - obj=fs.ATHTL.recovery_frac_mass_H2O[0], - name="Water recovery", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=2, - description="Water recovery [g-H2O treated/g-H2O inlet]", - is_input=True, - input_category="AT-HTL", - is_output=False, - ) - exports.add( - obj=fs.ATHTL.reaction_conversion[0, "hydrothermal_liquefaction"], - name="Organics(s) conversion", - ui_units=pyunits.dimensionless, - display_units="fraction", # we should change to % - rounding=2, - description="Organics(s) conversion [g-organics(s) reacted/g-organics(s) inlet]", - is_input=True, - input_category="AT-HTL", - is_output=False, - ) - exports.add( - obj=fs.ATHTL.generation_ratio["hydrothermal_liquefaction", "organic_liquid"], - name="Organics(l) conversion ratio", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=4, - description="Organics(l) mass conversion ratio with respect to organics(s) [g-organics(l) produced" - "/g-organics(s) reacted]", - is_input=True, - input_category="AT-HTL", - is_output=False, - ) - exports.add( - obj=fs.ATHTL.generation_ratio["hydrothermal_liquefaction", "carbon_dioxide"], - name="CO2 conversion ratio", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=4, - description="CO2 mass conversion ratio with respect to organics(s) [g-CO2 produced" - "/g-organics(s) reacted]", - is_input=True, - input_category="AT-HTL", - is_output=False, - ) - exports.add( - obj=fs.ATHTL.energy_electric_flow_mass, - name="Electricity specific power", - ui_units=pyunits.kWh / pyunits.metric_ton, - display_units="kWh/ton of inlet flow rate", - rounding=2, - description="Specific energy consumption with respect to influent mass", - is_input=True, - input_category="AT-HTL", - is_output=False, - ) - exports.add( - obj=fs.ATHTL.catalyst_dosage, - name="Catalyst dosing", - ui_units=pyunits.pound / pyunits.metric_ton, - display_units="lb/ton of inlet flow rate", - rounding=2, - description="Catalyst dosing", - is_input=True, - input_category="AT-HTL", - is_output=False, - ) - - # Unit model data, supercritical salt precipitation - exports.add( - obj=fs.salt_precipitation.recovery_frac_mass_H2O[0], - name="Water recovery", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=2, - description="Water recovery [g-H2O treated/g-H2O inlet]", - is_input=True, - input_category="Supercritical salt precipitation", - is_output=False, - ) - exports.add( - obj=fs.salt_precipitation.removal_frac_mass_comp[0, "organic_solid"], - name="Organics(s) removal", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=0, - description="Organics(s) removal", - is_input=True, - input_category="Supercritical salt precipitation", - is_output=False, - ) - exports.add( - obj=fs.salt_precipitation.removal_frac_mass_comp[0, "inorganic_solid"], - name="Inorganics(s) removal", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=4, - description="Inorganics(s) removal", - is_input=True, - input_category="Supercritical salt precipitation", - is_output=False, - ) - exports.add( - obj=fs.salt_precipitation.removal_frac_mass_comp[0, "organic_liquid"], - name="Organics(l) removal", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=0, - description="Organics(l) removal", - is_input=True, - input_category="Supercritical salt precipitation", - is_output=False, - ) - exports.add( - obj=fs.salt_precipitation.energy_electric_flow_mass, - name="Electricity specific power", - ui_units=pyunits.kWh / pyunits.metric_ton, - display_units="kWh/ton of inlet flow rate", - rounding=2, - description="Specific power relating the power to inlet mass flow rate", - is_input=True, - input_category="Supercritical salt precipitation", - is_output=False, - ) - - # Unit model data, HTG & WWT units - exports.add( - obj=fs.HTG.recovery_frac_mass_H2O[0], - name="Water recovery", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=2, - description="Water recovery [g-H2O treated/g-H2O inlet]", - is_input=True, - input_category="HTG", - is_output=False, - ) - exports.add( - obj=fs.HTG.reaction_conversion[0, "hydrothermal_gasification"], - name="Organics(l) conversion", - ui_units=pyunits.dimensionless, - display_units="fraction", # we should change to % - rounding=2, - description="Organics(l) conversion [g-organics(l) reacted/g-organics(l) inlet]", - is_input=True, - input_category="HTG", - is_output=False, - ) - exports.add( - obj=fs.HTG.generation_ratio["hydrothermal_gasification", "carbon_dioxide"], - name="CO2 conversion ratio", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=4, - description="CO2 mass conversion ratio with respect to organics(l) [g-CO2 produced" - "/g-organics(l) reacted]", - is_input=True, - input_category="HTG", - is_output=False, - ) - exports.add( - obj=fs.HTG.energy_electric_flow_mass, - name="Electricity specific power", - ui_units=pyunits.kWh / pyunits.metric_ton, - display_units="kWh/ton of inlet flow rate", - rounding=2, - description="Specific power relating the power to inlet mass flow rate", - is_input=True, - input_category="HTG", - is_output=False, - ) - exports.add( - obj=fs.HTG.catalyst_dosage, - name="Catalyst dosing", - ui_units=pyunits.pound / pyunits.metric_ton, - display_units="lb/ton of inlet flow rate", - rounding=2, - description="Catalyst dosing", - is_input=True, - input_category="HTG", - is_output=False, - ) - - # System costing - exports.add( - obj=fs.costing.utilization_factor, - name="Utilization factor", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=2, - description="Utilization factor - [annual use hours/total hours in year]", - is_input=True, - input_category="System costing", - is_output=False, - ) - exports.add( - obj=fs.costing.TIC, - name="Practical investment factor", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=1, - description="Practical investment factor - [total investment cost/direct " - "capital costs]", - is_input=True, - input_category="System costing", - is_output=False, - ) - exports.add( - obj=fs.costing.plant_lifetime, - name="Plant lifetime", - ui_units=pyunits.year, - display_units="years", - rounding=1, - description="Plant lifetime", - is_input=True, - input_category="System costing", - is_output=False, - ) - exports.add( - obj=fs.costing.wacc, - name="Discount rate", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=2, - description="Discount rate used in calculating the capital annualization", - is_input=True, - input_category="System costing", - is_output=False, - ) - exports.add( - obj=fs.costing.maintenance_costs_percent_FCI, - name="Fixed operating cost factor", - ui_units=1 / pyunits.year, - display_units="fraction/year", - rounding=2, - description="Fixed operating cost factor - [annual fixed operating cost/total " - "investment cost]", - is_input=True, - input_category="System costing", - is_output=False, - ) - exports.add( - obj=fs.costing.electricity_cost, - name="Electricity cost", - ui_units=fs.costing.base_currency / pyunits.kWh, - display_units="$/kWh", - rounding=3, - description="Electricity cost", - is_input=True, - input_category="System costing", - is_output=False, - ) - - # Outlets - exports.add( - obj=fs.product_H2O.properties[0].flow_vol, - name="Product water flow rate", - ui_units=pyunits.m**3 / pyunits.hr, - display_units="m3/h", - rounding=2, - description="Outlet product water flow rate", - is_input=False, - is_output=True, - output_category="Outlets", - ) - exports.add( - obj=fs.product_H2O.properties[0].conc_mass_comp["organic_solid"], - name="Product water organics(s) concentration", - ui_units=pyunits.g / pyunits.L, - display_units="g/L", - rounding=2, - description="Outlet product water organics(s) concentration", - is_input=False, - is_output=True, - output_category="Outlets", - ) - exports.add( - obj=fs.product_H2O.properties[0].conc_mass_comp["organic_liquid"], - name="Product water organics(l) concentration", - ui_units=pyunits.g / pyunits.L, - display_units="g/L", - rounding=2, - description="Outlet product water organics(l) concentration", - is_input=False, - is_output=True, - output_category="Outlets", - ) - exports.add( - obj=fs.product_H2O.properties[0].conc_mass_comp["inorganic_solid"], - name="Product water inorganics(s) concentration", - ui_units=pyunits.g / pyunits.L, - display_units="g/L", - rounding=2, - description="Outlet product water inorganics(s) concentration", - is_input=False, - is_output=True, - output_category="Outlets", - ) - - # System metrics - exports.add( - obj=fs.costing.LCOT, - name="Levelized cost of treatment", - ui_units=fs.costing.base_currency / pyunits.m**3, - display_units="$/m3 of feed", - rounding=2, - description="Levelized cost of treatment including operating and capital costs", - is_input=False, - is_output=True, - output_category="Levelized cost metrics", - ) - exports.add( - obj=fs.costing.LCOW, - name="Levelized cost of water", - ui_units=fs.costing.base_currency / pyunits.m**3, - display_units="$/m3 of product", - rounding=2, - description="Levelized cost of water including operating and capital costs", - is_input=False, - is_output=True, - output_category="Levelized cost metrics", - ) - - # Normalized metrics - total_capital_norm = fs.costing.total_capital_cost / fs.feed.properties[0].flow_vol - exports.add( - obj=total_capital_norm, - name="Total capital", - ui_units=fs.costing.base_currency / (pyunits.m**3 / pyunits.day), - display_units="$/(m3/day)", - rounding=1, - description="Normalized total capital costs accounting for indirect " - "capital and installation - [total capital costs/feed flow rate]", - is_input=False, - is_output=True, - output_category="Normalized cost metrics", - ) - direct_capital_norm = ( - fs.ATHTL.costing.direct_capital_cost - + fs.salt_precipitation.costing.direct_capital_cost - + fs.HTG.costing.direct_capital_cost - ) / fs.feed.properties[0].flow_vol - exports.add( - obj=direct_capital_norm, - name="Direct capital", - ui_units=fs.costing.base_currency / (pyunits.m**3 / pyunits.day), - display_units="$/(m3/day)", - rounding=1, - description="Normalized direct capital costs - [total direct capital " - "costs/feed flow rate] ", - is_input=False, - is_output=True, - output_category="Normalized cost metrics", - ) - elec_operating_norm = ( - fs.costing.aggregate_flow_costs["electricity"] / fs.costing.annual_water_inlet - ) - exports.add( - obj=elec_operating_norm, - name="Electricity", - ui_units=fs.costing.base_currency / pyunits.m**3, - display_units="$/m3 of feed", - rounding=2, - description="Normalized electricity cost - [annual electricity costs/annual " - "feed flow rate]", - is_input=False, - is_output=True, - output_category="Normalized cost metrics", - ) - - # performance metrics - recovery_vol = ( - fs.product_H2O.properties[0].flow_vol / fs.feed.properties[0].flow_vol - ) - exports.add( - obj=recovery_vol, - name="Volumetric recovery", - ui_units=pyunits.dimensionless, - display_units="m3 of product/m3 of feed", - rounding=3, - description="Normalized volumetric recovery " "flow rate]", - is_input=False, - is_output=True, - output_category="Normalized performance metrics", - ) - removal_organics = 1 - ( - fs.product_H2O.properties[0].flow_mass_comp["organic_solid"] - + fs.product_H2O.properties[0].flow_mass_comp["organic_liquid"] - ) / ( - fs.feed.properties[0].flow_mass_comp["organic_solid"] - + fs.feed.properties[0].flow_mass_comp["organic_liquid"] - ) - exports.add( - obj=removal_organics, - name="Organics removal", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=3, - description="Organics removal fraction [1 - outlet organics flow/inlet organics flow]", - is_input=False, - is_output=True, - output_category="Normalized performance metrics", - ) - removal_inorganics = ( - 1 - - fs.product_H2O.properties[0].flow_mass_comp["inorganic_solid"] - / fs.feed.properties[0].flow_mass_comp["inorganic_solid"] - ) - exports.add( - obj=removal_inorganics, - name="Inorganics removal", - ui_units=pyunits.dimensionless, - display_units="fraction", - rounding=3, - description="Inorganics removal fraction [1 - outlet inorganics flow/inlet inorganics flow]", - is_input=False, - is_output=True, - output_category="Normalized performance metrics", - ) - - # Capital costs - exports.add( - obj=fs.costing.total_capital_cost, - name="Total", - ui_units=fs.costing.base_currency, - display_units="$", - rounding=0, - description="Total capital costs - including investment factor to account " - "for indirect capital", - is_input=False, - is_output=True, - output_category="Capital costs", - ) - exports.add( - obj=fs.ATHTL.costing.capital_cost, - name="AT-HTL", - ui_units=fs.costing.base_currency, - display_units="$", - rounding=0, - description="Autothermal hydrothermal liquefaction (AT-HTL)", - is_input=False, - is_output=True, - output_category="Capital costs", - ) - exports.add( - obj=fs.salt_precipitation.costing.capital_cost, - name="Supercritical salt precipitation", - ui_units=fs.costing.base_currency, - display_units="$", - rounding=0, - description="Supercritical salt precipitation", - is_input=False, - is_output=True, - output_category="Capital costs", - ) - exports.add( - obj=fs.HTG.costing.capital_cost, - name="HTG", - ui_units=fs.costing.base_currency, - display_units="$", - rounding=0, - description="Hydrothermal gasification (HTG)", - is_input=False, - is_output=True, - output_category="Capital costs", - ) - - # Operating costs - exports.add( - obj=fs.costing.total_operating_cost, - name="Total", - ui_units=fs.costing.base_currency / pyunits.year, - display_units="$/year", - rounding=0, - description="Total annual operating costs - including electricity, heating, " - "and fixed", - is_input=False, - is_output=True, - output_category="Operating costs", - ) - exports.add( - obj=fs.costing.aggregate_flow_costs["electricity"], - name="Electricity", - ui_units=fs.costing.base_currency / pyunits.year, - display_units="$/year", - rounding=0, - description="Annual electricity costs ", - is_input=False, - is_output=True, - output_category="Operating costs", - ) - exports.add( - obj=fs.costing.aggregate_flow_costs["catalyst_ATHTL"], - name="Catalyst for AT-HTL", - ui_units=fs.costing.base_currency / pyunits.year, - display_units="$/year", - rounding=0, - description="Annual catalyst cost for AT-HTL", - is_input=False, - is_output=True, - output_category="Operating costs", - ) - exports.add( - obj=fs.costing.aggregate_flow_costs["catalyst_HTG"], - name="Catalyst for HTG", - ui_units=fs.costing.base_currency / pyunits.year, - display_units="$/year", - rounding=0, - description="Annual catalyst cost for HTG", - is_input=False, - is_output=True, - output_category="Operating costs", - ) - exports.add( - obj=fs.costing.total_fixed_operating_cost, - name="Fixed", - ui_units=fs.costing.base_currency / pyunits.year, - display_units="$/year", - rounding=0, - description="Annual fixed operating costs - these costs include material " - "replacement, maintenance, and labor", - is_input=False, - is_output=True, - output_category="Operating costs", - ) - - -def build_flowsheet(build_options=None, **kwargs): - # build and solve initial flowsheet - m = build() - - set_operating_conditions(m) - assert_degrees_of_freedom(m, 0) - assert_units_consistent(m) - - initialize_system(m) - - results = solve(m) - assert_optimal_termination(results) - - add_costing(m) - assert_degrees_of_freedom(m, 0) - m.fs.costing.initialize() - - results = solve(m) - assert_optimal_termination(results) - return m - - -def solve_flowsheet(flowsheet=None): - fs = flowsheet - results = solve(fs) - return results diff --git a/watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/swine_wwt/swine_wwt_ui.png b/watertap/examples/flowsheets/case_studies/wastewater_resource_recovery/swine_wwt/swine_wwt_ui.png deleted file mode 100644 index 616945304f607fd25c5e4b1b548cd27b67ae3c90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47718 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