From 4acef3a092bc483dceb7f8182d584f4185348f69 Mon Sep 17 00:00:00 2001 From: Kurban Sitterley Date: Mon, 10 Jun 2024 08:17:53 -0600 Subject: [PATCH] Flowsheet documentation for IX (#1418) --- docs/_static/flowsheets/ion_exchange.png | Bin 0 -> 50985 bytes docs/technical_reference/flowsheets/index.rst | 1 + .../flowsheets/ion_exchange.rst | 148 ++++++++++++++++++ 3 files changed, 149 insertions(+) create mode 100644 docs/_static/flowsheets/ion_exchange.png create mode 100644 docs/technical_reference/flowsheets/ion_exchange.rst diff --git a/docs/_static/flowsheets/ion_exchange.png b/docs/_static/flowsheets/ion_exchange.png new file mode 100644 index 0000000000000000000000000000000000000000..86921a03b95dae46a085350db7f6470382ba4a81 GIT binary patch literal 50985 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%0DV+1##GgY2mpSgd_}rgRs5 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 literal 0 HcmV?d00001 diff --git a/docs/technical_reference/flowsheets/index.rst b/docs/technical_reference/flowsheets/index.rst index c0b8b04a0c..4ed7b98413 100644 --- a/docs/technical_reference/flowsheets/index.rst +++ b/docs/technical_reference/flowsheets/index.rst @@ -13,4 +13,5 @@ Flowsheets electrodialysis_1stack_conc_recirc electrodialysis_1stack crystallization + ion_exchange gac diff --git a/docs/technical_reference/flowsheets/ion_exchange.rst b/docs/technical_reference/flowsheets/ion_exchange.rst new file mode 100644 index 0000000000..0d1dbc8f78 --- /dev/null +++ b/docs/technical_reference/flowsheets/ion_exchange.rst @@ -0,0 +1,148 @@ +Ion Exchange +============ + +Introduction +------------ + +The simple ion exchange (IX) flowsheet can be simulated to predict the performance of an IX system to remove targeted ions and components. This flowsheet can +be useful to expedite the setup, usage, and costing of an IX system for conventional water treatment applications using the Langmuir isotherm and +the constant pattern assumption. + +Implementation +-------------- + +Consisting of only a single unit operation, the assumptions for the flowsheet are the same as those outlined in the :doc:`IX unit model documentation `: + +1) Model dimensionality is limited to a 0D control volume +2) Single liquid phase only +3) Steady state only +4) Single solute and single solvent (water) only +5) Plug flow conditions +6) Isothermal conditions +7) Favorable Langmuir isotherm + +Figure 1 presents the process flow diagram for the IX model. Blue text represents all of the unit blocks on the flowsheets, and red text +represents process streams (or more specifically, an ``Arc`` that is connected to a ``Port`` on each unit block). + +.. figure:: ../../_static/flowsheets/ion_exchange.png + :width: 1000 + :align: center + + Figure 1. IX demonstration flowsheet. + +The following modeling components are used within the flowsheet: + + Documentation for property models: + * :doc:`/technical_reference/property_models/mc_aq_sol` + Documentation for unit models: + * :doc:`/technical_reference/unit_models/ion_exchange_0D` + Documentation for unit models from IDAES: + * :doc:`idaes:reference_guides/model_libraries/generic/unit_models/feed` + * :doc:`idaes:reference_guides/model_libraries/generic/unit_models/product` + Documentation for costing models: + * :doc:`/technical_reference/costing/watertap_costing` + * :doc:`/technical_reference/costing/ion_exchange` + +The ion exchange flowsheet demonstration proceeds through five steps: + +1. Building the model with ``ix_build``: + This function builds the flowsheet with a list of ions as the input. + If the keyword argument ``target_ion`` is not used, the first ion in the list of ions provided is used as the ``target_ion`` configuration argument for the ``IonExchange0D`` model. + The ion used in the demonstration is calcium (``Ca_2+``), but the local function ``get_ion_config`` can be used to get diffusivity, molecular weight, + and charge data for sodium (``Na_+``), chloride (``Cl_-``), magnesium (``Mg_2+``), and sulfate (``SO4_2-``). This function will also add the flowsheet + level and unit model costing packages, set default scaling for molar flow rates of water and the target ion, create ``Arcs`` to connect + the feed, product, and regen blocks to the IX unit model, and calculate scaling factors for the entire flowsheet. The model is returned from this function. + +2. Defining the operating conditions with ``set_operating_conditions``: + This function is used to set the flow rate and concentration for the flowsheet via the ``flow_in`` and ``conc_mass_in`` + keywords, respectively. It will also set the operating conditions for the IX unit process simulation. Specific variables fixed are in the sections below. + +3. Connecting and initializing individual unit models with ``initialize_system``: + Calling this function will initialize all unit models on the flowsheet (``feed``, ``ion_exchange``, ``product``, and ``regen``), initialize + the ``costing`` block, and propagate the arcs. + +4. Solving the model with ``solver``: + The solver object is returned by calling the WaterTAP function ``get_solver()``. After the model is built, specified, and initialized, + the model has zero degrees of freedom and is solved with ``solver.solve(m)``. The termination condition of the solve is checked and, assuming the solve is optimal, + continues with the optimization demonstration. + +5. Optimizing IX design with ``optimize_system``: + Though not required, this function provides an example of optimizing the design of the IX system for a targeted effluent concentration + of 25 mg/L. The initial model demonstration resulted in an effluent concentration of 0.21 mg/L, so this optimization results in longer breakthrough time + and therefore, a less frequent regeneration schedule and lower operating costs. The optimization proceeds in four steps: + + * First, the function will set an ``Objective`` on the flowsheet to minimize the levelized cost of water (LCOW). + + .. math:: + + LCOW_{Q} = \frac{f_{crf} C_{cap,tot} + C_{op,tot}}{f_{util} Q} + + where :math:`Q` represents volumetric flow, :math:`f_{crf}` represents capital recovery factor :math:`C_{cap,tot}` represents total capital cost, :math:`C_{op,tot}` represents total operating cost, and :math:`f_{util}` represents the utilization factor. Additional information on the costing package calculations and variables can be found in the :doc:`WaterTAP costing framework documentation `. + + * Then, the model fixes the effluent concentration of the IX model to 25 mg/L, propagates that concentration to the product block, and re-initializes the product block with the new targeted concentration. + * Next, three variables are unfixed on the ion exchange model to allow for the model to solve for the new conditions (``dimensionless_time``, ``number_columns``, and the ``bed_depth``). + * Finally, the model is solved for these new conditions. + + Note that stopping at this point will likely result in a non-integer value for ``number_columns``. This value also corresponds to an optimal value for both ``bed_depth`` and + ``dimensionless_time``. The user can optionally ensure the ``number_columns`` is an integer by rounding the ``number_columns`` to an integer value after + the initial optimization solve, fixing ``number_columns`` to that value, and then re-solving the model to obtain the final values for ``bed_depth`` and ``dimensionless_time``. + This is the approach taken in the demonstration file. + +Degrees of Freedom +------------------ + +The degrees of freedom for the flowsheet can change depending on the configuration options specified during the build. +Specifics for other configuration options are available in the :doc:`IX unit model documentation `. +In this demonstration, the following variables are initially fixed for simulating the IX flowsheet (i.e., degrees of freedom = 0): + + * Feed conditions (component flows, temperature, pressure) + * Langmuir equilibrium coefficient for target ion + * Resin capacity, diameter, porosity, and density + * Number of columns for the system + * Service flow rate (loading rate) + * The dimensionless time for the constant-pattern solution + +Flowsheet Specifications +------------------------ + +.. csv-table:: + :header: "Description", "Value", "Units" + + "Feed molar flowrate of water", "2777.5", ":math:`\text{mol}/\text{s}`" + "Feed molar flowrate of target ion", "0.125", ":math:`\text{mol}/\text{s}`" + "Feed temperature", "298.15", ":math:`\text{K}`" + "Feed pressure", "101325", ":math:`\text{Pa}`" + "Langmuir equilibrium coefficient", "0.7", ":math:`\text{dimensionless}`" + "Resin capacity", "3.0", ":math:`\text{mol/kg}`" + "Resin bulk density", "0.7", ":math:`\text{kg/L}`" + "Constant pattern dimensionless time", "1", ":math:`\text{dimensionless}`" + "Number columns", "4", ":math:`\text{dimensionless}`" + "Bed void fraction", "0.5", ":math:`\text{dimensionless}`" + "Bed depth", "1.7", ":math:`\text{m}`" + "Service flow rate (in bed volumes)", "15", ":math:`\text{1/hr}`" + +Future Refinements +------------------ + +The following modifications to the IX flowsheet are planned for development: + + * Add examples of the Freundlich (Clark) ion exchange model. + * Improve auto-scaling of model for ease of use + +Code Documentation +------------------ + +* :mod:`watertap.examples.flowsheets.ion_exchange` + +References +---------- + +| LeVan, M. D., Carta, G., & Yon, C. M. (2019). +| Section 16: Adsorption and Ion Exchange. +| Perry's Chemical Engineers' Handbook, 9th Edition. + +| Inamuddin, & Luqman, M. (2012). +| Ion Exchange Technology I: Theory and Materials. + +| United States Environmental Protection Agency. (2021). Work Breakdown Structure-Based Cost Models +| https://www.epa.gov/sdwa/drinking-water-treatment-technology-unit-cost-models