From b4badf73b7afdac901c8ded2d132379e92e182ca Mon Sep 17 00:00:00 2001 From: Brandon Paul <86113916+bpaul4@users.noreply.github.com> Date: Fri, 26 Apr 2024 07:36:49 -0700 Subject: [PATCH] Add Spell Checker (#103) * CI framework for spell check test * fix some typos * Fixing typos in idaes_examples/mod * Fixing some missed typos * Fixing more typos * Adding a couple of exclusions * `documentaiton` should be `documentation` * `varaibles` should be `variables` * algebriac to algebraic * `relase` should be `release` * `whcih` should be `which` * `addtional` should be `additional` * `upadate` should be `update` * `deafault` should be `default` * `indepedent` should be `independent` * `convienience` should be `convenience` * `memeory` should be `memory` * `desriptors` should be `descriptors` * `Curent` should be `Current` * `coversion` should be `conversion` * `intialization` should be `initialization` * `refered` should be `referred` * `optmization` should be `optimization` * `severl` should be `several` * `compressio` should be `compressor` * `consitute` should be `constitute` * `auxilliary` should be `auxiliary` * piecwise -> piecewise thtat -> that symetry -> symmetry * `acitivity` should be `activity` * `seperation` should be `separation` * `temeprature` should be `temperature` `constrant` should be `constraint` `origional` should be `original` * Fixing some more typos * Fixing some more typos * Fixing some more typos * Fixing some more typos * Update pyproject.toml with more exceptions * correct "inturn" to "in turn" * Revert "`compressio` should be `compressor`" This reverts commit af4ebe781fb2f4aded2c3c9594e4aad374363df6. And then fixes things so that `compressio` (as it appears in the raw .svg files but not in the rendered images) is actually replaced by `compression` (such that the typos command won't complain). * Remove RIPE example exceptions * "Diagnositcs" should be "Diagnostics" * "maxmimum" should be "maximum" * "discrepency" should be "discrepancy" * "auxilaries" should be "auxiliaries" * "Stream_lables_leader" should be "Stream_label_leader" * Add regex to exclude "ser" as it appears in pandas warnings See IDAES/examples#108 * Try recreating the ngcc init file after changes in 4b805f3f0 * Update "Ba" exception comment --------- Co-authored-by: Andrew Lee Co-authored-by: Keith Beattie Co-authored-by: Javal Vyas Co-authored-by: Ludovico Bianchi --- .github/workflows/core.yml | 10 +++ .../boiler_flowsheet_recon_src.ipynb | 2 +- .../data_reconciliation/econ_recon_src.ipynb | 8 +- .../bifunctional_surface_design_src.ipynb | 4 +- .../bimetallic_nanocluster_design_src.ipynb | 2 +- .../monometallic_nanocluster_design_src.ipynb | 10 +-- .../archive/matopt/nanowire_design_src.ipynb | 4 +- .../archive/matopt/surface_design_src.ipynb | 10 +-- .../archive/power_gen/ngfc/NGFC_results.svg | 2 +- .../power_gen/ngfc/NGFC_results_template.svg | 2 +- .../power_gen/ngfc/ngfc_flowsheet_src.ipynb | 18 +++- idaes_examples/archive/power_gen/rsofc/cpu.py | 6 +- .../power_gen/rsofc/rsofc_soec_flowsheet.py | 6 +- .../power_gen/rsofc/rsofc_soec_mode_PFD.svg | 2 +- .../rsofc/rsofc_soec_mode_template.svg | 2 +- .../power_gen/rsofc/rsofc_soec_results.svg | 2 +- .../power_gen/rsofc/rsofc_soec_src.ipynb | 2 +- .../archive/power_gen/soec/soec.ipynb | 4 +- idaes_examples/archive/power_gen/soec/soec.py | 4 +- .../soec/soec_standalone_template.svg | 2 +- idaes_examples/archive/power_gen/sofc/sofc.py | 2 +- .../archive/power_gen/sofc/sofc_rom.py | 8 +- .../power_gen/sofc_soec/sofc_with_soec.py | 2 +- .../subcritical/subcritical_boiler_src.ipynb | 12 +-- .../supercritical_power_plant_src.ipynb | 32 +++---- .../supercritical_steam_cycle_src.ipynb | 32 +++---- .../NETL_32D_gas_phase_thermo.py | 6 +- .../NETL_32D_solid_phase_thermo.py | 6 +- .../mod/dae/petsc/pid_steam_tank.py | 4 +- idaes_examples/mod/hda/hda_ideal_VLE.py | 14 ++-- .../mod/methanol/methanol_param_VLE.py | 4 +- .../mod/methanol/methanol_state_block_VLE.py | 8 +- idaes_examples/mod/power_gen/SOFC_ROM.py | 2 +- idaes_examples/mod/power_gen/gas_turbine.py | 22 ++--- idaes_examples/mod/power_gen/hrsg.py | 4 +- idaes_examples/mod/power_gen/ngcc.py | 8 +- .../mod/power_gen/ngcc_soec_costing.py | 4 +- .../mod/power_gen/soc_dynamic_flowsheet.py | 2 +- idaes_examples/mod/power_gen/soec.py | 6 +- .../thermophysical_property_example.py | 6 +- .../power_gen/ngcc/data_pfds/st_baseline.svg | 2 +- .../power_gen/ngcc/data_pfds/st_soec_base.svg | 2 +- .../active/power_gen/ngcc/ngcc.ipynb | 2 +- .../active/power_gen/ngcc/ngcc_doc.ipynb | 6 +- .../active/power_gen/ngcc/ngcc_init.json.gz | Bin 339665 -> 352096 bytes .../active/power_gen/ngcc/ngcc_test.ipynb | 4 +- .../active/power_gen/ngcc/ngcc_usr.ipynb | 4 +- .../power_gen/ngcc/steam_turbine_template.svg | 2 +- .../notebooks/docs/dae/petsc_chem.ipynb | 2 +- .../notebooks/docs/dae/petsc_chem_doc.ipynb | 4 +- .../notebooks/docs/dae/petsc_chem_test.ipynb | 6 +- .../notebooks/docs/dae/petsc_chem_usr.ipynb | 6 +- .../diagnostics/diagnostics_toolbox.ipynb | 6 +- .../diagnostics/diagnostics_toolbox_doc.ipynb | 4 +- .../diagnostics_toolbox_exercise.ipynb | 8 +- .../diagnostics_toolbox_solution.ipynb | 8 +- .../diagnostics_toolbox_test.ipynb | 4 +- .../diagnostics/diagnostics_toolbox_usr.ipynb | 8 +- .../hda_flowsheet_with_costing.ipynb | 2 +- .../hda_flowsheet_with_costing_doc.ipynb | 4 +- .../hda_flowsheet_with_costing_test.ipynb | 6 +- .../hda_flowsheet_with_costing_usr.ipynb | 6 +- .../hda_flowsheet_with_distillation.ipynb | 9 +- .../hda_flowsheet_with_distillation_doc.ipynb | 8 +- ...flowsheet_with_distillation_exercise.ipynb | 13 ++- ...flowsheet_with_distillation_solution.ipynb | 13 ++- ...hda_flowsheet_with_distillation_test.ipynb | 13 ++- .../hda_flowsheet_with_distillation_usr.ipynb | 13 ++- .../docs/flowsheets/methanol_synthesis.ipynb | 6 +- .../flowsheets/methanol_synthesis_doc.ipynb | 8 +- .../flowsheets/methanol_synthesis_test.ipynb | 8 +- .../flowsheets/methanol_synthesis_usr.ipynb | 8 +- .../docs/flowsheets/solver_captured.py | 6 +- .../temperature_swing_adsorption.ipynb | 4 +- .../temperature_swing_adsorption_doc.ipynb | 6 +- .../temperature_swing_adsorption_test.ipynb | 6 +- .../temperature_swing_adsorption_usr.ipynb | 6 +- ...ter_estimation_nrtl_using_unit_model.ipynb | 5 +- ...estimation_nrtl_using_unit_model_doc.ipynb | 4 +- ...ation_nrtl_using_unit_model_exercise.ipynb | 7 +- ...ation_nrtl_using_unit_model_solution.ipynb | 7 +- ...stimation_nrtl_using_unit_model_test.ipynb | 7 +- ...estimation_nrtl_using_unit_model_usr.ipynb | 7 +- .../solid_oxide_cell/soc_pid_control.ipynb | 4 +- .../soc_pid_control_doc.ipynb | 4 +- .../soc_pid_control_test.ipynb | 4 +- .../soc_pid_control_usr.ipynb | 4 +- .../custom_physical_property_packages.ipynb | 6 +- ...ustom_physical_property_packages_doc.ipynb | 8 +- ...stom_physical_property_packages_test.ipynb | 78 +++++++++--------- ...ustom_physical_property_packages_usr.ipynb | 78 +++++++++--------- .../properties/parameter_estimation_pr.ipynb | 2 +- .../parameter_estimation_pr_doc.ipynb | 4 +- .../parameter_estimation_pr_test.ipynb | 4 +- .../parameter_estimation_pr_usr.ipynb | 4 +- .../best_practices_optimization.ipynb | 6 +- .../best_practices_optimization_doc.ipynb | 6 +- .../best_practices_optimization_test.ipynb | 6 +- .../best_practices_optimization_usr.ipynb | 6 +- .../docs/surrogates/pysmo/pysmo_basics.ipynb | 2 +- .../surrogates/pysmo/pysmo_basics_doc.ipynb | 4 +- .../surrogates/pysmo/pysmo_basics_test.ipynb | 4 +- .../surrogates/pysmo/pysmo_basics_usr.ipynb | 4 +- .../sco2/alamo/alamo_training.ipynb | 2 +- .../sco2/alamo/alamo_training_doc.ipynb | 2 +- .../sco2/alamo/alamo_training_test.ipynb | 2 +- .../sco2/alamo/alamo_training_usr.ipynb | 2 +- .../sco2/alamo/flowsheet_optimization.ipynb | 2 +- .../alamo/flowsheet_optimization_doc.ipynb | 2 +- .../alamo/flowsheet_optimization_test.ipynb | 2 +- .../alamo/flowsheet_optimization_usr.ipynb | 2 +- .../docs/surrogates/sco2/alamo/properties.py | 10 +-- .../sco2/alamo/surrogate_embedding.ipynb | 20 ++--- .../sco2/alamo/surrogate_embedding_doc.ipynb | 20 ++--- .../sco2/alamo/surrogate_embedding_test.ipynb | 20 ++--- .../sco2/alamo/surrogate_embedding_usr.ipynb | 20 ++--- .../sco2/omlt/flowsheet_optimization.ipynb | 2 +- .../omlt/flowsheet_optimization_doc.ipynb | 2 +- .../omlt/flowsheet_optimization_test.ipynb | 2 +- .../omlt/flowsheet_optimization_usr.ipynb | 2 +- .../surrogates/sco2/omlt/keras_training.ipynb | 4 +- .../sco2/omlt/keras_training_doc.ipynb | 4 +- .../sco2/omlt/keras_training_test.ipynb | 4 +- .../sco2/omlt/keras_training_usr.ipynb | 4 +- .../docs/surrogates/sco2/omlt/properties.py | 10 +-- .../sco2/omlt/surrogate_embedding.ipynb | 20 ++--- .../sco2/omlt/surrogate_embedding_doc.ipynb | 20 ++--- .../sco2/omlt/surrogate_embedding_test.ipynb | 20 ++--- .../sco2/omlt/surrogate_embedding_usr.ipynb | 20 ++--- .../sco2/pysmo/flowsheet_optimization.ipynb | 2 +- .../pysmo/flowsheet_optimization_doc.ipynb | 2 +- .../pysmo/flowsheet_optimization_test.ipynb | 2 +- .../pysmo/flowsheet_optimization_usr.ipynb | 2 +- .../docs/surrogates/sco2/pysmo/properties.py | 10 +-- .../sco2/pysmo/pysmo_training.ipynb | 4 +- .../sco2/pysmo/pysmo_training_doc.ipynb | 4 +- .../sco2/pysmo/pysmo_training_test.ipynb | 4 +- .../sco2/pysmo/pysmo_training_usr.ipynb | 4 +- .../sco2/pysmo/surrogate_embedding.ipynb | 20 ++--- .../sco2/pysmo/surrogate_embedding_doc.ipynb | 20 ++--- .../sco2/pysmo/surrogate_embedding_test.ipynb | 20 ++--- .../sco2/pysmo/surrogate_embedding_usr.ipynb | 20 ++--- .../notebooks/docs/tut/core/flash_unit.ipynb | 4 +- .../docs/tut/core/flash_unit_doc.ipynb | 6 +- .../docs/tut/core/flash_unit_exercise.ipynb | 6 +- .../docs/tut/core/flash_unit_solution.ipynb | 6 +- .../docs/tut/core/flash_unit_test.ipynb | 6 +- .../docs/tut/core/flash_unit_usr.ipynb | 6 +- .../docs/tut/core/hda_flowsheet.ipynb | 7 +- .../docs/tut/core/hda_flowsheet_doc.ipynb | 6 +- .../tut/core/hda_flowsheet_exercise.ipynb | 11 ++- .../tut/core/hda_flowsheet_solution.ipynb | 11 ++- .../docs/tut/core/hda_flowsheet_test.ipynb | 11 ++- .../docs/tut/core/hda_flowsheet_usr.ipynb | 11 ++- .../custom_compressor.ipynb | 2 +- .../custom_compressor_doc.ipynb | 4 +- .../custom_compressor_test.ipynb | 4 +- .../custom_compressor_usr.ipynb | 4 +- .../unit_models/operations/compressor.ipynb | 6 +- .../operations/compressor_doc.ipynb | 8 +- .../operations/compressor_test.ipynb | 8 +- .../operations/compressor_usr.ipynb | 8 +- .../operations/heat_exchanger_0d.ipynb | 2 +- .../operations/heat_exchanger_0d_doc.ipynb | 4 +- .../operations/heat_exchanger_0d_test.ipynb | 4 +- .../operations/heat_exchanger_0d_usr.ipynb | 4 +- .../docs/unit_models/operations/heater.ipynb | 2 +- .../unit_models/operations/heater_doc.ipynb | 4 +- .../unit_models/operations/heater_test.ipynb | 4 +- .../unit_models/operations/heater_usr.ipynb | 4 +- .../docs/unit_models/operations/pump.ipynb | 4 +- .../unit_models/operations/pump_doc.ipynb | 6 +- .../unit_models/operations/pump_test.ipynb | 6 +- .../unit_models/operations/pump_usr.ipynb | 6 +- .../operations/skeleton_unit.ipynb | 6 +- .../operations/skeleton_unit_doc.ipynb | 8 +- .../operations/skeleton_unit_test.ipynb | 8 +- .../operations/skeleton_unit_usr.ipynb | 8 +- .../docs/unit_models/operations/turbine.ipynb | 4 +- .../unit_models/operations/turbine_doc.ipynb | 6 +- .../unit_models/operations/turbine_test.ipynb | 6 +- .../unit_models/operations/turbine_usr.ipynb | 6 +- .../docs/unit_models/reactors/cstr.ipynb | 4 +- .../docs/unit_models/reactors/cstr_doc.ipynb | 6 +- .../docs/unit_models/reactors/cstr_test.ipynb | 8 +- .../docs/unit_models/reactors/cstr_usr.ipynb | 8 +- .../reactors/equilibrium_reactor.ipynb | 5 +- .../reactors/equilibrium_reactor_doc.ipynb | 4 +- .../reactors/equilibrium_reactor_test.ipynb | 11 ++- .../reactors/equilibrium_reactor_usr.ipynb | 11 ++- .../reactors/plug_flow_reactor.ipynb | 8 +- .../reactors/plug_flow_reactor_doc.ipynb | 6 +- .../reactors/plug_flow_reactor_test.ipynb | 8 +- .../reactors/plug_flow_reactor_usr.ipynb | 8 +- .../reactors/stoichiometric_reactor.ipynb | 7 +- .../reactors/stoichiometric_reactor_doc.ipynb | 6 +- .../stoichiometric_reactor_test.ipynb | 11 ++- .../reactors/stoichiometric_reactor_usr.ipynb | 11 ++- ...CO2_Adsorption_Desorption_1DFixedBed.ipynb | 10 ++- ...Adsorption_Desorption_1DFixedBed_doc.ipynb | 10 +-- ...dsorption_Desorption_1DFixedBed_test.ipynb | 10 +-- ...Adsorption_Desorption_1DFixedBed_usr.ipynb | 10 +-- pyproject.toml | 32 +++++++ tutorial.md | 2 +- 204 files changed, 793 insertions(+), 758 deletions(-) diff --git a/.github/workflows/core.yml b/.github/workflows/core.yml index 1c7213b5..72140e5e 100644 --- a/.github/workflows/core.yml +++ b/.github/workflows/core.yml @@ -44,10 +44,20 @@ defaults: shell: bash -l {0} jobs: + spell-check: + name: Check Spelling + runs-on: ubuntu-latest + steps: + - name: Checkout source + uses: actions/checkout@v3 + - name: Run Spell Checker + uses: crate-ci/typos@master + pytest: # description: Run pytest with dev dependencies name: pytest (py${{ matrix.python-version }}/${{ matrix.os }}) runs-on: ${{ matrix.runner-image }} + needs: [spell-check] strategy: fail-fast: false matrix: diff --git a/idaes_examples/archive/data_reconciliation/boiler_flowsheet_recon_src.ipynb b/idaes_examples/archive/data_reconciliation/boiler_flowsheet_recon_src.ipynb index 15a6b0fc..402842e8 100644 --- a/idaes_examples/archive/data_reconciliation/boiler_flowsheet_recon_src.ipynb +++ b/idaes_examples/archive/data_reconciliation/boiler_flowsheet_recon_src.ipynb @@ -614,7 +614,7 @@ "outputs": [], "source": [ "# Add the model references to the tag metadata based on the strings above.\n", - "da.upadate_metadata_model_references(m, df_meta)" + "da.update_metadata_model_references(m, df_meta)" ] }, { diff --git a/idaes_examples/archive/data_reconciliation/econ_recon_src.ipynb b/idaes_examples/archive/data_reconciliation/econ_recon_src.ipynb index 797b63df..503c399f 100644 --- a/idaes_examples/archive/data_reconciliation/econ_recon_src.ipynb +++ b/idaes_examples/archive/data_reconciliation/econ_recon_src.ipynb @@ -118,7 +118,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "It can be useful to visualize the measurement data and estimated uncertainty. The following creates box and whisker plots for each tag based on the data bins. A large number of plots may be created, so to manage them more easily, they are saved as PDFs and merged into a single multi-page PDF document. The deafault file name for the resulting PDF is \"data_plot_book.pdf.\"" + "It can be useful to visualize the measurement data and estimated uncertainty. The following creates box and whisker plots for each tag based on the data bins. A large number of plots may be created, so to manage them more easily, they are saved as PDFs and merged into a single multi-page PDF document. The default file name for the resulting PDF is \"data_plot_book.pdf.\"" ] }, { @@ -384,7 +384,7 @@ "outputs": [], "source": [ "# Add the model references to the tag metadata based on the strings above.\n", - "da.upadate_metadata_model_references(m, df_meta)" + "da.update_metadata_model_references(m, df_meta)" ] }, { @@ -413,7 +413,7 @@ "from idaes.core.util.tags import ModelTagGroup\n", "\n", "# This function creates a dictionary of streams based of streams based on model arcs. The function\n", - "# also takes an addtional set of stream-like objects for add to the stream dictionary. In this case,\n", + "# also takes an additional set of stream-like objects for add to the stream dictionary. In this case,\n", "# this is a single unit and the flowsheet doesn't contain any arcs, so we add the economized inlet and\n", "# outlet ports to the stream dictionary.\n", "stream_dict = ta.arcs_to_stream_dict(\n", @@ -459,7 +459,7 @@ " except KeyError:\n", " pass\n", "\n", - "# Any addtional tags can be added. This is required for tags that cannot be systematically generated\n", + "# Any additional tags can be added. This is required for tags that cannot be systematically generated\n", "# from the model streams.\n", "recon_tags.add(expr=m.fs.econ.heat_duty[0], name=\"ECON_Q\", format_string=\"{:.3f}\")" ] diff --git a/idaes_examples/archive/matopt/bifunctional_surface_design_src.ipynb b/idaes_examples/archive/matopt/bifunctional_surface_design_src.ipynb index d9a0ce4e..b123df61 100644 --- a/idaes_examples/archive/matopt/bifunctional_surface_design_src.ipynb +++ b/idaes_examples/archive/matopt/bifunctional_surface_design_src.ipynb @@ -43,7 +43,7 @@ "metadata": {}, "source": [ "## Importing Packages\n", - "We start by importing several standard Python modules for convienience. " + "We start by importing several standard Python modules for convenience. " ] }, { @@ -339,7 +339,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Finally, we introduce a single descriptor for the weighted combination of acitivity and stability. \n", + "Finally, we introduce a single descriptor for the weighted combination of activity and stability. \n", "By changing the parameter weighting the catalytic portion of the objective function, we can optimize for a range of designs optimizing stability and activity. " ] }, diff --git a/idaes_examples/archive/matopt/bimetallic_nanocluster_design_src.ipynb b/idaes_examples/archive/matopt/bimetallic_nanocluster_design_src.ipynb index 643ce34c..a1872731 100644 --- a/idaes_examples/archive/matopt/bimetallic_nanocluster_design_src.ipynb +++ b/idaes_examples/archive/matopt/bimetallic_nanocluster_design_src.ipynb @@ -45,7 +45,7 @@ "source": [ "## Importing Packages\n", "\n", - "We start by importing several standard Python modules for convienience." + "We start by importing several standard Python modules for convenience." ] }, { diff --git a/idaes_examples/archive/matopt/monometallic_nanocluster_design_src.ipynb b/idaes_examples/archive/matopt/monometallic_nanocluster_design_src.ipynb index 32b4955b..b4a900c3 100644 --- a/idaes_examples/archive/matopt/monometallic_nanocluster_design_src.ipynb +++ b/idaes_examples/archive/matopt/monometallic_nanocluster_design_src.ipynb @@ -34,10 +34,10 @@ "\n", "In this module, we introduce the **MatOpt** interface for representing material properties and specifying optimization problems. \n", "\n", - "We have designed the interface with severl goals in mind:\n", + "We have designed the interface with several goals in mind:\n", "\n", "1. To **simplify the representation of nanostructured materials,** streamlining the creation of materials optimization problems. \n", - "2. To provide a simple interface so that users **do not need to understand the details of building mathematical optmization models** or the syntax of the Pyomo package. \n", + "2. To provide a simple interface so that users **do not need to understand the details of building mathematical optimization models** or the syntax of the Pyomo package. \n", "3. To **automate many of the common steps of materials optimization,** speeding up the development of new models. \n", "\n", "As an example system, we will consider the minimization of cohesive energy in nanoclusters, recently demonstrated in:\n", @@ -45,7 +45,7 @@ "Isenberg, N. M., et al., \"Identification of Optimally Stable Nanocluster Geometries via Mathematical Optimization and Density Functional Theory,\" *Molecular Systems Design & Engineering* 5 (2020): 232-244. DOI: [10.1039/C9ME00108E](https://pubs.rsc.org/en/content/articlelanding/2020/me/c9me00108e#!divAbstract).\n", "\n", "We seek to identify the geometry that minimizes the cohesive energy of a nanocluster on the face-centered cubic (FCC) lattice. \n", - "As a model for cohesive energy, we use model based on the square-root of coordination number, refered to as the Tomanek model [[1]](https://journals.aps.org/prb/abstract/10.1103/PhysRevB.28.665).\n", + "As a model for cohesive energy, we use model based on the square-root of coordination number, referred to as the Tomanek model [[1]](https://journals.aps.org/prb/abstract/10.1103/PhysRevB.28.665).\n", "In the equation below, we define the normalized cohesive energy, as the normalized contribution of the square root of the coordination number. \n", "\n", "$$\\hat{E}^{\\text{surf}} = \\frac{1}{N \\sqrt{12}} \\displaystyle \\sum_i \\sqrt{CN_i} $$\n", @@ -178,7 +178,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The MatOptModel additionally hold lists of ***MaterialDescriptor*** objects that define the relevant material desriptors. \n", + "The MatOptModel additionally hold lists of ***MaterialDescriptor*** objects that define the relevant material descriptors. \n", "By default, several universal site descriptors are pre-defined in the model. \n", "From these, all other material descriptors can be defined.\n", "\n", @@ -353,7 +353,7 @@ " Default: True\n", " tilim (float): Optional, solver time limit (in seconds).\n", " Default: 3600\n", - " trelim (float): Optional, solver tree memeory limit (in MB).\n", + " trelim (float): Optional, solver tree memory limit (in MB).\n", " Default: None (i.e., Pyomo/CPLEX default)\n", " solver (str): Solver choice. Currently only cplex or neos-cplex are supported\n", " Default: cplex\n", diff --git a/idaes_examples/archive/matopt/nanowire_design_src.ipynb b/idaes_examples/archive/matopt/nanowire_design_src.ipynb index 2111fb33..a1070c8e 100644 --- a/idaes_examples/archive/matopt/nanowire_design_src.ipynb +++ b/idaes_examples/archive/matopt/nanowire_design_src.ipynb @@ -40,7 +40,7 @@ "metadata": {}, "source": [ "## Importing Packages\n", - "We start by importing several standard Python modules for convienience. " + "We start by importing several standard Python modules for convenience. " ] }, { @@ -161,7 +161,7 @@ "source": [ "## Building a Model\n", "\n", - "In this example, we will build a model that maximizes the cohesive energy of the nanowire as an indicator of it's thermal stability. To begin, we start by creating a **MatOptModel** object to hold information about the model. Notice that we use a list of empty atoms as our set of building blocks because we will use a cohesive energy function for semiconductor materials that is indepedent of atom types. Thus, we do not need to specify the types of building blocks in our model." + "In this example, we will build a model that maximizes the cohesive energy of the nanowire as an indicator of it's thermal stability. To begin, we start by creating a **MatOptModel** object to hold information about the model. Notice that we use a list of empty atoms as our set of building blocks because we will use a cohesive energy function for semiconductor materials that is independent of atom types. Thus, we do not need to specify the types of building blocks in our model." ] }, { diff --git a/idaes_examples/archive/matopt/surface_design_src.ipynb b/idaes_examples/archive/matopt/surface_design_src.ipynb index 8923413b..49861f88 100644 --- a/idaes_examples/archive/matopt/surface_design_src.ipynb +++ b/idaes_examples/archive/matopt/surface_design_src.ipynb @@ -42,7 +42,7 @@ "metadata": {}, "source": [ "## Importing Packages\n", - "We start by importing several standard Python modules for convienience. " + "We start by importing several standard Python modules for convenience. " ] }, { @@ -211,7 +211,7 @@ "source": [ "First, we introduce two rules to fix special sites in the design. \n", "We fix the bottom two layers of atoms to exist, creating underlying bulk layers above which we will introduce nanostruced defets.\n", - "We also fix an arbitrary atom in the top layer, breaking symetry of the design space and resulting in easier to solve opitmization problems without actually restricting the designs that can be possibly represented. " + "We also fix an arbitrary atom in the top layer, breaking symmetry of the design space and resulting in easier to solve opitmization problems without actually restricting the designs that can be possibly represented. " ] }, { @@ -241,7 +241,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Next, we introduce constraints thtat require atoms to be placed on top of each other, avoiding hollow pockets below the surface. " + "Next, we introduce constraints that require atoms to be placed on top of each other, avoiding hollow pockets below the surface. " ] }, { @@ -311,7 +311,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Next, we define a simple model for the surface energy of nanostructured slabs as a piecwise linear function of coordination number. " + "Next, we define a simple model for the surface energy of nanostructured slabs as a piecewise linear function of coordination number. " ] }, { @@ -473,7 +473,7 @@ "metadata": {}, "source": [ "## Processing Solutions\n", - "Once the model is solved, we can plot the resulting design. However, it is often useful to label atoms according to some auxilliary information. In this case, we would like to label atoms that consitute ideal reactive sites. We loop over the sites and set the atom to S to highlight the sites that are reactive. Then, we can write the Design object to PDB or CFG files for plotting.\n", + "Once the model is solved, we can plot the resulting design. However, it is often useful to label atoms according to some auxiliary information. In this case, we would like to label atoms that constitute ideal reactive sites. We loop over the sites and set the atom to S to highlight the sites that are reactive. Then, we can write the Design object to PDB or CFG files for plotting.\n", "\n", "Additionally, we can manipulate the resulting design to better see the periodic pattern. Here, we replicate the design four times to see the periodic pattern. " ] diff --git a/idaes_examples/archive/power_gen/ngfc/NGFC_results.svg b/idaes_examples/archive/power_gen/ngfc/NGFC_results.svg index 6f97ba45..e15a7f3c 100644 --- a/idaes_examples/archive/power_gen/ngfc/NGFC_results.svg +++ b/idaes_examples/archive/power_gen/ngfc/NGFC_results.svg @@ -500,4 +500,4 @@ Pre-Reformer -621 K137 kPaSYN_INT:P:3,639 mol/sF:979 K137 kPaANODE_RECT:P:4,076 mol/sF:890 K105 kPaCATH_INT:P:34,162 mol/sF:998 K104 kPaCATH_OUTT:P:32,492 mol/sF:998 K104 kPaCATH_HX_HIT:P:16,246 mol/sF:288 K101 kPaAIRT:P:17,916 mol/sF:834 K137 kPaANODE_INT:P:8,029 mol/sF:978 K137 kPaANO_HX_HIT:P:5,080 mol/sF:825 K136 kPaANO_HX_HOT:P:5,080 mol/sF:814 K137 kPaANO_HX_CIT:P:7,715 mol/sF:978 K137 kPaANODE_OUTT:P:9,157 mol/sF:476 K102 kPaCATH_HX_HOT:P:16,246 mol/sF:1,002 K105 kPaCATH_RECT:P:16,246 mol/sF:297 K111 kPaCATH_HX_CIT:P:17,916 mol/sF:787 K105 kPaCATH_HX_COT:P:17,916 mol/sF:348.30.6617.3ROM InputsFuel Inlet Temperature (C):Internal Reformation fraction:Air Inlet Temperature (C):4,000Avg. Curent Density (A/m^2):0.5Air Recirculation fraction:2.1Oxygen to Carbon ratio:Fuel Utilization fraction:Air Utilization fraction:0.80.449558.7ROM OutputsDC Stack Power (MW):0.8668Stack Voltage (V):30.61264.97-673.02Heat Duties (MW)Anode Heat Exchanger:Cathode Heat Exchanger:Anode:48.0Reformer Recuperator:114.32Cathode:422 K206 kPaSTEAM_INT:P:464 mol/sF:310 K203 kPaAIR_INT:P:1,332 mol/sF:746 K206 kPaREF_INT:P:464 mol/sF:288 K3,447 kPaFUEL_INT:P:1,161 mol/sF:1,060 K137 kPaREF_OUTT:P:2,942 mol/sF:1,265 K95 kPaCOMB_OUTT:P:9,537 mol/sF:405 K94 kPaANOD_EXHT:P:9,537 mol/sF:476 K102 kPaCOMB_AIRT:P:4,873 mol/sF:405 K101 kPaCATH_EXHT:P:11,372 mol/sF:476 K102 kPaCATH_HRSG_INT:P:11,372 mol/sF:107.121.110.3Performance SummarySteam Turbine Power (MW):NG Expander Power (MW):Auxiliary Load (MW):541.9AC Stack Power (MW):659.8Net Power (MW):Thermal Input (MW):HHV Efficiency (%):CO2 Emissions (g/kWh):1,056.0291.262.481,010 K3,447 kPaHOT_FUELT:P:1,161 mol/sF: \ No newline at end of file +621 K137 kPaSYN_INT:P:3,642 mol/sF:979 K137 kPaANODE_RECT:P:4,084 mol/sF:890 K105 kPaCATH_INT:P:34,197 mol/sF:998 K104 kPaCATH_OUTT:P:32,525 mol/sF:998 K104 kPaCATH_HX_HIT:P:16,262 mol/sF:288 K101 kPaAIRT:P:17,934 mol/sF:834 K137 kPaANODE_INT:P:8,041 mol/sF:978 K137 kPaANO_HX_HIT:P:5,084 mol/sF:825 K136 kPaANO_HX_HOT:P:5,084 mol/sF:814 K137 kPaANO_HX_CIT:P:7,727 mol/sF:978 K137 kPaANODE_OUTT:P:9,169 mol/sF:476 K102 kPaCATH_HX_HOT:P:16,262 mol/sF:1,002 K105 kPaCATH_RECT:P:16,262 mol/sF:297 K111 kPaCATH_HX_CIT:P:17,934 mol/sF:787 K105 kPaCATH_HX_COT:P:17,934 mol/sF:348.30.6617.3ROM InputsFuel Inlet Temperature (C):Internal Reformation fraction:Air Inlet Temperature (C):4,000Avg. Current Density (A/m^2):0.5Air Recirculation fraction:2.1Oxygen to Carbon ratio:Fuel Utilization fraction:Air Utilization fraction:0.80.449559.3ROM OutputsDC Stack Power (MW):0.8668Stack Voltage (V):30.6265.17-673.92Heat Duties (MW)Anode Heat Exchanger:Cathode Heat Exchanger:Anode:48.1Reformer Recuperator:114.57Cathode:422 K206 kPaSTEAM_INT:P:464 mol/sF:310 K203 kPaAIR_INT:P:1,333 mol/sF:747 K206 kPaREF_INT:P:465 mol/sF:288 K3,447 kPaFUEL_INT:P:1,161 mol/sF:1,060 K137 kPaREF_OUTT:P:2,944 mol/sF:1,265 K95 kPaCOMB_OUTT:P:9,545 mol/sF:405 K94 kPaANOD_EXHT:P:9,546 mol/sF:476 K102 kPaCOMB_AIRT:P:4,878 mol/sF:405 K101 kPaCATH_EXHT:P:11,384 mol/sF:476 K102 kPaCATH_HRSG_INT:P:11,384 mol/sF:107.321.110.4Performance SummarySteam Turbine Power (MW):NG Expander Power (MW):Auxiliary Load (MW):542.6AC Stack Power (MW):660.6Net Power (MW):Thermal Input (MW):HHV Efficiency (%):CO2 Emissions (g/kWh):1,056.0291.262.561,012 K3,447 kPaHOT_FUELT:P:1,161 mol/sF: \ No newline at end of file diff --git a/idaes_examples/archive/power_gen/ngfc/NGFC_results_template.svg b/idaes_examples/archive/power_gen/ngfc/NGFC_results_template.svg index 3e9ebc6f..2079cfd2 100644 --- a/idaes_examples/archive/power_gen/ngfc/NGFC_results_template.svg +++ b/idaes_examples/archive/power_gen/ngfc/NGFC_results_template.svg @@ -3896,7 +3896,7 @@ y="493.27994" x="-444.19608" id="tspan9468-5-5-3" - sodipodi:role="line">Avg. Curent Density (A/m^2):Avg. Current Density (A/m^2):" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "from IPython.display import Image\n", "\n", @@ -120,7 +132,7 @@ "\n", "The sequence of ```build_power_island()```, ```scale_flowsheet()```, ```set_power_island_inputs()```, and ```initialize_power_island()``` creates and initializes the unit models in the power island. At this stage, the inlet to the anode side of the power island is a guess of the syngas conditions. Then the solver is called to finalize the solution to the power island. The solution to the reformer section remains unaffected.\n", "\n", - "To combine the two sections ```connect_reformer_to_power_island()``` is called. The funtion unfixes the guess for the inlet to power island and connects the outlet of the reformer section to it. Then the solver is called a third time on the fully connected flowsheet.\n", + "To combine the two sections ```connect_reformer_to_power_island()``` is called. The function unfixes the guess for the inlet to power island and connects the outlet of the reformer section to it. Then the solver is called a third time on the fully connected flowsheet.\n", "\n", "In execution order, the flowsheet builds each of the two subsections, scales model constraints, sets inputs, initializes independently, and connects the two subsections.\n", "\n", @@ -1004,7 +1016,7 @@ "\t\t\t\n", "\t\t\tPre-Reformer\t\t\n", "\t\n", - "621 K137 kPaSYN_INT:P:3,639 mol/sF:979 K137 kPaANODE_RECT:P:4,076 mol/sF:890 K105 kPaCATH_INT:P:34,162 mol/sF:998 K104 kPaCATH_OUTT:P:32,492 mol/sF:998 K104 kPaCATH_HX_HIT:P:16,246 mol/sF:288 K101 kPaAIRT:P:17,916 mol/sF:834 K137 kPaANODE_INT:P:8,029 mol/sF:978 K137 kPaANO_HX_HIT:P:5,080 mol/sF:825 K136 kPaANO_HX_HOT:P:5,080 mol/sF:814 K137 kPaANO_HX_CIT:P:7,715 mol/sF:978 K137 kPaANODE_OUTT:P:9,157 mol/sF:476 K102 kPaCATH_HX_HOT:P:16,246 mol/sF:1,002 K105 kPaCATH_RECT:P:16,246 mol/sF:297 K111 kPaCATH_HX_CIT:P:17,916 mol/sF:787 K105 kPaCATH_HX_COT:P:17,916 mol/sF:348.30.6617.3ROM InputsFuel Inlet Temperature (C):Internal Reformation fraction:Air Inlet Temperature (C):4,000Avg. Curent Density (A/m^2):0.5Air Recirculation fraction:2.1Oxygen to Carbon ratio:Fuel Utilization fraction:Air Utilization fraction:0.80.449558.7ROM OutputsDC Stack Power (MW):0.8668Stack Voltage (V):30.61264.97-673.02Heat Duties (MW)Anode Heat Exchanger:Cathode Heat Exchanger:Anode:48.0Reformer Recuperator:114.32Cathode:422 K206 kPaSTEAM_INT:P:464 mol/sF:310 K203 kPaAIR_INT:P:1,332 mol/sF:746 K206 kPaREF_INT:P:464 mol/sF:288 K3,447 kPaFUEL_INT:P:1,161 mol/sF:1,060 K137 kPaREF_OUTT:P:2,942 mol/sF:1,265 K95 kPaCOMB_OUTT:P:9,537 mol/sF:405 K94 kPaANOD_EXHT:P:9,537 mol/sF:476 K102 kPaCOMB_AIRT:P:4,873 mol/sF:405 K101 kPaCATH_EXHT:P:11,372 mol/sF:476 K102 kPaCATH_HRSG_INT:P:11,372 mol/sF:107.121.110.3Performance SummarySteam Turbine Power (MW):NG Expander Power (MW):Auxiliary Load (MW):541.9AC Stack Power (MW):659.8Net Power (MW):Thermal Input (MW):HHV Efficiency (%):CO2 Emissions (g/kWh):1,056.0291.262.481,010 K3,447 kPaHOT_FUELT:P:1,161 mol/sF:" + "621 K137 kPaSYN_INT:P:3,642 mol/sF:979 K137 kPaANODE_RECT:P:4,084 mol/sF:890 K105 kPaCATH_INT:P:34,197 mol/sF:998 K104 kPaCATH_OUTT:P:32,525 mol/sF:998 K104 kPaCATH_HX_HIT:P:16,262 mol/sF:288 K101 kPaAIRT:P:17,934 mol/sF:834 K137 kPaANODE_INT:P:8,041 mol/sF:978 K137 kPaANO_HX_HIT:P:5,084 mol/sF:825 K136 kPaANO_HX_HOT:P:5,084 mol/sF:814 K137 kPaANO_HX_CIT:P:7,727 mol/sF:978 K137 kPaANODE_OUTT:P:9,169 mol/sF:476 K102 kPaCATH_HX_HOT:P:16,262 mol/sF:1,002 K105 kPaCATH_RECT:P:16,262 mol/sF:297 K111 kPaCATH_HX_CIT:P:17,934 mol/sF:787 K105 kPaCATH_HX_COT:P:17,934 mol/sF:348.30.6617.3ROM InputsFuel Inlet Temperature (C):Internal Reformation fraction:Air Inlet Temperature (C):4,000Avg. Current Density (A/m^2):0.5Air Recirculation fraction:2.1Oxygen to Carbon ratio:Fuel Utilization fraction:Air Utilization fraction:0.80.449559.3ROM OutputsDC Stack Power (MW):0.8668Stack Voltage (V):30.6265.17-673.92Heat Duties (MW)Anode Heat Exchanger:Cathode Heat Exchanger:Anode:48.1Reformer Recuperator:114.57Cathode:422 K206 kPaSTEAM_INT:P:464 mol/sF:310 K203 kPaAIR_INT:P:1,333 mol/sF:747 K206 kPaREF_INT:P:465 mol/sF:288 K3,447 kPaFUEL_INT:P:1,161 mol/sF:1,060 K137 kPaREF_OUTT:P:2,944 mol/sF:1,265 K95 kPaCOMB_OUTT:P:9,545 mol/sF:405 K94 kPaANOD_EXHT:P:9,546 mol/sF:476 K102 kPaCOMB_AIRT:P:4,878 mol/sF:405 K101 kPaCATH_EXHT:P:11,384 mol/sF:476 K102 kPaCATH_HRSG_INT:P:11,384 mol/sF:107.321.110.4Performance SummarySteam Turbine Power (MW):NG Expander Power (MW):Auxiliary Load (MW):542.6AC Stack Power (MW):660.6Net Power (MW):Thermal Input (MW):HHV Efficiency (%):CO2 Emissions (g/kWh):1,056.0291.262.561,012 K3,447 kPaHOT_FUELT:P:1,161 mol/sF:" ], "text/plain": [ "" diff --git a/idaes_examples/archive/power_gen/rsofc/cpu.py b/idaes_examples/archive/power_gen/rsofc/cpu.py index c7c6d9fe..346d24de 100644 --- a/idaes_examples/archive/power_gen/rsofc/cpu.py +++ b/idaes_examples/archive/power_gen/rsofc/cpu.py @@ -254,7 +254,7 @@ def make_vars(self): doc="Vent temperature [K]", ) - # Pressue [Pa] + # Pressure [Pa] self.inlet_pressure = Var( self.flowsheet().config.time, initialize=17, @@ -283,7 +283,7 @@ def make_vars(self): def add_material_balances(self): """ This section is for material balance constraints""" - # Sum of all componenet mole fractions in a stream equals 1 + # Sum of all components mole fractions in a stream equals 1 @self.Constraint( self.flowsheet().config.time, doc="PureCO2 stream: component mole flow equation", @@ -640,7 +640,7 @@ def initialize(blk, outlvl=idaeslog.NOTSET, solver=None, optarg=None): outlvl : sets output level of initialisation routine optarg : solver options dictionary object (default={'tol': 1e-6}) - solver : str indicating whcih solver to use during + solver : str indicating which solver to use during initialization (default = 'ipopt') Returns: diff --git a/idaes_examples/archive/power_gen/rsofc/rsofc_soec_flowsheet.py b/idaes_examples/archive/power_gen/rsofc/rsofc_soec_flowsheet.py index 9cc0e89c..5a229bbf 100644 --- a/idaes_examples/archive/power_gen/rsofc/rsofc_soec_flowsheet.py +++ b/idaes_examples/archive/power_gen/rsofc/rsofc_soec_flowsheet.py @@ -202,7 +202,7 @@ def add_asu(fs): fs.intercooler_s2.outlet.temperature.fix(310.93) # K (100 F) fs.intercooler_s2.deltaP.fix(-3447) # Pa (-0.5 psi) - # air seperation unit + # air separation unit fs.ASU.split_fraction[0, "O2_outlet", "CO2"].fix(1e-10) fs.ASU.split_fraction[0, "O2_outlet", "H2O"].fix(1e-10) fs.ASU.split_fraction[0, "O2_outlet", "N2"].fix(0.0005) @@ -401,7 +401,7 @@ def add_aux_boiler_steam(fs): ) # enthalpy outlet fs.bhx2.outlet.enth_mol.fix( h_bhx2 - ) # K (100 F) # unfix after initalize and spec Q from cmb + ) # K (100 F) # unfix after initialize and spec Q from cmb fs.bhx1.overall_heat_transfer_coefficient.fix(100) fs.bhx1.delta_temperature_out.fix(10) # fix DT for pinch side @@ -1407,7 +1407,7 @@ def set_guess(fs): fs.preheat_split.inlet, F=7765, T=700, P=1.04e5, comp=comp_guess, fix=True ) - # Set guess for temp, pressure and mole frac conditions to initalize soec + # Set guess for temp, pressure and mole frac conditions to initialize soec fs.soec_stack.fuel_inlet.flow_mol[0].fix(5600) fs.soec_stack.fuel_inlet.temperature[0].fix(1023.15) fs.soec_stack.fuel_inlet.pressure[0].fix(1.01325e5) diff --git a/idaes_examples/archive/power_gen/rsofc/rsofc_soec_mode_PFD.svg b/idaes_examples/archive/power_gen/rsofc/rsofc_soec_mode_PFD.svg index 4cb35a9d..7b7bdd24 100644 --- a/idaes_examples/archive/power_gen/rsofc/rsofc_soec_mode_PFD.svg +++ b/idaes_examples/archive/power_gen/rsofc/rsofc_soec_mode_PFD.svg @@ -753,7 +753,7 @@ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.82222px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583" id="tspan104298">compression + id="tspan124110">compression compression + id="tspan124110">compression Nitrogen ASU - Hydrogen purification andcompression + Hydrogen purification andcompression Water_in Water_out1 Water_out2 diff --git a/idaes_examples/archive/power_gen/rsofc/rsofc_soec_src.ipynb b/idaes_examples/archive/power_gen/rsofc/rsofc_soec_src.ipynb index d2d078fe..85c5c931 100644 --- a/idaes_examples/archive/power_gen/rsofc/rsofc_soec_src.ipynb +++ b/idaes_examples/archive/power_gen/rsofc/rsofc_soec_src.ipynb @@ -193,7 +193,7 @@ " Nitrogen\n", " ASU\n", " \n", - " Hydrogen purification andcompression\n", + " Hydrogen purification andcompression\n", " Water_in\n", " Water_out1\n", " Water_out2\n", diff --git a/idaes_examples/archive/power_gen/soec/soec.ipynb b/idaes_examples/archive/power_gen/soec/soec.ipynb index 35aec23e..1dedf2ab 100644 --- a/idaes_examples/archive/power_gen/soec/soec.ipynb +++ b/idaes_examples/archive/power_gen/soec/soec.ipynb @@ -1493,7 +1493,7 @@ " \n", " Summary:\n", " \n", - " SOEC Electric Power:SOEC Current:Cell Potential:Number of cells:SOEC Power/H2:H2 Product Rate:Single-pass H2O coversion:Sweep Blower Power:Feed Heater Power:Sweep Heater Power:Heat Pump Power:Heat Pump Water Draw:Compressor Power:Total electric Power:Total Power/H2:\n", + " SOEC Electric Power:SOEC Current:Cell Potential:Number of cells:SOEC Power/H2:H2 Product Rate:Single-pass H2O conversion:Sweep Blower Power:Feed Heater Power:Sweep Heater Power:Heat Pump Power:Heat Pump Water Draw:Compressor Power:Total electric Power:Total Power/H2:\n", " \n", " 638.539 MW\n", " -478.598 MA\n", @@ -3579,7 +3579,7 @@ " \n", " Summary:\n", " \n", - " SOEC Electric Power:SOEC Current:Cell Potential:Number of cells:SOEC Power/H2:H2 Product Rate:Single-pass H2O coversion:Sweep Blower Power:Feed Heater Power:Sweep Heater Power:Heat Pump Power:Heat Pump Water Draw:Compressor Power:Total electric Power:Total Power/H2:\n", + " SOEC Electric Power:SOEC Current:Cell Potential:Number of cells:SOEC Power/H2:H2 Product Rate:Single-pass H2O conversion:Sweep Blower Power:Feed Heater Power:Sweep Heater Power:Heat Pump Power:Heat Pump Water Draw:Compressor Power:Total electric Power:Total Power/H2:\n", " \n", " 638.539 MW\n", " -478.598 MA\n", diff --git a/idaes_examples/archive/power_gen/soec/soec.py b/idaes_examples/archive/power_gen/soec/soec.py index 9b13fa0b..96c82a32 100644 --- a/idaes_examples/archive/power_gen/soec/soec.py +++ b/idaes_examples/archive/power_gen/soec/soec.py @@ -1558,13 +1558,13 @@ def _add_tags(self): display_units=pyo.units.MW, ) tag_group["total_electric_power"] = iutil.ModelTag( - doc="Total electric power for SOEC and auxilaries", + doc="Total electric power for SOEC and auxiliaries", expr=self.total_electric_power[0], format_string="{:.3f}", display_units=pyo.units.MW, ) tag_group["total_electric_power_per_h2"] = iutil.ModelTag( - doc="Total electric power for SOEC and auxilaries per H2 produced", + doc="Total electric power for SOEC and auxiliaries per H2 produced", expr=self.total_electric_power_per_h2[0], format_string="{:.3f}", display_units=pyo.units.MJ / pyo.units.kg, diff --git a/idaes_examples/archive/power_gen/soec/soec_standalone_template.svg b/idaes_examples/archive/power_gen/soec/soec_standalone_template.svg index 5eb48e41..23203ac6 100644 --- a/idaes_examples/archive/power_gen/soec/soec_standalone_template.svg +++ b/idaes_examples/archive/power_gen/soec/soec_standalone_template.svg @@ -3684,7 +3684,7 @@ x="11.245358" y="153.43445" style="text-align:end;text-anchor:end;stroke-width:0.264583" - id="tspan1177">Single-pass H2O coversion:Single-pass H2O conversion:" ] @@ -1871,7 +1871,7 @@ "outputs": [ { "data": { - "image/png": "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Vq0aN910EwCFChWiXr16bN26lbVr1/Lss8+yYsUKUlJSLu7woqKiGD58OKdOneLMmTP06NHjD/GcOXOGX375hXvuuediW2Ji4sXhe+655w9JBODgwYNUrvy/qtMdO3bk2WefpX///vTt25egoKB01z29dQwKCuKFF15gxYoVFChQgP3793P48GEAateuTbNmzQBo2rQpXbt2RURo1qwZe/bsubjsKlWqcODAAR8+AY9169bRpUuXi+vQv39/VqxYwR133MGZM2eIj49n3759/O1vf2PFihWsXLmSvn37Xpzf+zRZdmxnY9Jz4NR5hs+N4qfoI7SsWY437wql/jWlczSGnL5qqwHQSUReAxKAf6nqOqA6niOONLFOW5IzfHk7zs99AKqaLCJxQEXg2OVvKiKD8RzVULNmzexcH79QVWbNmkXDhg3/0P7BBx/8YSe0cOHCDO8t6NSpE4sWLaJw4cJ069aNgQMHkpKScjFJDRw4kLlz59K8eXOmTJnCsmXL/rCM1NRUypUrx8aNG9N9j5IlS6bbXrx48UtunBs6dCi9evVi4cKFtG/fniVLlqS77umt45QpUzh69Cjr16+ncOHCBAcHX1x20aJFL05XoECBi78XKFDgkn6bhIQEihcvnm6s6cnsO0mHDh349NNPadiwIZ06dWLy5MmsXr36klN73tslO7azMd5SU5Uv1+5l9KJoUlKVl25rwoDrgilYIOfvM8rpzvZCQHmgPfAcMF08e8D01lwzaecK4y5tVJ2gqmGqGub9DTlQ9ejRgw8++ODijizt9FSPHj345JNPSEpKAjynlM6ePUvnzp356quvSElJ4eDBgyxduvTisjp37sy7775Lhw4dqFy5MsePHyc6OpqmTT1HXvHx8VStWpWkpKRLOvpLly5NfHw8AGXKlKF27drMmDED8OxgN23adMX1aNy4MTExMRd/37lzJ82aNWPIkCGEhYURHR19yftkto5xcXFUqVKFwoULs3TpUn7/PcNHI2Ro+/btl5xqu5J27dqxfPlyjh07RkpKCtOmTeOGG24APNt17NixdO7cmZYtW7J06VKKFi1K2bJl012WP7ezyX92HztLv4lrGD43ihY1yrH4n50ZdH1tV5II5HwiiQVmq8daIBWo5LTX8JouCDjgtAel0473PCJSCCgLnPBr9DlkxIgRJCUlERoaSkhICCNG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\n", + "image/png": "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Vq0aN910EwCFChWiXr16bN26lbVr1/Lss8+yYsUKUlJSLu7woqKiGD58OKdOneLMmTP06NHjD/GcOXOGX375hXvuuediW2Ji4sXhe+655w9JBODgwYNUrvy/qtMdO3bk2WefpX///vTt25egoKB01z29dQwKCuKFF15gxYoVFChQgP3793P48GEAateuTbNmzQBo2rQpXbt2RURo1qwZe/bsubjsKlWqcODAAR8+AY9169bRpUuXi+vQv39/VqxYwR133MGZM2eIj49n3759/O1vf2PFihWsXLmSvn37Xpzf+zRZdmxnY9Jz4NR5hs+N4qfoI7SsWY437wql/jWlczSGnL5qqwHQSUReAxKAf6nqOqA6niOONLFOW5IzfHk7zs99AKqaLCJxQEXg2OVvKiKD8RzVULNmzexcH79QVWbNmkXDhg3/0P7BBx/8YSe0cOHCDO8t6NSpE4sWLaJw4cJ069aNgQMHkpKScjFJDRw4kLlz59K8eXOmTJnCsmXL/rCM1NRUypUrx8aNG9N9j5IlS6bbXrx48UtunBs6dCi9evVi4cKFtG/fniVLlqS77umt45QpUzh69Cjr16+ncOHCBAcHX1x20aJFL05XoECBi78XKFDgkn6bhIQEihcvnm6s6cnsO0mHDh349NNPadiwIZ06dWLy5MmsXr36klN73tslO7azMd5SU5Uv1+5l9KJoUlKVl25rwoDrgilYIOfvM8rpzvZCQHmgPfAcMF08e8D01lwzaecK4y5tVJ2gqmGqGub9DTlQ9ejRgw8++ODijizt9FSPHj345JNPSEpKAjynlM6ePUvnzp356quvSElJ4eDBgyxduvTisjp37sy7775Lhw4dqFy5MsePHyc6OpqmTT1HXvHx8VStWpWkpKRLOvpLly5NfHw8AGXKlKF27drMmDED8OxgN23adMX1aNy4MTExMRd/37lzJ82aNWPIkCGEhYURHR19yftkto5xcXFUqVKFwoULs3TpUn7/PcNHI2Ro+/btl5xqu5J27dqxfPlyjh07RkpKCtOmTeOGG24APNt17NixdO7cmZYtW7J06VKKFi1K2bJl012WP7ezyX92HztLv4lrGD43ihY1yrH4n50ZdH1tV5II5HwiiQVmq8daIBWo5LTX8JouCDjgtAel0473PCJSCCgLnPBr9DlkxIgRJCUlERoaSkhICCNG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", "text/plain": [ "
" ] @@ -1907,7 +1907,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZgAAAEGCAYAAABYV4NmAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAA5CklEQVR4nO3dd3gV1dbA4d9KgdAChCJIC016Dx0CiAIWmoCCKCAoUu1+6pUrXNu9NkSkiTRBRGwooNJUWggldKQjKAGkhRI6gfX9cSZ6iCkHyMlJWe/znCeTPbNn1pmTZGXPntlbVBVjjDEmtfn5OgBjjDGZkyUYY4wxXmEJxhhjjFdYgjHGGOMVlmCMMcZ4RYCvA0gvChYsqKGhob4OwxhjMpS1a9ceU9VCia2zBOMIDQ0lKirK12EYY0yGIiK/J7XOLpEZY4zxCkswxhhjvMISjDHGGK+wPhhjsqDLly8THR3NhQsXfB2KySCCgoIoXrw4gYGBHtexBGNMFhQdHU2ePHkIDQ1FRHwdjknnVJXjx48THR1N6dKlPa5nl8iMyYIuXLhAgQIFLLkYj4gIBQoUuO4WryUYY7IoSy7metzIz4vXEoyITBKRIyKyxa2shohEishmEZkjIsEJ6pQUkTMi8pxbWR1n+90iMlKcdyki2UVkplO+SkRC3er0FJFdzqunt94juJqOb/6wjTX7YrCpD4wx5m/ebMFMAdokKJsAvKiq1YBZwPMJ1r8P/JigbCzQFyjvvOL32Qc4oarlnHpvAYhICDAUqA/UA4aKSP5UeD+J+iPmHJ+t+oMu4yK58/2lTFy+l5PnLnnrcMYYYNy4cUydOjVV9hUaGsqxY8eS3ebNN9+85vtGjRqlyrG3b99OzZo1qVWrFnv27CF37typsl9PjBgxgnPnznn1GF5LMKq6FIhJUFwBWOosLwQ6xa8QkQ7Ab8CvbmVFgWBVjVRX82Aq0MFZ3R74xFn+CmjptG5aAwtVNUZVTzjHSZjoUk2pArlY/XJL3u5UndzZA3ht7lbqvfkTT32+nlW/HbdWjTEpUFWuXr16XXX69etHjx49/lEeFxeXWmFdI2GCWbFiRars99tvv6V9+/asX7+esmXLpso+46V0XjN0gknCFqCds9wFKAEgIrmAF4D/JNi+GBDt9n20Uxa/bj+AqsYBp4AC7uWJ1LmGiPQVkSgRiTp69OgNviXImS2A++uW4NuBjfnhiaZ0rVuCn7Yd4YHxK2k5fAkTlv1GzFlr1RgTb9++fVSqVIkBAwZQu3Zt9u/fzzvvvEPdunWpXr06Q4cO/WvbqVOnUr16dWrUqMHDDz8MwLBhw3j33XcBaN68Of/6179o1qwZH3zwAWvWrKFRo0bUqFGDevXqERsby5QpUxg0aNBf+7z33ntZvHjxP+Lq0KEDderUoUqVKowfPx6AF198kfPnz1OzZk26d+8O8FdLQ1V5/vnnqVq1KtWqVWPmzJkALF68mObNm9O5c2cqVqxI9+7d//HP5g8//MCIESOYMGECLVq0uGZdUvsdMGAAs2fPBqBjx4707t0bgIkTJzJkyJBEz2v//v0JCwujSpUqf53XkSNHcvDgQVq0aPHXsRcsWEDDhg2pXbs2Xbp04cyZM9f1mSYmrW9T7g2MFJFXgNlA/F/d/wDvq+qZBB1JifUqaQrrkqtzbaHqeGA8QFhYWKo0NSrfGsyr7avy4l0V+X7TIWas/oPXv9/G2/N20KZqEbrVK0mDMiHWwWrSjf/M+ZWtB0+n6j4r3xrM0LZVkt1mx44dTJ48mTFjxrBgwQJ27drF6tWrUVXatWvH0qVLKVCgAG+88QYREREULFiQmJiEF0VcTp48yZIlS7h06RIVK1Zk5syZ1K1bl9OnT5MjRw6P4540aRIhISGcP3+eunXr0qlTJ/73v/8xatQoNmzY8I/tv/nmGzZs2MDGjRs5duwYdevWJTw8HID169fz66+/cuutt9K4cWMiIiJo0qTJX3Xvvvtu+vXrR+7cuXnuuec82m94eDjLli2jXbt2HDhwgEOHDgGwfPlyunbt+o/zCvDGG28QEhLClStXaNmyJZs2beKJJ55g+PDh/PLLLxQsWJBjx47x+uuvs2jRInLlysVbb73F8OHDeeWVVzw+d4lJ0wSjqtuBVgAichtwj7OqPtBZRN4G8gFXReQC8DVQ3G0XxYGDznI0rhZQtIgEAHlxXZKLBponqLM49d9N8nJmC6BLWAm6hJVg+5+n+Xz1fr5eF83sjQcpUzAXXeuVoFPt4hTInT2tQzMmXShVqhQNGjQAXP89L1iwgFq1agFw5swZdu3axcaNG+ncuTMFCxYEICQkJNF9PfDAA4Drj2vRokWpW7cuAMHBwYlun5SRI0cya9YsAPbv38+uXbsoUKBAktsvX76cbt264e/vzy233EKzZs1Ys2YNwcHB1KtXj+LFXX++atasyb59+65JMMlJar9NmzZlxIgRbN26lcqVK3PixAkOHTpEZGQkI0eO5Pjx49ecV4AvvviC8ePHExcXx6FDh9i6dSvVq1e/5ngrV65k69atNG7cGIBLly7RsGHD6zp3iUnTBCMihVX1iIj4AUOAcQCq2tRtm2HAGVUd5XwfKyINgFVAD+BDZ9PZQE8gEugM/KyqKiLzgTfdOvZbAS95/c0lo2KRYIa1q8ILbSryw2ZXq+bNH7bzzvwdtK5ShAfrlaRhWXsmwfhGSi0Nb8mVK9dfy6rKSy+9xOOPP37NNiNHjvTo9yJ+X6qa6PYBAQHX9Eck9jzH4sWLWbRoEZGRkeTMmZPmzZun+NxHcn2s2bP//c+jv7//dfUPJbXfYsWKceLECebNm0d4eDgxMTF88cUX5M6dmzx58nD8+PFrzuvevXt59913WbNmDfnz56dXr16JvidV5c4772TGjBkex+gJb96mPAPXH/8KIhItIn2AbiKyE9iOqyUy2YNd9cd199luYA9/32U2ESggIruBZ4AXAVQ1BngNWOO8XnXKfC5HNn861SnOV/0bseDpcB5qUIplu47x4IRV3DF8CdNW/s65S97ppDQmPWvdujWTJk3667r/gQMHOHLkCC1btuSLL77g+PHjAEleIotXsWJFDh48yJo1awCIjY0lLi6O0NBQNmzYwNWrV9m/fz+rV6/+R91Tp06RP39+cubMyfbt21m5cuVf6wIDA7l8+fI/6oSHhzNz5kyuXLnC0aNHWbp0KfXq1bvh8+DJfhs2bMiIESMIDw+nadOmvPvuuzRt2jTR/Zw+fZpcuXKRN29eDh8+zI8//n2Tbp48eYiNjQWgQYMGREREsHv3bgDOnTvHzp07b/p9eK0Fo6rdklj1QQr1hiX4Pgqomsh2F3DdKJDYPiYBkzwK1EduuyUPQ9u6WjXfbzrElBX7+Pe3W3hn3na61itJj4alKJ4/p6/DNCZNtGrVim3btv11WSZ37tx8+umnVKlShZdffplmzZrh7+9PrVq1mDJlSpL7yZYtGzNnzmTw4MGcP3+eHDlysGjRIho3bkzp0qWpVq0aVatWpXbt2v+o26ZNG8aNG0f16tWpUKHCNZeZ+vbtS/Xq1alduzbTp0//q7xjx45ERkZSo0YNRIS3336bIkWKsH379ps6H0ntF6Bp06YsWLCAcuXKUapUKWJiYpJMMDVq1KBWrVpUqVKFMmXK/HUJLP493XXXXRQtWpRffvmFKVOm0K1bNy5evAjA66+/zm233XZT70PsNlqXsLAw9eWEY6rK2t9PMDliH/N+/RNVpXWVIjzSuDR1Q/Pb5TOTqrZt20alSpV8HYbJYBL7uRGRtaoaltj2NthlOiEihIWGEBYawoGT55kW+TszVv/Bj1v+pMqtwTzSuDRtaxQle4C/r0M1xhiP2Fhk6VCxfDl48a6KrHypJW92rMaluKs89+VGGv/vZ4Yv3MmRWBti3RiT/lkLJh3Lkc2fB+uXpFu9EizffYzJEfsY+dMuxi7ezb3Vb+WRxqFUL57P12GaDCqpO66MScyNdKdYgskARISm5QvRtHwh9h47yycr9vFl1H5mrT9AnVL5eaRxKG2qFCHA3xqkxjNBQUEcP37chuw3HomfDyYoKOi66lknv8PXnfzXK/bCZb6MimbKin38EXOO4vlz0De8DF3qlCBHNuunMcmzGS3N9UpqRsvkOvktwTgyWoKJd+Wq8tO2w4xbsod1f5ykQK5s9GoUSo+GoeTN6fnUpsYYcyMswXggoyaYeKrKmn0nGLt4N7/sOEoup/+mT5MyFMl7fc1aY4zxlCUYD2T0BONu26HTfLRkD3M2HcJPoGOtYvQNL0u5wmk314QxJmuwBOOBzJRg4u2POceEZb/x+Zr9XLpylVaVb6Ffs7LUKum1+deMMVmMJRgPZMYEE+/YmYt8smIfn6zYx+kLcTQoE0L/5uUIL1/Q7iAyxtwUSzAeyMwJJt6Zi3F8vvoPJizby5+nL1C5aDD9mpfl7qp2i7Mx5sZYgvFAVkgw8S7FXeXbDQcYt2QPvx09S8mQnPRvXpZOtYuTLcASjTHGc5ZgPJCVEky8q1eVhdsOM+aX3WyMPkWxfDkYdHs5SzTGGI9ZgvFAVkww8VSVJTuPMmLRLjbsP2mJxhjjMUswHsjKCSZeYolmYItydK5jicYYkzhLMB6wBPM3SzTGGE9ZgvGAJZh/UlWW7jrG+wt3WqIxxiTKEowHLMEkLT7RjFi0k/V/uBLNgBZl6VKnhCUaY7I4SzAesASTMlVl2a5jvG+JxhjjsATjAUswnotPNCMW7WSdk2gG3+66dGYPbBqTtViC8YAlmOunqizffYzhC10tmjIFc/FsqwrcVbUIfn42BI0xWUFyCcb+3TQ3LH6mzW/6N+LjHmEE+vsx8LN1tB8dwdKdR29oilVjTOZhCcbcNBHhzsq38MOTTRl+fw1OnLtEj0mrefDjVaz/44SvwzPG+IhdInPYJbLUczHuCp+v3s+HP+/i2JlLtKp8C8+1rsBtt+TxdWjGmFTmk0tkIjJJRI6IyBa3shoiEikim0VkjogEO+X1RGSD89ooIh3d6tRxtt8tIiPFGV9eRLKLyEynfJWIhLrV6Skiu5xXT2+9R5O47AH+9GwUypLnW/DsnbcRuec4bUYs5dkvNhJ94pyvwzPGpBGvtWBEJBw4A0xV1apO2RrgOVVdIiK9gdKq+m8RyQlcUtU4ESkKbARudb5fDTwJrAR+AEaq6o8iMgCorqr9RKQr0FFVHxCRECAKCAMUWAvUUdVkr9VYC8Z7Tpy9xNgle5iyYh8odG9QkoEtylEwd3Zfh2aMuUk+acGo6lIgJkFxBWCps7wQ6ORse05V45zyIFyJASfZBKtqpLoy4VSgg7Nde+ATZ/kroKXTumkNLFTVGCepLATapPLbM9chf65s/OvuSix5vjmd6hRjauTvNHv7F4Yv3Enshcu+Ds8Y4yVp3cm/BWjnLHcBSsSvEJH6IvIrsBno5yScYkC0W/1opwzn634AZ9tTQAH38kTqGB8qmjcH/72vOgueDqd5hcKM/GkX4W//woRlv3Hh8hVfh2eMSWVpnWB6AwNFZC2QB7gUv0JVV6lqFaAu8JKIBAGJPUwRf00vqXXJ1bmGiPQVkSgRiTp69Oh1vA1zM8oWys3o7rWZM6gJVYvl5fXvt9HyvSXM3njQbm02JhNJ0wSjqttVtZWq1gFmAHsS2WYbcBaoiqv1UdxtdXHgoLMcjdMCEpEAIC+uS3J/lSdSJ+GxxqtqmKqGFSpU6GbemrkB1YrnZVqf+kx/tD55cwTyxIz1dByzgrW/J7yyaozJiNI0wYhIYeerHzAEGOd8X9pJEohIKVx9NftU9RAQKyINnP6VHsB3zu5mA/F3iHUGfnb6aeYDrUQkv4jkB1o5ZSadalyuIHMGN+GdztU5dOo8ncZGMmD6Wn4/ftbXoRljbkKAt3YsIjOA5kBBEYkGhgK5RWSgs8k3wGRnuQnwoohcBq4CA1T1mLOuPzAFyAH86LwAJgLTRGQ3rpZLVwBVjRGR14A1znavqqr9S5zO+fsJXcJKcE/1ony8dC/jluxh4dbD9GwYyuDby5M3Z6CvQzTGXCd70NJhtymnL0dOX+C9BTv5Yu1+1+Wz28vzUINSNmqzMemMjUVmMpzCwUG81bk63w9uStVb8/Lq3K20HrGU+b/+aTcCGJNBWIIx6VrlW4OZ1qcek3vVxd9PeHzaWh4Yv5JN0Sd9HZoxJgWWYEy6JyK0qFiYeU825fUOVdlz5AztRkXw9MwNHDx53tfhGWOSYH0wDuuDyThiL1xmzOI9TFy+FwEebVqa/s3LkTu71+5ZMcYkwfpgTKaSJyiQF9pU5Odnm9GmahFG/7KH299dzKz10dY/Y0w6YgnGZFjF8+fkg661mDWgEUXzBvH0zI10HhfJlgOnfB2aMQZLMCYTqFUyP7MGNObtztX5/fhZ2o5azkvfbOb4mYu+Ds2YLM0SjMkU/PyE+8NK8PNzzenTuDRfRu2nxbuLmRKxl7grV30dnjFZkiUYk6kEBwUy5N7KzHuqKTVK5GPYnK3cM3I5K/YcS7myMSZVWYIxmVK5wnmY2rseHz1ch7OX4njw41UMnL6OA3ZbszFpxhKMybREhNZVirDomWY8c+dt/LT9MC3fW8wHi3bZ/DPGpAFLMCbTCwr054mW5fnp2ea0rHQL7y/ayR3DlzBviw07Y4w3WYIxWUaxfDkY/WBtZjzWgNzZA+j36Voenria3UdifR2aMZmSJRiT5TQsW4C5g5vwn3ZV2BR9kjYjlvHG91s5ezHO16EZk6lYgjFZUoC/Hz0bhbL4+RZ0CSvOx8v2OpfNDtllM2NSiSUYk6WF5MrGf++rztf9G5EvZzb6fbqO3lPWsD/mnK9DMybDswRjDFCnVH7mDGrMkHsqsXpvDHcMX8LoX3ZzKc4e0jTmRlmCMcYR4O/Ho03LsOjZZrSsVJh35u/grg+W2kOaxtwgSzDGJFA0bw7GdK/D5EfqcvmK8uDHq3h65gaOxtrYZsZcD0swxiShRYXCLHg6nMG3l2PupoO0fG8x01b+zpWrdhOAMZ6wBGNMMoIC/Xm2VQXmPRVO1WJ5+fe3W7hv7AqbEsAYD1iCMcYDZQvlZvqj9fmga00OnDhHu1HLGTb7V2IvXPZ1aMakW5ZgjPGQiNC+ZjF+erY53euX4pPIfbR8bwlzNh60Z2eMSUSKCUZEuohIHmd5iIh8IyK1vR+aMelT3hyBvNahKt8OaEzh4OwMnrGeXpPt2RljEvKkBfNvVY0VkSZAa+ATYKx3wzIm/atRIh/fDWzC0LaVidoXQ6v3lzJx+V67CcAYhycJJn5c83uAsar6HZDNeyEZk3H4+wmPNC7Ngmea0aBMCK/N3cp9YyLYdui0r0Mzxuc8STAHROQj4H7gBxHJ7kk9EZkkIkdEZItbWQ0RiRSRzSIyR0SCnfI7RWStU75WRG53q1PHKd8tIiNFRJzy7CIy0ylfJSKhbnV6isgu59XT47NhzA0qli8Hk3rVZWS3WkSfOE/bD5fz7vwdNu+MydI8STD3A/OBNqp6EggBnveg3hSgTYKyCcCLqloNmOW2n2NAW6e8JzDNrc5YoC9Q3nnF77MPcEJVywHvA28BiEgIMBSoD9QDhopIfg/iNeamiAjtatzKomea0b5mMUb9spu7P1jGyt+O+zo0Y3wiyQQjIlEi8gEQDvygqrsAVPWQqi5IacequhSISVBcAVjqLC8EOjnbrlfVg075r0CQ00IpCgSraqS6btOZCnRwtmuPqz8I4CugpdO6aQ0sVNUYVT3hHCdhojPGa/LnysZ799dgWp96XL56la7jV/LSN5s5dd5uaTZZS3ItmAa4WhnNgSUi8oOIPCkit93E8bYA7ZzlLkCJRLbpBKxX1YtAMSDabV20U4bzdT+AqsYBp4AC7uWJ1LmGiPR1EmnU0aNHb+gNGZOUpuULMf+pcPqGl2Hmmj+405kOwJisIskEo6pxqrpYVV9U1fq4LknFAq+LyHoRGXMDx+sNDBSRtUAe4JL7ShGpgutS1+PxRYmFlsK65OpcW6g6XlXDVDWsUKFCHoRvzPXJmS2Af91die8GNqFg7uz0+3Qdj0+L4vDpC74OzRiv8/hBS+fS2CRVvR+oA0y/3oOp6nZVbaWqdYAZwJ74dSJSHFeLqYeqxpdHA8XddlEcOOi2roRTNwDIi+uS3F/lidQxxieqFc/Ld4Ma80KbiizecZQ73lvCZ6v+4Krd0mwysYCkVojIHJL4zx9AVdsltS6ZfRZW1SMi4gcMAcY55fmA74GXVDXC7RiHRCRWRBoAq4AewIfO6tm4bgiIBDoDP6uqish84E23jv1WwEvXG6sxqS3Q34/+zctyV9UivPTNZv41azPfrj/AfztVo2yh3L4Oz5hUJ0kNcSEizZKrqKpLkt2xyAxc/TcFgcO47uzKDQx0NvkGV0JRERmCKwnscttFKycZheG6Iy0H8CMw2KkThOtus1q4Wi5dVfU359i9gX85+3lDVScnFytAWFiYRkVFpbSZMalCVfkyKprXv9/KhctXefKO8jweXoYAfxu9yWQsIrJWVcMSXefJGEoikg2I79zfoaqZ7nYYSzDGF47EXmDY7F/5YfOfVCuWl3e6VKdikWBfh2WMx5JLMJ48MNkcV8tiNDAG2Cki4akZoDFZVeE8QYzpXofRD9bm4EnXA5of/rSLy1dsqmaT8XnSHn8P1+WqZqoajus5k/e9G5YxWcs91Yuy4OlwWlcpwnsLd9LRhpsxmYAnCSZQVXfEf6OqO4FA74VkTNZUIHd2Rj1Ym7Hda/PnqQu0G7WckdaaMRmYJwkmSkQmikhz5/UxsNbbgRmTVd1VrSgLnm5Gm6pFGb5wJx1GR7D1oLVmTMbjSYLpj2v4lieAJ4GtQD9vBmVMVheSKxsfdqvFuIdqc/i0qzUzYtFOLsVZa8ZkHB7dRZYV2F1kJr06cfYSw+b8yncbDlKpaDDvdqlOlVvz+josY4Cbv4vsXmdomBgROe08+GjtdWPSSP5c2figay0+ergOR2Mv0n5UBO8vtNaMSf88uUQ2AtcT8wVUNVhV86iq3ahvTBprXaUIi54Jp22NW/ngp120G7WcLQdO+TosY5LkSYLZD2xRu5ZmjM/ly5mN9x+oycc9wjh+9hLtR0cwfMEOa82YdCnJscjc/B+umSyXABfjC1V1uNeiMsYk687Kt1A3ND+vzt3KyJ93s2DrYd5/oCaVitrFBZN+eNKCeQM4BwThGmI//mWM8aF8ObMx/P6aTOgRxrEzrr6ZcUv2cMVGaDbphCctmBBVbeX1SIwxN+SOyrcwv2Q4L8/awv9+3M6irYd57/4alCqQy9ehmSzOkxbMIhGxBGNMOlYgd3bGPlSb9x+owY7Dsdz1wTI+W/UH1nVqfMmTBDMQmCci5+02ZWPSLxGhY63izH8qnFol8/GvWZt5ZMoajtjsmcZHUkwwzm3Jfqqaw25TNib9uzVfDqb1rs+wtpVZ+dtxWo1YytxNNqmrSXs2u5ExmZCfn9CrcWm+f6IppQrkYtBn63lixnpOnrvk69BMFmIJxphMrGyh3HzdryHP3HkbP2w+ROsRS1m686ivwzJZhCUYYzK5AH8/nmhZnlkDGpMnKJAek1bz72+3cO5SnK9DM5mcRwlGRJqIyCPOciERKe3dsIwxqa1a8bzMHdyER5uU5tNVv3P3B8tY+/sJX4dlMjFPBrscCrwAvOQUBQKfejMoY4x3BAX6M+Teynz2aAMuX1G6jFvBO/O321Azxis8acF0BNoBZwFU9SD2JL8xGVrDsgWY91RTOtUuzuhf9tBxTAS7j5zxdVgmk/EkwVxyBrpUABGxx4ONyQTyBAXyTpcafPRwHQ6ePM+9Hy5j+qrf7eFMk2o8STBfiMhHQD4ReQxYBEzwbljGmLTSukoR5j0VTt3QEF6etYXHpq7l+JmLKVc0JgUezWgpIncCrQAB5qvqQm8HltZsRkuT1V29qkxesY+3ftxO3pyBvNelBuG3FfJ1WCadu9kZLd9S1YWq+ryqPqeqC0XkrdQP0xjjS35+Qp8mpfluUGPy53TdzvzqnK1cuHzF16GZDMqTS2R3JlJ2V2oHYoxJHyoVDWb2oCb0ahTKpIi9dBgdwY4/Y30dlsmAkkwwItJfRDYDFURkk9trL7AppR2LyCQROSIiW9zKaohIpIhsFpE5IhLslBcQkV9E5IyIjEqwnzrO9rtFZKSIiFOeXURmOuWrRCTUrU5PEdnlvHpe91kxJosLCvRnWLsqTO5Vl2NnLtJ21HKmROy1GwDMdUmuBfMZ0BaY7XyNf9VR1Yc82PcUoE2CsgnAi6paDZgFPO+UXwD+DTyXyH7GAn2B8s4rfp99gBOqWg54H3gLQERCgKFAfaAeMFRE8nsQrzEmgRYVCzPvqXCalCvIsDlbeWTKGo7G2g0AxjNJJhhVPaWq+1S1m6r+DpzHdatybhEpmdKOVXUpEJOguAKw1FleCHRytj2rqstxJZq/iEhRIFhVI51bpacCHZzV7YFPnOWvgJZO66Y1sFBVY1T1hHOchInOGOOhgrmzM7FnGK+1r0LknuO0GbGUn7cf9nVYJgPwpJO/rYjsAvYCS4B9wI83eLwtuB7aBOgClEhh+2JAtNv30U5Z/Lr9AKoaB5wCCriXJ1LnGiLSV0SiRCTq6FEbANCYpIgIDzcMZe7gJhQODqL3lChe+W6L3QBgkuVJJ//rQANgp6qWBloCETd4vN7AQBFZi2s0gJTGDpdEyjSFdcnVubZQdbyqhqlqWKFCdjumMSkpf0sevh3YiMealmZq5O/c++Fyfj14ytdhmXTKkwRzWVWPA34i4qeqvwA1b+RgqrpdVVupah1gBrAnhSrRQHG374sDB93WlQAQkQAgL65Lcn+VJ1LHGHOTsgf48/I9lZnWpx6nz1+m4+gVTFj2G1ev2g0A5lqeJJiTIpIbV9/JdBH5ALihcb5FpLDz1Q8YAoxLbntVPQTEikgDp3+lB/Cds3o2EH+HWGfgZ6efZj7QSkTyO537rZwyY0wqalq+EPOeCqdZhUK8/v02+nyyxkYAMNdI8Ul+Z+yx87iSUXdcLYXpTqsmuXozgOZAQeAwrju7cgMDnU2+AV5ykgIisg8IBrIBJ4FWqrpVRMJw3ZGWA1ffz2BVVREJAqYBtXC1XLqq6m/OvnoD/3KO84aqTk7pRNiT/MbcGFVl2srfef37beTLEciIrjVpVLagr8MyaSS5J/mTTTAi4o9raJg7vBVcemEJxpibs/XgaQbNWMfeY2cZ1KIcT7YsT4C/zWmY2d3wUDGqegU4JyJ5vRKZMSbTqHxrMHMHN6FLneJ8+PNuuo5fyYGT530dlvEhT/69uABsFpGJzpP0I0VkpLcDM8ZkPDmzBfB25xp80LUm2/+M5e4PljFvy5++Dsv4SIAH23zvvIwxxiPtaxajZol8DJ6xnn6fruXhBqV4+Z5KBAX6+zo0k4Y8STD7gZWqes7bwRhjMo9SBXLxVb9GvDN/Ox8v28uafTGMerAW5QrbhLhZhSeXyHoBG5xBKt92nuy3sb2MMSnKFuDHy/dUZvIjdTkSe5G2H0bwRdR+GzQzi0gxwahqD1W9Dde4YdHAaMDGVTHGeKxFhcL8+GRTapXMx/99tYknP99A7IXLvg7LeJknY5E95EyZ/BVwBzAKaOrtwIwxmcstwUFM61Of51rdxvebD3HPyOVs3H/S12EZL/LkEtkIXEPDfAw8oapvq2qkN4MyxmRO/n7CoNvLM7NvA65cVTqNXcHHS22YmczKk0tkBXENUhkEvCEiq0VkmtcjM8ZkWmGhIfzwRFNaVirMGz9so/cna4g5m9LYtyaj8eQSWTBQEigFhOIaKuaqd8MyxmR2eXMGMu6hOrzWvgordh/nnpHLWPt7wimkTEbmySWy5bhmstwEPKCqFVTVpiE2xty0+HlmvhnQiEB/Px74aCXjl+6xu8wyCU8ukVVX1QHAHFyDUBpjTKqqWiwvc59owp2Vb+HNH7bz2NQoTp6zS2YZnSeXyKqKyHpcs1FuFZG1IlLV+6EZY7KS4KBAxnSvzbC2lVmy8yj3jFzO+j9O+DoscxM8uUQ2HnhGVUupakngWafMGGNSlYjQq3FpvurXCBG4/6NIJi7fa5fMMihPEkwuZxZLAFR1MZDLaxEZY7K8GiXy8f3gpjSvUJjX5m6l36drOXXeHszMaDxJML+JyL9FJNR5DQH2ejswY0zWljdnIOMfrsOQeyrx07Yj3PvhMjZFn/R1WOY6eJJgegOFcM1AOctZfsSbQRljDLgumT3atAxf9GvI1avQaewKpkTYJbOMIsUpk7MKm9HSmPTt5LlLPPvFRn7afoS7qxXhf52qExwU6OuwsrzkZrRMcrh+EZkDJJl9VLVdKsRmjDEeyZczGx/3COPjZb/x9vwd/HpwOaMfrE3VYjbhbnqV3Hww76ZZFMYY4wE/P+HxZmWpUyo/gz5bz31jVvBK28p0r18SEfF1eCaB5BLMXlX9I80iMcYYD4WFhvDDk015euYGhny7hdV7Y/jvfdXIld2TORRNWkmuk//b+AUR+dr7oRhjjOdCcmVjcq+6PN+6AnM3HaTD6Ah2Hznj67CMm+QSjHt7s4y3AzHGmOvl5ycMbFGOaX3qE3P2Eu1HLef7TYd8HZZxJJdgNIllY4xJVxqXK8jcJ5pwW5E8DPxsHa/N3crlKzbou68ll2BqiMhpEYkFqjvLp0UkVkROp1WAxhjjiaJ5czCzb0N6NQpl4vK9PPjxSg6fvuDrsLK0JBOMqvqrarCq5lHVAGc5/vvgtAzSGGM8kS3Aj2HtqvBB15psOXCae0YuZ+Vvx30dVpblyZP8N0REJonIERHZ4lZWQ0QiRWSziMxxJjOLX/eSiOwWkR0i0tqtvI6z/W4RGSnOvYgikl1EZjrlq0Qk1K1OTxHZ5bxs7hpjspj2NYvx3aDGBOcIoPuEVXy0xOaY8QWvJRhgCtAmQdkE4EVVrYZr2JnnAUSkMtAVqOLUGSMi/k6dsUBfoLzzit9nH+CEqpYD3gfecvYVAgwF6gP1gKEikt8L788Yk47ddkseZg9qQusqt/DfH7fT79O1nL5gA2amJa8lGFVdCiSc/7QCsNRZXgh0cpbbA5+r6kVV3QvsBuqJSFEgWFUj1fXvx1Sgg1udT5zlr4CWTuumNbBQVWNU9YRznISJzhiTBeTOHsDoB2sz5J5KLNp2hPajItj+p3UhpxVvtmASswWIH2KmC1DCWS4G7HfbLtopK+YsJyy/po6qxgGngALJ7OsfRKSviESJSNTRo0dv8C0ZY9Kz+AEzZzzWgLMX4+gwOoJZ66NTrmhuWlonmN7AQBFZC+QB4udETWyMB02m/EbrXFuoOl5Vw1Q1rFChQskGbozJ2OqVDmHuE02oUTwfT8/cyJBvN3Mx7oqvw8rU0jTBqOp2VW2lqnWAGcAeZ1U0f7dmAIoDB53y4omUX1NHRAKAvLguySW1L2NMFlc4TxDTH63P4+Fl+HTlH9z/0UoOnDzv67AyrTRNMCJS2PnqBwwBxjmrZgNdnTvDSuPqzF+tqoeAWBFp4PSv9AC+c6sTf4dYZ+Bnp59mPtBKRPI7nfutnDJjjCHA34+X7q7EuIdqs+fIGe4duYxlu+wSuTd48zblGUAkUEFEokWkD9BNRHYC23G1KiYDqOqvwBfAVmAeMFBV49uu/XHdfbYbV4vnR6d8IlBARHYDzwAvOvuKAV4D1jivV50yY4z5S5uqRZk9qDGF8wTRc9Jqxi62W5lTm0045rAJx4zJms5diuP/vtrE3E2HuLtaEd7uXIPcNiqzx5KbcCytO/mNMSZdyZktgA+71eJfd1dk3pY/6Tg6gr3Hzvo6rEzBEowxJssTEfqGl2Van/ocO3ORdh8u56dth30dVoZnCcYYYxyNyxVkzuAmlCqYkz6fRDFi0U6uXrVuhBtlCcYYY9wUz5+Tr/o14r7axRixaBd9p0XZEDM3yBKMMcYkEBToz3tdavCfdlVYvOMoHUZFsOtwrK/DynAswRhjTCJEhJ6NQvnssQacvuAaYubHzTZb5vWwBGOMMcmoVzqEuYObUP6WPPSfvo635m3nivXLeMQSjDHGpKBI3iBmPt6AbvVKMnbxHnpNXs3Jc5dSrpjFWYIxxhgPZA/w57/3VeN/91Vj1W8xtB21nK0Hbej/5FiCMcaY69C1XklmPt6Ay3HKfWMj+G7DAV+HlG5ZgjHGmOtUq2R+5gxuQvVi+Xjy8w28NncrcVeu+jqsdMcSjDHG3IBCebIz/bH69GoUysTle+k1eY31yyRgCcYYY25QoL8fw9pV4e1O1Vm9N4Z2oyLYac/L/MUSjDHG3KT765ZgRt8GnL98hY6jI5j/65++DildsARjjDGpoE6p/MwZ1IRyhXPz+LS1fLBoV5Yfx8wSjDHGpBLX8zINua9WMd5ftJMB09dx9mKcr8PyGUswxhiTioIC/Xnv/hoMuacSC7b+SaexK/jj+Dlfh+UTlmCMMSaViQiPNi3DlEfqcfDkedqNXs6K3cd8HVaaswRjjDFeEn5bIWYPakLB3Nl5eNJqpkTsJStNU28JxhhjvCi0YC5mDWhEiwqFGTZnKy98vYmLcVd8HVaasARjjDFelicokPEP1+GJ28vxRVQ03cav5MjpC74Oy+sswRhjTBrw8xOeaVWBMd1rs+1QLO1GRbBx/0lfh+VVlmCMMSYN3V2tKF/3b0SAv9Dlo0i+WRft65C8xhKMMcakscq3BjN7UBNql8zHM19s5I3vt2bKScwswRhjjA+E5MrGtD716dGwFB8v28ujn6wh9sJlX4eVqryWYERkkogcEZEtbmU1RWSliGwQkSgRqeeUZxORySKyWUQ2ikhztzp1nPLdIjJSRMQpzy4iM53yVSIS6lanp4jscl49vfUejTHmZgT6+/Fq+6q83qEqS3cd474xmeuhTG+2YKYAbRKUvQ38R1VrAq843wM8BqCq1YA7gfdEJD62sUBfoLzzit9nH+CEqpYD3gfeAhCREGAoUB+oBwwVkfyp/N6MMSbVPNSgFNN61+NI7EXaj17Oyt+O+zqkVOG1BKOqS4GYhMVAsLOcFzjoLFcGfnLqHQFOAmEiUhQIVtVIdT2dNBXo4NRpD3ziLH8FtHRaN62Bhaoao6ongIX8M9EZY0y60qhcQb4b2JiQXNl4aMIqZqz+w9ch3bS07oN5CnhHRPYD7wIvOeUbgfYiEiAipYE6QAmgGOB+i0W0U4bzdT+AqsYBp4AC7uWJ1DHGmHQrtGAuvhnQmEblCvLSN5v5z5xfM/RMmWmdYPoDT6tqCeBpYKJTPglXIogCRgArgDhAEtlH/K0WSa1Lrs41RKSv0xcUdfToUU/fgzHGeE3eHIFM6hnGI41DmRyxj96fRHHqfMbs/E/rBNMT+MZZ/hJXHwmqGqeqT6tqTVVtD+QDduFKOsXd6hfn78tq0bhaOYhIAK5LbjHu5YnUuYaqjlfVMFUNK1So0M2/O2OMSQUB/n4MbVuF/95XjRW7j9FxTAR7j531dVjXLa0TzEGgmbN8O64kgojkFJFczvKdQJyqblXVQ0CsiDRw+ld6AN859WfjSlgAnYGfnX6a+UArEcnvdO63csqMMSZD6VavJJ8+Wp8TZy/RYXREhhuR2Zu3Kc8AIoEKIhItIn1w3S32nohsBN7EdXcYQGFgnYhsA14AHnbbVX9gArAb2AP86JRPBAqIyG7gGeBFAFWNAV4D1jivV50yY4zJcBqUKcB3A5tQOI9rROZpK3/3dUgek6w0dHRywsLCNCoqytdhGGNMomIvXOaJGev5ZcdRejQsxSv3VibA3/fPyovIWlUNS2yd76MzxhiTojxBgUzoWZfHmpZmauTv9Jq8hlPn0nfnvyUYY4zJIPz9hJfvqczbnauzau9xOoyJYM/RM74OK0mWYIwxJoO5P6wEnz3WgFPnL9NxdATLdqXPxywswRhjTAZUNzSE7wY2pmjeHPSavIZP02HnvyUYY4zJoEqE5OSr/g0JL1+QId9u4bW56WvYf0swxhiTgeUJCuTjHmH0ahTKxOV7eXxaFGcvxvk6LMASjDHGZHgB/n4Ma1eFV9tX4eftR+g8LpKDJ8/7OixLMMYYk1n0aBjKpF512R9zjg6jI9gcfcqn8ViCMcaYTKR5hcJ83b8Rgf5+dPloBfO2HPJZLJZgjDEmk6lQJA/fDmxMxSLB9Pt0HWMX78EXo7ZYgjHGmEyoUJ7sfN63AfdWL8pb87bzwtebuBSXtnPLBKTp0YwxxqSZoEB/RnatRZmCuRj58272x5xn7EO1yZczW5oc31owxhiTifn5Cc+0qsDw+2uw9vcT3DdmRZrNLWMJxhhjsoD7ahdn+mP1OXHuEh3HRLDyt+NeP6YlGGOMySLqhobw7cDGFMiVjYcnruKrtdFePZ4lGGOMyUJKFcjFN/0bU690CM99uZG3523nqpeGl7EEY4wxWUzenIFMeaQe3eqVYMziPQyasc4rY5jZXWTGGJMFBfr78WbHapQpmJvTFy7j7yepfgxLMMYYk0WJCI+Fl/Ha/u0SmTHGGK+wBGOMMcYrLMEYY4zxCkswxhhjvMISjDHGGK+wBGOMMcYrLMEYY4zxCkswxhhjvEJ8MctZeiQiR4HffR1HMgoCx3wdRDIsvptj8d0ci+/m3Ex8pVS1UGIrLMFkECISpaphvo4jKRbfzbH4bo7Fd3O8FZ9dIjPGGOMVlmCMMcZ4hSWYjGO8rwNIgcV3cyy+m2Px3RyvxGd9MMYYY7zCWjDGGGO8whKMMcYYr7AEk86ISAkR+UVEtonIryLypFM+TEQOiMgG53W3D2PcJyKbnTiinLIQEVkoIrucr/l9FFsFt3O0QUROi8hTvjx/IjJJRI6IyBa3siTPl4i8JCK7RWSHiLT2UXzviMh2EdkkIrNEJJ9THioi593O4zgfxZfk55nW5y+ZGGe6xbdPRDY45Wl6DpP5m+L9n0FVtVc6egFFgdrOch5gJ1AZGAY85+v4nLj2AQUTlL0NvOgsvwi8lQ7i9Af+BEr58vwB4UBtYEtK58v5rDcC2YHSwB7A3wfxtQICnOW33OILdd/Oh+cv0c/TF+cvqRgTrH8PeMUX5zCZvyle/xm0Fkw6o6qHVHWdsxwLbAOK+TYqj7QHPnGWPwE6+C6Uv7QE9qiqT0doUNWlQEyC4qTOV3vgc1W9qKp7gd1AvbSOT1UXqGqc8+1KoLg3Y0hOEucvKWl+/iD5GEVEgPuBGd6OIzHJ/E3x+s+gJZh0TERCgVrAKqdokHPJYpKvLkE5FFggImtFpK9TdouqHgLXDzRQ2GfR/a0r1/5Sp5fzB0mfr2LAfrftovH9Pxi9gR/dvi8tIutFZImINPVVUCT+eabH89cUOKyqu9zKfHIOE/xN8frPoCWYdEpEcgNfA0+p6mlgLFAWqAkcwtXk9pXGqlobuAsYKCLhPowlUSKSDWgHfOkUpafzlxxJpMxnzxKIyMtAHDDdKToElFTVWsAzwGciEuyD0JL6PNPV+XN049p/dHxyDhP5m5LkpomU3dA5tASTDolIIK4fhOmq+g2Aqh5W1SuqehX4mDRo9idFVQ86X48As5xYDotIUQDn6xFfxee4C1inqochfZ0/R1LnKxoo4bZdceBgGscGgIj0BO4Fuqtzcd65bHLcWV6L6/r8bWkdWzKfZ7o5fwAiEgDcB8yML/PFOUzsbwpp8DNoCSadca7XTgS2qepwt/Kibpt1BLYkrJsWRCSXiOSJX8bVGbwFmA30dDbrCXzni/jcXPNfY3o5f26SOl+zga4ikl1ESgPlgdVpHZyItAFeANqp6jm38kIi4u8sl3Hi+80H8SX1eaaL8+fmDmC7qkbHF6T1OUzqbwpp8TOYVncy2MvjOz6a4GqObgI2OK+7gWnAZqd8NlDUR/GVwXWHyUbgV+Blp7wA8BOwy/ka4sNzmBM4DuR1K/PZ+cOV6A4Bl3H9d9gnufMFvIzrv9odwF0+im83ruvw8T+D45xtOzmf+0ZgHdDWR/El+Xmm9flLKkanfArQL8G2aXoOk/mb4vWfQRsqxhhjjFfYJTJjjDFeYQnGGGOMV1iCMcYY4xWWYIwxxniFJRhjjDFeYQnGZDjOaLSp8hyLiDQXkUYebrtPRAqmsE0vEbk1lWIrJCLLRWSLiHRwK/8uqWOISD8R6ZEax09rqXnuTPpgCcZkdc0BjxKMh3oBqfVHshuuQQgbAs8DiEhbXCMUJPpktaqOU9WpN3vg+AcB01gvUu/cmXTAEozJqPxF5GNnfosFIpIDQETKisg8ZyDOZSJS0SlvKyKrnAEGF4nILc7Af/2Ap515Oa4ZdFBECjj7Xi8iH+GM0ZSwBSUiz4lrfpLOQBgw3dnfPSIyy227O0XkGzx3GciBa9j0q86wI08B7yRVwYnjOWd5sYi8JSKrRWRn/PsTEX8ReVdcc/psEpHBTvk+EXlFRJYDXUSklYhEisg6EfnSGcsqfrs3nXVRIlJbROaLyB4R6ecWy/MissY5xn/czt22hJ9dIucux3WcJ5NOWYIxGVV5YLSqVgFO4no6GmA8MFhV6wDPAWOc8uVAA3UNMPg58H+qug8YB7yvqjVVdVmCYwwFljt1ZgMlkwtIVb8ConCN3VUT+AGoJCKFnE0eASZfx3v8DGgNzMM1/8kAYKq6Dd3igQBVrYcrMQ11yvrimuejlqpW5++BLAEuqGoTYBEwBLhDXQObRuEamDHeflVtCCzD9bR6Z6AB8CqAiLTC9RnVwzUgZR35e1DUf3x2Cc+dqp6/jvdo0qkAXwdgzA3aq6obnOW1QKjzH3Yj4EvX8EuA679/cA3YN9MZwyobsNeDY4TjGqgQVf1eRE5cT4CqqiIyDXhIRCbjutTlcf+Iqp4C7gEQ13D0LwD3icjHQH7gPVWNTGE38S2mtbgmugLX+Fjj1JnvRVXd5zGJH5SxAa6JpyKcc5kNcD/WbOfrZiC3uuYZiRWRC+Ka/bKV81rvbJcbV2L5g0Q+uxTeg8mgLMGYjOqi2/IVXJeS/ICTTushoQ+B4ao6W0Sa42oReCKxsZTiuLb1H5RM/cnAHOAC8KX+PYkXACJSH/jI+fYVVZ1N4l4B3sDVL7MWV+vmO6BFCvHHn6cr/P37LiQ9/PpZt20Wqmq3FPZ7lWs/i6vOcQT4r6p+5F7JuSyZ2GdnMiG7RGYyDXXNcbFXRLqAaxRZEanhrM4LHHCWe7pVi8U1jWxilgLdnX3dhavVAHAYKOz00WTHNaR9ovtzOuMP4rrcNCWRmFc5l4RqJpVcRKQ8cKuqLsE1kOdVXAkiucSWnAVAP6dPBxEJSWSblUBjESnnbJNTRK5nSPn5QG+3fptiIpLSJHTJfRYmA7IEYzKb7kAfEYkf7bm9Uz4M16WzZcAxt+3nAB0T6+QH/gOEi8g6XJd7/gBQ1cu4+hpWAXOB7W51pgDjEnRUT8fVZ7H1Bt/TG7gSFLhG7e2FKwG8e4P7m4DrvWxyztODCTdQ1aPOcWaIyCbneBU9PYCqLsDVyooUkc3AV6ScPKbwz3NnMjAbTdkYLxORUcB6VZ3o61iMSUuWYIzxIhFZi6tf405VvZjS9sZkJpZgjDHGeIX1wRhjjPEKSzDGGGO8whKMMcYYr7AEY4wxxisswRhjjPGK/weFeOE2S2pR4QAAAABJRU5ErkJggg==", "text/plain": [ "
" ] @@ -1935,7 +1935,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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", "text/plain": [ "
" ] @@ -1963,7 +1963,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEJCAYAAAB7UTvrAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAy8klEQVR4nO3dd3xUZfb48c+hht5bgEDA0AkgoQgWqoIg2NiFrwUsi4VdVveHBkQQV1EUxLZrARdR1wJSo6IgKrIqHSWEhBIgQAgECBJqQsr5/TE3cQhpQGYm5bxfr7xy57nt5JnJnLnPvfeMqCrGGGMMQClfB2CMMabwsKRgjDEmkyUFY4wxmSwpGGOMyWRJwRhjTCZLCsYYYzJ5NCmIyOMisk1EIkTkUxHxE5HpIrJdRMJFZLGIVHdbfoKIRIvIDhG5yZOxGWOMuZh46j4FEWkI/AS0UdVzIjIfWAbEAd+raqqIvASgqqEi0gb4FOgK+AMrgRaqmuaRAI0xxlykjBe2X0FEUoCKQJyqrnCbvxa405keCnymqsnAXhGJxpUg1uS08dq1a2vTpk09ErgxxhRXmzZtOqaqdbKb57GkoKoHRWQGsB84B6zIkhAA7gfmOdMNcSWJDLFO2wVEZDQwGiAgIICNGzcWdOjGGFOsici+nOZ57JyCiNTA9ek/ENdwUCURudtt/kQgFfg4oymbzVw0tqWqs1Q1RFVD6tTJNtEZY4y5TJ480dwP2KuqR1U1BVgE9AAQkZHAYOAu/eOkRizQ2G39RrjOPxhjjPESTyaF/UB3EakoIgL0BaJEZAAQCgxR1bNuy4cBw0WkvIgEAkHAeg/GZ4wxJgtPnlNYJyILgM24hol+BWYB24DywLeuXMFaVX1YVbc5VyhFOsuPuZwrj1JSUoiNjSUpKamg/hRj8PPzo1GjRpQtW9bXoRjjUR67JNUbQkJCNOuJ5r1791KlShVq1aqFk3SMuSKqSkJCAqdOnSIwMNDX4RhzxURkk6qGZDev2N3RnJSUZAnBFCgRoVatWnb0aUqEYpcUAEsIpsDZa8qUFMUyKRhjTHGlqny2fj8rI+M9sn1LCl7Sq1evArnRbtWqVQwePLgAIsqfEydO8NZbb3ltf1fitdde4+zZs3kvaEwRtS/hDHe9t47xi7ay5LeDHtmHJQVzgdTU1AseF6akoKqkp6fnOP9ykkLWv9eYwig1LZ3Zq/dw02ur2RqbyAu3teeN4Z08si9LCgXszJkzDBo0iA4dOtCuXTvmzZt30TKPPPIIISEhtG3blmeeeSazfdmyZbRq1Yprr72WsWPH5nlEsH79enr06EGnTp3o0aMHO3bsAOC6667jt99+y1yuZ8+ehIeHc+bMGe6//366dOlCp06dWLp0KQBz585l2LBh3HLLLdx4440X7GP8+PHs3r2bjh078sQTTwAwffp0unTpQnBwcGb8MTExtGrVigcffJB27dpx1113sXLlSnr27ElQUBDr17tuOZkyZQr33HMPffr0ISgoiNmzZ2fuK6fttm7dmkcffZSrr76aAwcOZNt/b7zxBnFxcfTu3ZvevXsDULly5cxtL1iwgFGjRgEwatQo/vGPf9C7d29CQ0PZvXs3AwYMoHPnzlx33XVs37491343xpuiDp3k9rd/YeqyKK69qg7f/uMG/q9bAKVKeeY8l6cL4vnUs19sIzLuZIFus41/VZ65pW2O87/55hv8/f356quvAEhMTLxomalTp1KzZk3S0tLo27cv4eHhtGjRgoceeojVq1cTGBjIiBEj8oylVatWrF69mjJlyrBy5UqeeuopFi5cyIMPPsjcuXN57bXX2LlzJ8nJyQQHB/PUU0/Rp08f5syZw4kTJ+jatSv9+vUDYM2aNYSHh1OzZs0L9jFt2jQiIiIyk8yKFSvYtWsX69evR1UZMmQIq1evJiAggOjoaD7//HNmzZpFly5d+OSTT/jpp58ICwvjhRdeYMmSJQCEh4ezdu1azpw5Q6dOnRg0aBARERE5bnfHjh28//77mUcs2fXf2LFjmTlzJj/88AO1a9fOs+927tzJypUrKV26NH379uWdd94hKCiIdevW8eijj/L999/nuQ1jPCk5NY1/fx/NW6t2U61CWf71f50Y1L6Bxy96KNZJwRfat2/PuHHjCA0NZfDgwVx33XUXLTN//nxmzZpFamoqhw4dIjIykvT0dJo1a5Z5HfyIESOYNWtWrvtKTExk5MiR7Nq1CxEhJSUFgGHDhvHcc88xffp05syZk/kJecWKFYSFhTFjxgzAdfnu/v37Aejfv/9FCSE7K1asYMWKFXTq5Dp0PX36NLt27SIgIIDAwEDat28PQNu2benbty8iQvv27YmJicncxtChQ6lQoQIVKlSgd+/erF+/np9++inH7TZp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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEJCAYAAAB7UTvrAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAy8klEQVR4nO3dd3xUZfb48c+hht5bgEDA0AkgoQgWqoIg2NiFrwUsi4VdVveHBkQQV1EUxLZrARdR1wJSo6IgKrIqHSWEhBIgQAgECBJqQsr5/TE3cQhpQGYm5bxfr7xy57nt5JnJnLnPvfeMqCrGGGMMQClfB2CMMabwsKRgjDEmkyUFY4wxmSwpGGOMyWRJwRhjTCZLCsYYYzJ5NCmIyOMisk1EIkTkUxHxE5HpIrJdRMJFZLGIVHdbfoKIRIvIDhG5yZOxGWOMuZh46j4FEWkI/AS0UdVzIjIfWAbEAd+raqqIvASgqqEi0gb4FOgK+AMrgRaqmuaRAI0xxlykjBe2X0FEUoCKQJyqrnCbvxa405keCnymqsnAXhGJxpUg1uS08dq1a2vTpk09ErgxxhRXmzZtOqaqdbKb57GkoKoHRWQGsB84B6zIkhAA7gfmOdMNcSWJDLFO2wVEZDQwGiAgIICNGzcWdOjGGFOsici+nOZ57JyCiNTA9ek/ENdwUCURudtt/kQgFfg4oymbzVw0tqWqs1Q1RFVD6tTJNtEZY4y5TJ480dwP2KuqR1U1BVgE9AAQkZHAYOAu/eOkRizQ2G39RrjOPxhjjPESTyaF/UB3EakoIgL0BaJEZAAQCgxR1bNuy4cBw0WkvIgEAkHAeg/GZ4wxJgtPnlNYJyILgM24hol+BWYB24DywLeuXMFaVX1YVbc5VyhFOsuPuZwrj1JSUoiNjSUpKamg/hRj8PPzo1GjRpQtW9bXoRjjUR67JNUbQkJCNOuJ5r1791KlShVq1aqFk3SMuSKqSkJCAqdOnSIwMNDX4RhzxURkk6qGZDev2N3RnJSUZAnBFCgRoVatWnb0aUqEYpcUAEsIpsDZa8qUFMUyKRhjTHGlqny2fj8rI+M9sn1LCl7Sq1evArnRbtWqVQwePLgAIsqfEydO8NZbb3ltf1fitdde4+zZs3kvaEwRtS/hDHe9t47xi7ay5LeDHtmHJQVzgdTU1AseF6akoKqkp6fnOP9ykkLWv9eYwig1LZ3Zq/dw02ur2RqbyAu3teeN4Z08si9LCgXszJkzDBo0iA4dOtCuXTvmzZt30TKPPPIIISEhtG3blmeeeSazfdmyZbRq1Yprr72WsWPH5nlEsH79enr06EGnTp3o0aMHO3bsAOC6667jt99+y1yuZ8+ehIeHc+bMGe6//366dOlCp06dWLp0KQBz585l2LBh3HLLLdx4440X7GP8+PHs3r2bjh078sQTTwAwffp0unTpQnBwcGb8MTExtGrVigcffJB27dpx1113sXLlSnr27ElQUBDr17tuOZkyZQr33HMPffr0ISgoiNmzZ2fuK6fttm7dmkcffZSrr76aAwcOZNt/b7zxBnFxcfTu3ZvevXsDULly5cxtL1iwgFGjRgEwatQo/vGPf9C7d29CQ0PZvXs3AwYMoHPnzlx33XVs37491343xpuiDp3k9rd/YeqyKK69qg7f/uMG/q9bAKVKeeY8l6cL4vnUs19sIzLuZIFus41/VZ65pW2O87/55hv8/f356quvAEhMTLxomalTp1KzZk3S0tLo27cv4eHhtGjRgoceeojVq1cTGBjIiBEj8oylVatWrF69mjJlyrBy5UqeeuopFi5cyIMPPsjcuXN57bXX2LlzJ8nJyQQHB/PUU0/Rp08f5syZw4kTJ+jatSv9+vUDYM2aNYSHh1OzZs0L9jFt2jQiIiIyk8yKFSvYtWsX69evR1UZMmQIq1evJiAggOjoaD7//HNmzZpFly5d+OSTT/jpp58ICwvjhRdeYMmSJQCEh4ezdu1azpw5Q6dOnRg0aBARERE5bnfHjh28//77mUcs2fXf2LFjmTlzJj/88AO1a9fOs+927tzJypUrKV26NH379uWdd94hKCiIdevW8eijj/L999/nuQ1jPCk5NY1/fx/NW6t2U61CWf71f50Y1L6Bxy96KNZJwRfat2/PuHHjCA0NZfDgwVx33XUXLTN//nxmzZpFamoqhw4dIjIykvT0dJo1a5Z5HfyIESOYNWtWrvtKTExk5MiR7Nq1CxEhJSUFgGHDhvHcc88xffp05syZk/kJecWKFYSFhTFjxgzAdfnu/v37Aejfv/9FCSE7K1asYMWKFXTq5Dp0PX36NLt27SIgIIDAwEDat28PQNu2benbty8iQvv27YmJicncxtChQ6lQoQIVKlSgd+/erF+/np9++inH7TZp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", "text/plain": [ "
" ] diff --git a/idaes_examples/archive/power_gen/supercritical/supercritical_power_plant_src.ipynb b/idaes_examples/archive/power_gen/supercritical/supercritical_power_plant_src.ipynb index ad4caf5d..338f6dbd 100644 --- a/idaes_examples/archive/power_gen/supercritical/supercritical_power_plant_src.ipynb +++ b/idaes_examples/archive/power_gen/supercritical/supercritical_power_plant_src.ipynb @@ -3257,14 +3257,14 @@ "2022-09-16 12:08:39 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.fwh8.cooling.area\n", "2022-09-16 12:08:39 [INFO] idaes.init.Steam Cycle Model: Starting initialization\n", "2022-09-16 12:08:39 [INFO] idaes.init.fs.turb.inlet_split: Initialization Complete: optimal - Optimal Solution Found\n", - "2022-09-16 12:08:39 [INFO] idaes.init.fs.turb.throttle_valve[1]: Steam valve intialization started\n", - "2022-09-16 12:08:39 [INFO] idaes.init.fs.turb.throttle_valve[1]: Steam valve intialization complete\n", - "2022-09-16 12:08:39 [INFO] idaes.init.fs.turb.throttle_valve[2]: Steam valve intialization started\n", - "2022-09-16 12:08:39 [INFO] idaes.init.fs.turb.throttle_valve[2]: Steam valve intialization complete\n", - "2022-09-16 12:08:39 [INFO] idaes.init.fs.turb.throttle_valve[3]: Steam valve intialization started\n", - "2022-09-16 12:08:39 [INFO] idaes.init.fs.turb.throttle_valve[3]: Steam valve intialization complete\n", - "2022-09-16 12:08:39 [INFO] idaes.init.fs.turb.throttle_valve[4]: Steam valve intialization started\n", - "2022-09-16 12:08:40 [INFO] idaes.init.fs.turb.throttle_valve[4]: Steam valve intialization complete\n", + "2022-09-16 12:08:39 [INFO] idaes.init.fs.turb.throttle_valve[1]: Steam valve initialization started\n", + "2022-09-16 12:08:39 [INFO] idaes.init.fs.turb.throttle_valve[1]: Steam valve initialization complete\n", + "2022-09-16 12:08:39 [INFO] idaes.init.fs.turb.throttle_valve[2]: Steam valve initialization started\n", + "2022-09-16 12:08:39 [INFO] idaes.init.fs.turb.throttle_valve[2]: Steam valve initialization complete\n", + "2022-09-16 12:08:39 [INFO] idaes.init.fs.turb.throttle_valve[3]: Steam valve initialization started\n", + "2022-09-16 12:08:39 [INFO] idaes.init.fs.turb.throttle_valve[3]: Steam valve initialization complete\n", + "2022-09-16 12:08:39 [INFO] idaes.init.fs.turb.throttle_valve[4]: Steam valve initialization started\n", + "2022-09-16 12:08:40 [INFO] idaes.init.fs.turb.throttle_valve[4]: Steam valve initialization complete\n", "2022-09-16 12:08:40 [INFO] idaes.init.fs.turb.inlet_stage[1]: Initialization Complete: optimal - Optimal Solution Found\n", "2022-09-16 12:08:40 [INFO] idaes.init.fs.turb.inlet_stage[2]: Initialization Complete: optimal - Optimal Solution Found\n", "2022-09-16 12:08:40 [INFO] idaes.init.fs.turb.inlet_stage[3]: Initialization Complete: optimal - Optimal Solution Found\n", @@ -3280,14 +3280,14 @@ "2022-09-16 12:08:42 [INFO] idaes.init.fs.turb.lp_split[11]: Initialization Complete: optimal - Optimal Solution Found\n", "2022-09-16 12:08:42 [INFO] idaes.init.fs.turb.outlet_stage: Initialization Complete (Outlet Stage): optimal - Optimal Solution Found\n", "2022-09-16 12:08:42 [INFO] idaes.init.fs.turb.inlet_split: Initialization Complete: optimal - Optimal Solution Found\n", - "2022-09-16 12:08:42 [INFO] idaes.init.fs.turb.throttle_valve[1]: Steam valve intialization started\n", - "2022-09-16 12:08:42 [INFO] idaes.init.fs.turb.throttle_valve[1]: Steam valve intialization complete\n", - "2022-09-16 12:08:42 [INFO] idaes.init.fs.turb.throttle_valve[2]: Steam valve intialization started\n", - "2022-09-16 12:08:42 [INFO] idaes.init.fs.turb.throttle_valve[2]: Steam valve intialization complete\n", - "2022-09-16 12:08:42 [INFO] idaes.init.fs.turb.throttle_valve[3]: Steam valve intialization started\n", - "2022-09-16 12:08:42 [INFO] idaes.init.fs.turb.throttle_valve[3]: Steam valve intialization complete\n", - "2022-09-16 12:08:42 [INFO] idaes.init.fs.turb.throttle_valve[4]: Steam valve intialization started\n", - "2022-09-16 12:08:42 [INFO] idaes.init.fs.turb.throttle_valve[4]: Steam valve intialization complete\n", + "2022-09-16 12:08:42 [INFO] idaes.init.fs.turb.throttle_valve[1]: Steam valve initialization started\n", + "2022-09-16 12:08:42 [INFO] idaes.init.fs.turb.throttle_valve[1]: Steam valve initialization complete\n", + "2022-09-16 12:08:42 [INFO] idaes.init.fs.turb.throttle_valve[2]: Steam valve initialization started\n", + "2022-09-16 12:08:42 [INFO] idaes.init.fs.turb.throttle_valve[2]: Steam valve initialization complete\n", + "2022-09-16 12:08:42 [INFO] idaes.init.fs.turb.throttle_valve[3]: Steam valve initialization started\n", + "2022-09-16 12:08:42 [INFO] idaes.init.fs.turb.throttle_valve[3]: Steam valve initialization complete\n", + "2022-09-16 12:08:42 [INFO] idaes.init.fs.turb.throttle_valve[4]: Steam valve initialization started\n", + "2022-09-16 12:08:42 [INFO] idaes.init.fs.turb.throttle_valve[4]: Steam valve initialization complete\n", "2022-09-16 12:08:42 [INFO] idaes.init.fs.turb.inlet_stage[1]: Initialization Complete: optimal - Optimal Solution Found\n", "2022-09-16 12:08:43 [INFO] idaes.init.fs.turb.inlet_stage[2]: Initialization Complete: optimal - Optimal Solution Found\n", "2022-09-16 12:08:43 [INFO] idaes.init.fs.turb.inlet_stage[3]: Initialization Complete: optimal - Optimal Solution Found\n", diff --git a/idaes_examples/archive/power_gen/supercritical/supercritical_steam_cycle_src.ipynb b/idaes_examples/archive/power_gen/supercritical/supercritical_steam_cycle_src.ipynb index 24aed502..d8d5db80 100644 --- a/idaes_examples/archive/power_gen/supercritical/supercritical_steam_cycle_src.ipynb +++ b/idaes_examples/archive/power_gen/supercritical/supercritical_steam_cycle_src.ipynb @@ -1150,14 +1150,14 @@ "2022-09-16 12:10:56 [WARNING] idaes.core.util.scaling: Missing scaling factor for fs.fwh8.cooling.area\n", "2022-09-16 12:10:56 [INFO] idaes.init.Steam Cycle Model: Starting initialization\n", "2022-09-16 12:10:56 [INFO] idaes.init.fs.turb.inlet_split: Initialization Complete: optimal - Optimal Solution Found\n", - "2022-09-16 12:10:56 [INFO] idaes.init.fs.turb.throttle_valve[1]: Steam valve intialization started\n", - "2022-09-16 12:10:56 [INFO] idaes.init.fs.turb.throttle_valve[1]: Steam valve intialization complete\n", - "2022-09-16 12:10:56 [INFO] idaes.init.fs.turb.throttle_valve[2]: Steam valve intialization started\n", - "2022-09-16 12:10:56 [INFO] idaes.init.fs.turb.throttle_valve[2]: Steam valve intialization complete\n", - "2022-09-16 12:10:56 [INFO] idaes.init.fs.turb.throttle_valve[3]: Steam valve intialization started\n", - "2022-09-16 12:10:57 [INFO] idaes.init.fs.turb.throttle_valve[3]: Steam valve intialization complete\n", - "2022-09-16 12:10:57 [INFO] idaes.init.fs.turb.throttle_valve[4]: Steam valve intialization started\n", - "2022-09-16 12:10:57 [INFO] idaes.init.fs.turb.throttle_valve[4]: Steam valve intialization complete\n", + "2022-09-16 12:10:56 [INFO] idaes.init.fs.turb.throttle_valve[1]: Steam valve initialization started\n", + "2022-09-16 12:10:56 [INFO] idaes.init.fs.turb.throttle_valve[1]: Steam valve initialization complete\n", + "2022-09-16 12:10:56 [INFO] idaes.init.fs.turb.throttle_valve[2]: Steam valve initialization started\n", + "2022-09-16 12:10:56 [INFO] idaes.init.fs.turb.throttle_valve[2]: Steam valve initialization complete\n", + "2022-09-16 12:10:56 [INFO] idaes.init.fs.turb.throttle_valve[3]: Steam valve initialization started\n", + "2022-09-16 12:10:57 [INFO] idaes.init.fs.turb.throttle_valve[3]: Steam valve initialization complete\n", + "2022-09-16 12:10:57 [INFO] idaes.init.fs.turb.throttle_valve[4]: Steam valve initialization started\n", + "2022-09-16 12:10:57 [INFO] idaes.init.fs.turb.throttle_valve[4]: Steam valve initialization complete\n", "2022-09-16 12:10:57 [INFO] idaes.init.fs.turb.inlet_stage[1]: Initialization Complete: optimal - Optimal Solution Found\n", "2022-09-16 12:10:57 [INFO] idaes.init.fs.turb.inlet_stage[2]: Initialization Complete: optimal - Optimal Solution Found\n", "2022-09-16 12:10:57 [INFO] idaes.init.fs.turb.inlet_stage[3]: Initialization Complete: optimal - Optimal Solution Found\n", @@ -1173,14 +1173,14 @@ "2022-09-16 12:10:59 [INFO] idaes.init.fs.turb.lp_split[11]: Initialization Complete: optimal - Optimal Solution Found\n", "2022-09-16 12:10:59 [INFO] idaes.init.fs.turb.outlet_stage: Initialization Complete (Outlet Stage): optimal - Optimal Solution Found\n", "2022-09-16 12:10:59 [INFO] idaes.init.fs.turb.inlet_split: Initialization Complete: optimal - Optimal Solution Found\n", - "2022-09-16 12:10:59 [INFO] idaes.init.fs.turb.throttle_valve[1]: Steam valve intialization started\n", - "2022-09-16 12:10:59 [INFO] idaes.init.fs.turb.throttle_valve[1]: Steam valve intialization complete\n", - "2022-09-16 12:10:59 [INFO] idaes.init.fs.turb.throttle_valve[2]: Steam valve intialization started\n", - "2022-09-16 12:10:59 [INFO] idaes.init.fs.turb.throttle_valve[2]: Steam valve intialization complete\n", - "2022-09-16 12:10:59 [INFO] idaes.init.fs.turb.throttle_valve[3]: Steam valve intialization started\n", - "2022-09-16 12:10:59 [INFO] idaes.init.fs.turb.throttle_valve[3]: Steam valve intialization complete\n", - "2022-09-16 12:10:59 [INFO] idaes.init.fs.turb.throttle_valve[4]: Steam valve intialization started\n", - "2022-09-16 12:10:59 [INFO] idaes.init.fs.turb.throttle_valve[4]: Steam valve intialization complete\n", + "2022-09-16 12:10:59 [INFO] idaes.init.fs.turb.throttle_valve[1]: Steam valve initialization started\n", + "2022-09-16 12:10:59 [INFO] idaes.init.fs.turb.throttle_valve[1]: Steam valve initialization complete\n", + "2022-09-16 12:10:59 [INFO] idaes.init.fs.turb.throttle_valve[2]: Steam valve initialization started\n", + "2022-09-16 12:10:59 [INFO] idaes.init.fs.turb.throttle_valve[2]: Steam valve initialization complete\n", + "2022-09-16 12:10:59 [INFO] idaes.init.fs.turb.throttle_valve[3]: Steam valve initialization started\n", + "2022-09-16 12:10:59 [INFO] idaes.init.fs.turb.throttle_valve[3]: Steam valve initialization complete\n", + "2022-09-16 12:10:59 [INFO] idaes.init.fs.turb.throttle_valve[4]: Steam valve initialization started\n", + "2022-09-16 12:10:59 [INFO] idaes.init.fs.turb.throttle_valve[4]: Steam valve initialization complete\n", "2022-09-16 12:10:59 [INFO] idaes.init.fs.turb.inlet_stage[1]: Initialization Complete: optimal - Optimal Solution Found\n", "2022-09-16 12:10:59 [INFO] idaes.init.fs.turb.inlet_stage[2]: Initialization Complete: optimal - Optimal Solution Found\n", "2022-09-16 12:11:00 [INFO] idaes.init.fs.turb.inlet_stage[3]: Initialization Complete: optimal - Optimal Solution Found\n", diff --git a/idaes_examples/mod/co2_adsorption_desorption/NETL_32D_gas_phase_thermo.py b/idaes_examples/mod/co2_adsorption_desorption/NETL_32D_gas_phase_thermo.py index 9f273146..37a6de39 100644 --- a/idaes_examples/mod/co2_adsorption_desorption/NETL_32D_gas_phase_thermo.py +++ b/idaes_examples/mod/co2_adsorption_desorption/NETL_32D_gas_phase_thermo.py @@ -442,13 +442,13 @@ def initialize( hold_state : flag indicating whether the initialization routine should unfix any state variables fixed during initialization (default=False). - - True - states varaibles are not unfixed, and + - True - states variables are not unfixed, and a dict of returned containing flags for which states were fixed during initialization. - False - state variables are unfixed after initialization by calling the - relase_state method + release_state method Returns: If hold_states is True, returns a dict containing flags for which states were fixed during initialization. @@ -563,7 +563,7 @@ def initialize( def release_state(blk, flags, outlvl=0): """ - Method to relase state variables fixed during initialization. + Method to release state variables fixed during initialization. Keyword Arguments: flags : dict containing information of which state variables were fixed during initialization, and should now be diff --git a/idaes_examples/mod/co2_adsorption_desorption/NETL_32D_solid_phase_thermo.py b/idaes_examples/mod/co2_adsorption_desorption/NETL_32D_solid_phase_thermo.py index c6901f56..7161648b 100644 --- a/idaes_examples/mod/co2_adsorption_desorption/NETL_32D_solid_phase_thermo.py +++ b/idaes_examples/mod/co2_adsorption_desorption/NETL_32D_solid_phase_thermo.py @@ -104,7 +104,7 @@ def build(self): ) # TODO - actual molecular weights of the materials can be substituted here - # but are not necessary for peformance calculations + # but are not necessary for performance calculations mw_comp_dict = { "H2O_s": 0.018, # MW of H2O(g) is used for H2O(s) "Car": 0.044, # MW of CO2(g) is used for carbamate @@ -275,7 +275,7 @@ def initialize( initialization. - False - state variables are unfixed after initialization by calling the - relase_state method + release_state method Returns: If hold_states is True, returns a dict containing flags for which states were fixed during initialization. @@ -342,7 +342,7 @@ def initialize( def release_state(blk, flags, outlvl=idaeslog.NOTSET): """ - Method to relase state variables fixed during initialization. + Method to release state variables fixed during initialization. Keyword Arguments: flags : dict containing information of which state variables were fixed during initialization, and should now be diff --git a/idaes_examples/mod/dae/petsc/pid_steam_tank.py b/idaes_examples/mod/dae/petsc/pid_steam_tank.py index 70a65643..f93b54d6 100644 --- a/idaes_examples/mod/dae/petsc/pid_steam_tank.py +++ b/idaes_examples/mod/dae/petsc/pid_steam_tank.py @@ -47,7 +47,7 @@ def _valve_pressure_flow_cb(b): b.Cv = pyo.Var( initialize=0.1, - doc="Valve flow coefficent", + doc="Valve flow coefficient", units=umeta("amount") / umeta("time") / umeta("pressure"), ) b.Cv.fix() @@ -75,7 +75,7 @@ def create_model( """Create a test model and solver Args: - time_set (list): The begining and end point of the time domain + time_set (list): The beginning and end point of the time domain time_units (Pyomo Unit object): Units of time domain nfe (int): Number of finite elements argument for the DAE transformation. diff --git a/idaes_examples/mod/hda/hda_ideal_VLE.py b/idaes_examples/mod/hda/hda_ideal_VLE.py index cd1581e8..9498ec7c 100644 --- a/idaes_examples/mod/hda/hda_ideal_VLE.py +++ b/idaes_examples/mod/hda/hda_ideal_VLE.py @@ -433,7 +433,7 @@ def initialize(blk, state_args={}, state_vars_fixed=False, state_args : Dictionary with initial guesses for the state vars chosen. Note that if this method is triggered through the control volume, and if initial guesses - were not provied at the unit model level, the + were not provided at the unit model level, the control volume passes the inlet values as initial guess.The keys for the state_args dictionary are: @@ -444,7 +444,7 @@ def initialize(blk, state_args={}, state_vars_fixed=False, outlvl : sets output level of initialization routine * 0 = no output (default) * 1 = return solver state for each step in routine - * 2 = include solver output infomation (tee=True) + * 2 = include solver output information (tee=True) optarg : solver options dictionary object (default=None) state_vars_fixed: Flag to denote if state vars have already been fixed. @@ -455,18 +455,18 @@ def initialize(blk, state_args={}, state_vars_fixed=False, with 0D blocks. - False - states have not been fixed. The state block will deal with fixing/unfixing. - solver : str indicating whcih solver to use during + solver : str indicating which solver to use during initialization (default = 'ipopt') hold_state : flag indicating whether the initialization routine should unfix any state variables fixed during initialization (default=False). - - True - states varaibles are not unfixed, and + - True - states variables are not unfixed, and a dict of returned containing flags for which states were fixed during initialization. - False - state variables are unfixed after initialization by calling the - relase_state method + release_state method Returns: If hold_states is True, returns a dict containing flags for which states were fixed during initialization. @@ -554,7 +554,7 @@ def initialize(blk, state_args={}, state_vars_fixed=False, def release_state(blk, flags, outlvl=0): ''' - Method to relase state variables fixed during initialization. + Method to release state variables fixed during initialization. Keyword Arguments: flags : dict containing information of which state variables were fixed during initialization, and should now be @@ -712,7 +712,7 @@ def rule_energy_internal_mol_phase_comp(b, p, j): return b.energy_internal_mol_phase_comp[p, j] == \ b.enth_mol_phase_comp[p, j] - \ const.gas_constant*(b.temperature - - b._params.temeprature_ref) + b._params.temperature_ref) else: return b.energy_internal_mol_phase_comp[p, j] == \ b.enth_mol_phase_comp[p, j] diff --git a/idaes_examples/mod/methanol/methanol_param_VLE.py b/idaes_examples/mod/methanol/methanol_param_VLE.py index 1ee5128a..041eb6e1 100644 --- a/idaes_examples/mod/methanol/methanol_param_VLE.py +++ b/idaes_examples/mod/methanol/methanol_param_VLE.py @@ -11,7 +11,7 @@ # at the URL "https://github.com/IDAES/idaes-pse". ############################################################################## """ -Example property package for the VLE calucations for the methanol synthesis +Example property package for the VLE calculations for the methanol synthesis problem from Turkay & Grossmann. The parameters and correlations are from the paper. """ @@ -37,7 +37,7 @@ from .methanol_state_block_VLE import IdealStateBlock -# Some more inforation about this module +# Some more information about this module __author__ = "Jaffer Ghouse", "Brandon Paul" __version__ = "0.0.1" diff --git a/idaes_examples/mod/methanol/methanol_state_block_VLE.py b/idaes_examples/mod/methanol/methanol_state_block_VLE.py index d518221e..ce803ef2 100644 --- a/idaes_examples/mod/methanol/methanol_state_block_VLE.py +++ b/idaes_examples/mod/methanol/methanol_state_block_VLE.py @@ -40,7 +40,7 @@ solve_indexed_blocks) from idaes.core.util.exceptions import ConfigurationError -# Some more inforation about this module +# Some more information about this module __author__ = "Jaffer Ghouse", "Brandon Paul" __version__ = "0.0.1" @@ -65,7 +65,7 @@ def initialize(blk, state_args=None, state_args : Dictionary with initial guesses for the state vars chosen. Note that if this method is triggered through the control volume, and if initial guesses - were not provied at the unit model level, the + were not provided at the unit model level, the control volume passes the inlet values as initial guess.The keys for the state_args dictionary are: @@ -79,7 +79,7 @@ def initialize(blk, state_args=None, * 0 = no output (default) * 1 = return solver state for each step in routine - * 2 = include solver output infomation (tee=True) + * 2 = include solver output information (tee=True) optarg : solver options dictionary object (default=None) solver : str indicating which solver to use during @@ -190,7 +190,7 @@ def initialize(blk, state_args=None, def release_state(blk, flags, outlvl=0): ''' - Method to relase state variables fixed during initialization. + Method to release state variables fixed during initialization. Keyword Arguments: flags : dict containing information of which state variables diff --git a/idaes_examples/mod/power_gen/SOFC_ROM.py b/idaes_examples/mod/power_gen/SOFC_ROM.py index 5bb651c8..3c271de3 100644 --- a/idaes_examples/mod/power_gen/SOFC_ROM.py +++ b/idaes_examples/mod/power_gen/SOFC_ROM.py @@ -58,7 +58,7 @@ def build_SOFC_ROM(m): n_outputs = 48 n_samples = 13424 - # create indecies for vars and params + # create indices for vars and params input_index = list(range(n_inputs)) input_plus_index = list(range(n_inputs + 1)) output_index = list(range(n_outputs)) diff --git a/idaes_examples/mod/power_gen/gas_turbine.py b/idaes_examples/mod/power_gen/gas_turbine.py index df43452b..c0852bbc 100644 --- a/idaes_examples/mod/power_gen/gas_turbine.py +++ b/idaes_examples/mod/power_gen/gas_turbine.py @@ -85,11 +85,11 @@ def _add_properties( self.cmb_species = cmb_species self.flue_species = flue_species self.rxns = rxns - # Here three differnt type of property blocks are used, so that we can + # Here three different type of property blocks are used, so that we can # avoid components with zero flow, which can cause problems with # certain property calculations (entropy for example). Three types of # gas streams are Air, combstion mixture, and flue gas. Fortunately - # natural gas has some air compoents in it so the combustion property + # natural gas has some air components in it so the combustion property # parameters can be used for natural gas and natural gas mixed with air. self.prop_water = iapws95.Iapws95ParameterBlock() self.air_prop_params = GenericParameterBlock( @@ -122,7 +122,7 @@ def _add_models(self): property_package=self.flue_prop_params, ) self.vsv = um.Valve( - doc="Valve to approximatly variable inlet guide vanes", + doc="Valve to approximately variable inlet guide vanes", valve_function_callback=um.ValveFunctionType.linear, property_package=self.air_prop_params, ) @@ -323,7 +323,7 @@ def head_isen_eqn(b, t): ) def _add_constraints(self): - """Add addtional flowsheet constraints and expressions""" + """Add additional flowsheet constraints and expressions""" self.cmbout_o2_mol_frac = pyo.Var( self.time, initialize=0.1157, doc="Combustor outlet O2 mole fraction." ) @@ -373,7 +373,7 @@ def gt_power_expr(b, t): + self.gts3.control_volume.work[t] ) - # Add a varable and constraint for gross power. This allows fixing power + # Add a variable and constraint for gross power. This allows fixing power # for simulations where a specific power output is desired. self.gt_power = pyo.Var(self.time, units=pyo.units.W) @@ -919,7 +919,7 @@ def initialize( propagate_state(self.g02b) self.gts1.ratioP[0] = 0.7 self.gts1.initialize(outlvl=outlvl, solver=solver, optarg=optarg) - # blade cooling air valve01, and calculate a flow coefficent + # blade cooling air valve01, and calculate a flow coefficient propagate_state(self.air05) self.valve01.Cv = 2 self.valve01.Cv.unfix() @@ -942,7 +942,7 @@ def initialize( propagate_state(self.g04) self.gts2.ratioP[0] = 0.7 self.gts2.initialize(outlvl=outlvl, solver=solver, optarg=optarg) - # blade cooling air valve02, and calculate a flow coefficent + # blade cooling air valve02, and calculate a flow coefficient propagate_state(self.air07) self.valve02.Cv = 2 self.valve02.Cv.unfix() @@ -965,7 +965,7 @@ def initialize( propagate_state(self.g06) self.gts3.ratioP[0] = 0.7 self.gts3.initialize(outlvl=outlvl, solver=solver, optarg=optarg) - # blade cooling air valve03, and calculate a flow coefficent + # blade cooling air valve03, and calculate a flow coefficient propagate_state(self.air09) self.valve03.Cv = 2 self.valve03.Cv.unfix() @@ -997,17 +997,17 @@ def initialize( self.valve01.control_volume.properties_in[0].flow_mol.unfix() self.valve02.control_volume.properties_in[0].flow_mol.unfix() self.valve03.control_volume.properties_in[0].flow_mol.unfix() - # deltaP will be whatever is needed to satisfy the power requirment + # deltaP will be whatever is needed to satisfy the power requirement self.vsv.deltaP.unfix() # The compressor efficiency is a little high since it doesn't include # throttling in the valve use to approximate VSV. self.cmp1.efficiency_isentropic.fix(0.92) self.cmp1.ratioP.fix(17.5) # lowering this ratio, just means less pressure - # drop in the VSV valve, decresing throttle loss + # drop in the VSV valve, decreasing throttle loss # Exhaust pressure will be a bit over ATM due to HRSG. This will come from # HRSG model when coupled to form NGCC model self.exhaust_1.pressure.fix(1.1e5) - # Don't know how much blade cooling air is needed for off desing case, but + # Don't know how much blade cooling air is needed for off design case, but # full load flows were based on WVU model. For now just leave valves at # fixed opening. self.valve01.valve_opening.fix() diff --git a/idaes_examples/mod/power_gen/hrsg.py b/idaes_examples/mod/power_gen/hrsg.py index 8c0a3a93..2e0a0a7b 100644 --- a/idaes_examples/mod/power_gen/hrsg.py +++ b/idaes_examples/mod/power_gen/hrsg.py @@ -89,7 +89,7 @@ def _add_properties(self): def _add_unit_models(self): """Add process unit models""" - # short refernce to property parameter blocks + # short reference to property parameter blocks prop_water = self.prop_water prop_gas = self.prop_gas @@ -117,7 +117,7 @@ def _add_unit_models(self): inlet_list=["econ_lp", "Preheater"], ) self.drum_lp = HelmPhaseSeparator( - doc="Phase seperator for LP evaporator (parital evaporator)", + doc="Phase separator for LP evaporator (partial evaporator)", property_package=prop_water, ) self.evap_lp = HeatExchanger( diff --git a/idaes_examples/mod/power_gen/ngcc.py b/idaes_examples/mod/power_gen/ngcc.py index dc3b9912..49dfff98 100644 --- a/idaes_examples/mod/power_gen/ngcc.py +++ b/idaes_examples/mod/power_gen/ngcc.py @@ -221,7 +221,7 @@ def _add_constraints(self): self.cap_specific_reboiler_duty = pyo.Var( initialize=2.7e6, units=pyo.units.J / pyo.units.kg ) - self.cap_addtional_co2 = pyo.Var( + self.cap_additional_co2 = pyo.Var( self.config.time, initialize=0.0, units=pyo.units.kg / pyo.units.s ) self.cap_specific_compression_power = pyo.Var( @@ -349,7 +349,7 @@ def reboiler_duty_expr(b, t): # scale to flue gas flow * 0.04401 * pyo.units.kg / pyo.units.mol - + b.cap_addtional_co2[t] + + b.cap_additional_co2[t] ) + b.cap_additional_reboiler_duty[t] ) @@ -431,7 +431,7 @@ def initialize( # here suffix=False avoids loading scaling factors iutil.from_json(self, fname=load_from, wts=iutil.StoreSpec(suffix=False)) else: - self.cap_addtional_co2.fix() + self.cap_additional_co2.fix() self.cap_fraction.fix() self.cap_specific_reboiler_duty.fix() self.cap_specific_compression_power.fix() @@ -496,7 +496,7 @@ def initialize( self.st.steam_turbine.inlet_split.inlet.unfix() solver_obj.solve(self, tee=True) - init_log.info(f"Fix flow coefficent and free throttle") + init_log.info(f"Fix flow coefficient and free throttle") self.st.steam_turbine.throttle_valve[1].pressure_flow_equation.deactivate() self.st.steam_turbine.outlet_stage.flow_coeff.fix() solver_obj.solve(self, tee=True) diff --git a/idaes_examples/mod/power_gen/ngcc_soec_costing.py b/idaes_examples/mod/power_gen/ngcc_soec_costing.py index e1b9d13f..5d7423c7 100644 --- a/idaes_examples/mod/power_gen/ngcc_soec_costing.py +++ b/idaes_examples/mod/power_gen/ngcc_soec_costing.py @@ -101,7 +101,7 @@ def CO2_aux_load_constraint(b, t): return b.CO2_aux_load[t] == baseline_CO2_aux_load*(b.CO2_captured[t]/baseline_capture) # CO2 compressor auxiliary load - # this load is included in CO2_aux_load but needed seperatly for costing + # this load is included in CO2_aux_load but needed separately for costing m.fs.CO2_compressor_load = pyo.Var(m.fs.time, units=pyunits.kW) @m.fs.Constraint(m.fs.time) @@ -760,7 +760,7 @@ def get_ngcc_soec_capital_cost(m, CE_index_year): }, ) - # accounts with auxilliary load as the process parameter + # accounts with auxiliary load as the process parameter aux_load_accounts = ["11.2", "11.3", "11.4", "11.5", "11.6", "12.1", "12.2", "12.3", "12.4", "12.5", "12.6", "12.7", "12.8", "12.9"] diff --git a/idaes_examples/mod/power_gen/soc_dynamic_flowsheet.py b/idaes_examples/mod/power_gen/soc_dynamic_flowsheet.py index b2f5b0a8..d1277f37 100644 --- a/idaes_examples/mod/power_gen/soc_dynamic_flowsheet.py +++ b/idaes_examples/mod/power_gen/soc_dynamic_flowsheet.py @@ -1227,7 +1227,7 @@ def _add_tags(self): display_units=pyo.units.MW, ) tag_group["total_electric_power"] = iutil.ModelTag( - doc="Total electric power for SOEC and auxilaries", + doc="Total electric power for SOEC and auxiliaries", expr=self.total_electric_power[t0], format_string="{:.3f}", display_units=pyo.units.MW, diff --git a/idaes_examples/mod/power_gen/soec.py b/idaes_examples/mod/power_gen/soec.py index f30ef55d..033c0175 100644 --- a/idaes_examples/mod/power_gen/soec.py +++ b/idaes_examples/mod/power_gen/soec.py @@ -1111,19 +1111,19 @@ def _add_tags(self): display_units=pyo.units.MW, ) tag_group["total_electric_power"] = iutil.ModelTag( - doc="Total electric power for SOEC and auxilaries", + doc="Total electric power for SOEC and auxiliaries", expr=self.total_electric_power[0], format_string="{:.3f}", display_units=pyo.units.MW, ) tag_group["bop_power"] = iutil.ModelTag( - doc="Total electric power for SOEC and auxilaries", + doc="Total electric power for SOEC and auxiliaries", expr=self.total_electric_power[0] - self.soec_ac_power[0], format_string="{:.3f}", display_units=pyo.units.MW, ) tag_group["total_electric_power_per_h2"] = iutil.ModelTag( - doc="Total electric power for SOEC and auxilaries per H2 produced", + doc="Total electric power for SOEC and auxiliaries per H2 produced", expr=self.total_electric_power_per_h2[0], format_string="{:.3f}", display_units=pyo.units.kWh / pyo.units.kg, diff --git a/idaes_examples/mod/properties/thermophysical_property_example.py b/idaes_examples/mod/properties/thermophysical_property_example.py index 7014d769..53b83821 100644 --- a/idaes_examples/mod/properties/thermophysical_property_example.py +++ b/idaes_examples/mod/properties/thermophysical_property_example.py @@ -196,18 +196,18 @@ def initialize(blk, state_args={}, state_vars_fixed=False, with 0D blocks. - False - states have not been fixed. The state block will deal with fixing/unfixing. - solver : str indicating whcih solver to use during + solver : str indicating which solver to use during initialization (default = None, use default solver) hold_state : flag indicating whether the initialization routine should unfix any state variables fixed during initialization (default=False). - - True - states varaibles are not unfixed, and + - True - states variables are not unfixed, and a dict of returned containing flags for which states were fixed during initialization. - False - state variables are unfixed after initialization by calling the - relase_state method + release_state method Returns: If hold_states is True, returns a dict containing flags for which states were fixed during initialization. diff --git a/idaes_examples/notebooks/active/power_gen/ngcc/data_pfds/st_baseline.svg b/idaes_examples/notebooks/active/power_gen/ngcc/data_pfds/st_baseline.svg index 076158e0..f92b54ec 100644 --- a/idaes_examples/notebooks/active/power_gen/ngcc/data_pfds/st_baseline.svg +++ b/idaes_examples/notebooks/active/power_gen/ngcc/data_pfds/st_baseline.svg @@ -192,7 +192,7 @@ t16 - - \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3039,7 +3039,7 @@ "metadata": {}, "outputs": [], "source": [ - "# Assert results approximatly agree with baseline reoprt\n", + "# Assert results approximately agree with baseline reoprt\n", "assert pyo.value(m.fs.net_power_mw[0]) == pytest.approx(646)\n", "assert pyo.value(m.fs.gross_power[0]) == pytest.approx(-690e6, rel=0.001)\n", "assert pyo.value(100 * m.fs.lhv_efficiency[0]) == pytest.approx(52.8, abs=0.1)\n", @@ -3216,4 +3216,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/active/power_gen/ngcc/ngcc_init.json.gz b/idaes_examples/notebooks/active/power_gen/ngcc/ngcc_init.json.gz index ecb2deefa6223cc831186da150fc07d60cb64d02..d27944abe35905d8ddacbc0a8496ee0881fad6cb 100644 GIT binary patch literal 352096 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

O#po z?{Y9Yc<{n;JhJ6uN%&(GiWM1#)~kcn=SMoSK~1-v)Hga_xU7~wWcBS!74!TZH0a&g zH~MN}9EpX;-XH%C-LrH26zeycvrBh#29IeNp2tF*8NF{`JwSnYHMh}v6w1JO5zU7Xys-% z=iz)xZe#8C+GC3w)5O}+#W)a8OTs;NzwF`XY6YYmy!*4k(ag6PUbzMW&Xy zO(Z^q4xSiW7h2GMD-5_sVXUG184m^A-!mPHFA{^MA20j}^GPmJZ%nFHeWM!a!R<~W zs0J?A4&i*qb4El}yLdVtRmClCpIlTr8s!C_Y5yg&t-KBe*IO$}+v!l!aYv~#w{&#N z1x|>^EIT+lwmxwe>O@Wf9`y~Ua&~T)`n)^340_td>CzzDLz-#{oSZ1=QLc$vrbFj~ zx`;kFgR~TWNr)Wj7`RTJnaHre*K6i8=7}xn{ywVUyiLgM(m0(R3{657MB;=P`czJcvUU@Sz*Wg1en@uIUQmS`V@(Z;KnJZn(}w=ufIL(Rzqn;E zW?%)NCioO7oR~3J<|9Dn7?Y3TE0}4sO0Z!#6B&fzkFjpFPH=MexbdDHu;?Ek8-#N+lplvUsMr|_H(Wn9YjgtqLAFUBMqW_Nlh0x$nzu&7rLv$=vS@Gu50 zhMOz!+ALiY-2aS4pVSFVE`t5Uv|TtHbZk)DGzfo);uk6<_*ncLm?UbR`1&|$JVbLM z7{nO|=T2uy*Rb~M6J7_N8x@R)CJ!}}z0fT6jyfLV4Bs9?&jci5Y|@_)rBYqm0TYb> z$sWTvbOgR*CWRVq$2e~4umfe8Snu~m;9e|b%L7g`Soey_mi9SFyt|B(XYPwwPzWp# zj51e1%SzLS0#X#xVRua#Pq~IQl)_n%t1p6DvXcPgxM2;6u_-f&htT=5F#s9g9Gz<) z{}_|Iso6?!2NBmn(4fHD7tz9&kkxC4Nfe$b5&@B%XX=jU2y-(BSj)Z)93E331hgfvt&`!vhno$WM)KEk)8_+3`nvd|FmK2kHfR>~BGzGt z>v%fDyxTQto~n8o_uS@Td?~L|(VZ~lh`g{ZiKY!Jq8>6?>ddGN7Xz^&Z#ivmC^~75 zzIi?7)=HQJ)};ZzW;auML4(?G`$M~10Fs)z)AP8s>uN5JDn7fi-p%fha8YpY#QuJh7v~g*Nmf>osWgikhPT$Eh1ORhjozzXAL!uLZT+l zY={xvXKX(W*vcgJ+5kiPhf(Ti{Ojz&V6(QShLxn0B$yG>NBoI`6w}pide9R-uxL(| zryC+mica#22Is)gSB;j2%jLt$BZ{jQlg3M@oyO?{uX{y)shmPHW7@0 zQu-`ci!bZl^eSs|ei&bKW^^p>EovChw7BvkIeW-^ev}>)^XIZfje(#f>K)N}hERo{ z7EJ@x^&x#hCJp^blbxTygPf>$wsZSJ6O1yGrpS?zqi$L zGIn#@XS}Slb$M)`iMn7^y7_9i$wJ4nVi&GyQx#WJzgPEhFXIgcm6qSBy}+Fkh@xwF zes6*_F;Z||oMzfSZsaKuSJEI2orH38>&NB~mqXi!ds?ZkSL=t~3Adgq07NSFUqlMw z6W$-Sn|yI9Oxdq0IiMQQiELe13!f_rR7~1`mN4B-!K17Ju;|Tyu;{=}KL(3tEA3c~ z6$VVs;`lD4Ep-i}j=ygQ8?>{lIu+^a1@F01e0v|$ld%?Wn;6-W^c@X1_Ox$0TUkBr z`tV^oOZT?7^;cBK<-x4?j%{RJyqPNpkE-a>9PC~A65mXdWPs<;o$+$R@8X2oS-;bfBE2ncCGDRP#%xd!<7 z^WrVts;_MfFs7IP0MHU-mqXy=z4>M&`6J)m*ERJ>a>dzJ?);0&k`1T!hfyX?NOA(- zcp`-|ufT@$9LeNNn6r52>t`cJ2{w4@1_6^M1!D9_$x_!(VL~jUFe7#_FA8eEsjJUvtP_jWW zi4*XxT+k~k&&we}1DK+S9i$x%yXFd5U8ji~fs3lw8o;$Lq7t(gx!V#MVN7u-d*g*4 zmv3ZAVdIp2DtmZYtC3)YU+clYFf!LFJsqc1!%lgVhh>?^D+f~)*jx$hG$v={>b?r! zGDSGzQD4HPB`^oyoJu|Ng zlAiF5Kj^V}Zbg`4&983kVw!;xQQWePUSbS8dV8B2DfZyqby=neZ1{Lwpww{;K75?g z^B^174Can&bjq3Qg%rc)!%jql0S= z?_MAm0pvG{FWdKEkW0+cUtd_dVIBJSWu%SCn1oTm+}$i)i%Py)AIQU)GU?JqFPS2a za*$$au)1P&p2Um99ArMC-kZ2`d{nb6Tz7oL5+UR2IgDM7%un1W)*!kd)=<1K0v-Dr z>Z_D{ll?1bxVegAGl>Ja@yl>M+p?9LgH-ku?7xAsaOv8QcF?YT(E8-MNn&Ofa%LN{^%rn@gZ7;HYJeojo_DcMU5@c zg((yFsE|pjr2xLm7H!|f8f8|Pbzs@P=!oC4;*1*OhB}bOq!)mcAk-e8B7F^{0HtZ2 z(|Be*_I*LmrVd4TLp=DLhY?EFN1WR!XZ;4GhKL!x6=Rd)`>Jc=b)J|PcHB_}942I6 zzXKmi-CJFg=fp`mSY7kei4*&4bxnjnsR<5##IhdZg%ckk$RK8!hAl8c%al*rU~ZR= zz|sMSC%~~LhRd$m31*sElv{+xEG#ZjM<)sP5vO*_S&A}3?Xn;bJsULGL(MD_lUAw3 z2RZu}_2``8UvQZpsx9czA>i$d%vHT0#rcu({^K^rs@rGLD|&R=@OE0}`vBt8S@9Cm zw%+%YLuIwL7|LOrQ*2?$!d%(uiJ1lcMe`_!&)Q7_eU z<&yaC=V6MOg)4;BW#|>zF=v{Y1@xSA>^6=o>d7L-rC>WFG(`6*6?V6$f1xnIGO?%n zfhT27Di~W*BSP!^>({$M23Zc`mMDA`eR~_yU;Q9F1}(FT>x}xcXf}lht|UChTo_bm zluVTPCIY{Sc9!TrGGT<09JiCJfZ=m`u+}FFn8=%H+u7jT4xpgp6Nxf2!81gvv=$Mfs{R@AmOAw3j)5v3(X$4;W1(i&O(7V_<5zO;Dd@=_I8h z=7+C+chiHk14x0zvT5=^=!Y(9)7>Y6RqY!<5iMOgSpjY;Vcc_O}mMcwEE1c z!9>i*Am6p}9quA^6CcxwV{y?JHK$4Ct%I$nzc;^3*1!nR`F_SfV#GwRyDjUTypP;h zUNvCE0LPzt{|De`&o}bF0LRw<0>?@Wa7;h&!vM$be*?!Ei$<55cndM`G}|aBzr{Db z2?jnBk?2Nk6YWNC(URY74vU4XN5cQXj>-(evi1Dg-#^#ypD6zBKf734M+CM`_Vzs6 z%#Wjdakp~h^XU@?$86Ux(hJ2S62*8e!O!j;l{G~i1e}!~^suO3Zk=Au`uPW3p$D{v zYA^84PJ?xIK1)7m^%B;55I8<-;^DjQ>vOcT>U`w1=buiwKU=%3nn+z-!(V9aaW`as z;;5O&3pzjT^(v)R+)zwTqQAhUkGqDz0||rjudKw7O64eSWcLXkV*< zpMT@&>i-@)rr#puAuRskoc%SL_IKOc>xpG6Q9nu4r9OtumIN^Lt4a+Fv`%_8J4@{g z;fW)c|D?^_^MA@cYF^hC^lV0sZ%4&8T6at2d*DSbV}Peyz0WI(_@%C=|3!|~067l) zKagXTE*d^S5<}+EHe(pz>ESWG$0JQKo`H~?{_e5aUB>%OrEu^~Nrms{k7f5LdW@T# z{Vvhl7fahV8si)uHVP}O-s<=ARtzfq-#52zm3zlE(i}V;SkFE4bIRTh_~U3(t1^lcmFdSxuvGvUv%nslPtivG~Sv_q=KUb(f6@8vgo4aazXbjqaMe( z#M8FiQmXC+-VG6Z#97+!{9}`&>#+c+YQ{VcSK*T)iO;0bc9rt zQjrFb-WU0#gvl@qlpExHs?CWD@M9FGmNtlGyQ1;DKokZVVjgJut$ zpjOKqMkN{p{OA&0q;3sws6^XeeY)k}{<0P&V7zG4n#8DEg_J)9arwG&p zn&^}p;SI^@bh1{|FY?(lQM5RBKYX>64N$@`gSCNmksQc}(^JO)hUUYDX548-F~ zN%+3jRs1Kz6DqBi>F<4<;z0J7@>Fy&`xi&4Rts2Q-s2|b6(24P_bFLb3T~jAouIC3 zk%2viqofC+_kTG`E8e!>o3fRveQ1yyVTDK98p~4e4W0~#QVzT*261a#Ko@g}K=rX> zlED+jc05-p$6dt|l!dW+aqw(6GSRAaJf ziLZU5b%@Pz5tyw$(zecKb)%kaJ#S91k36@V%z8bHp zW4C%!Z82`Vy9zwm1J7q1b|%(@)kwfAs)qgA9{C2l7!QYT)Q zF4=gZo3F^&x^7;4x?eb`d*40KqR_i)9)6gvL4Nm!qK{gpMTOzBwnWDguDc-zP)I0| znfuiWdBxp>QteRVNvfub)-O-*6d6w&1{@Z)SKyETxWHB9^O`eNl&N?>U|Ra zQOFGu_$+A`Qyd^Fh4Y;hNr$R8;0qzoaE7YmP0?`qc_1XRQ`7x z4NF02Fn&x<8$PHURd9VGnEZLU7pPorffv0Hv;-7gVNOJxw&yY_=mN*EU8tB|u1Iv! zSeOyV7`y`%%*a$G|>Q&-JOB>sB`%5l{OgUh{CnFp;w%qmm0jOX5(s><=BL+ z#JBoDv2=v$wO~H1-iM%j>hS&{bYiw0aSxKAzyFXfYwMwv6Y6~?N+5gDM$!P2y^8`W z64{t0C+UiwJ5<>KA1UD3&J|=fKIjDhgv-p|?TUI286ZyS!nsMr2rW&kzxDJu*rcRk z35=D_gsk);Nsy+~Yf$%J%ESRs;Tsc@&KSgxz>gjf*I?(ALHs~ieNoR{4yYF$u2-7Q zgsXbv&BT<=R(a$Y=n2z3)+mrO0-fGK6I`i-TA{jEFq*qP$WGNOqyaP7MqVpZqz79P ztWEIU=#1iN!LP!)RJio(kUnn)5q zSKEdz&JiY?jYo7os{$hr&HCbH%MQS2d9wW#dAHBgXxISHlpQ+nBU}{py~g%{z6D+x zr7t1ggMOs~Q=z5k5de(8pn2oQ>O0vPY0N4AyM^ z+GFkacFoNDt)fM`WY2nS;`-hv8>B3d)3p@V`1V4-@*1xtSBhm%O?dD#Z*(K%WQq32e7hO_(lVwtd=UbK+LNueTUw(RTXM~si z;q*JKIk`*R&N42K8iu7bf1?sU!Xxe3c^P4E+svqQINw+$IocV}c5-~YJv3ccojWx- zWM}4a=Y{V3-;{bt?)`2dNe6wF7jLb9dWLeW?mnS%%y#)AzEIrpv7Z=@8d!M=(XGC8 zl&ZZv?&@oMcGdP_=+7S(e?-4mL)$__>jEUPn&PeF9BDGHiTlGzrg_o%IlmUK8Ht&e zdGl*K9vbm{GFtR|pJRcpP7HK)3!nJ|ap|`Q=f998LJj_O`_BSXW}P4Z5V_mnr}s5o zjb_;=rX7NJa6G0kvu29>%_e6iz-va}Znc+QLHpzW&tHcM#|=d1clA_?b8FlU8?q%s zN1dKCaG0{@$Ukx0l((*9^2MA@F z^?3v_qB`Wa(5wNpf8b^EyUV&;UL8XeAJwp8xDP(8Hbk;$@no;&U0iJbWcH5JjbBP) zUZby)N?wYIsdyQKzOCh3l?&ggoW*MlRGpZI8$Z8zF(e_sDaovzrOKmuZ#UVf%fNpz zZgKlv`X>ajIVSYlL%J~vCMr8n332j zo?5>5qQvmiP@h7b@4&c*@b|`#FuvWxc;*ek!thgnikadwV@Kwf8Y@(<8G_den7<}G z)X1bd;xZ zKzhL4+Vxg@+LG|!r*M~7N9#4M$rUDipB z&S$CXT<&MMJ=vpS`5s^vHuuFl(KY`8(ZMNMCQ%J+9V|2+OPFG zX%ezVEb_3;^}72_(5#%|QEXnpCxzy})}NL-De8x1kwXBLN#rf2gS#Eh0do19Sfam; z=3=wV)!UaB%hfxy1{Y5G3xfiS58Edds&cc)VORobmtPOuN;)}XHVih`pGIw^*Cbt$ zNif->#q$N5vd9IGsYhu+ZL+NA0%{|px%k-}X-l9&M=cqTjklP*@}tDp!{CogLnHik z?N1JLlTBI{d7MS);NtU0aS5iMY`;y09t=A#9nyP?eM*GLgeg8XQqTz3tCh7zU-!<- zB6q%#8jGvO!B(2;Eyl(Rb-|4Rl$D#(0)V0H_#5l7?eBn2p=($4KfJ}v5oOmxDzQ<8o9nR_yjY~Ixc8Mu zMsE+OoRDShri0OpwXirNA3D@He_oPB?gdZ#gBF+jo>4|zI0h==M39ee`@{_LU?QtG)yYN6oJB%X{W)(G0w;-?qavO-H!M1`hunt z;l${oEP~R^^Aj8BYNTc8mxbGV)DlehK>WL|+s07+>aTUDn~f=pGp5Xta1#k8qoBwj zAC4y5h%E9UyjObRjHu!+2oTi_ur}B4x17cpbZvm`ehkCfI@l7%rWawh*JBlL-%`;C zUla^{f>&DHh0F4DEXP~y37S&tfSwqJQ+!UJ|Qo`ly#D(eCY+cZUx!mZ?TRk1W%C@yqvkq?!Xhoc^$avu|chg zDbjL5N*t>HOV?8z1bOYddEQ%=Q>m+J0Jl4fvcLFgx*MWokVeJ=Jhg(8S+7@( z`%fpAX~;BFyZE1FKfbt?Cr95C1J{+R`4O;mz@HlP<8<N{v|p$bfd zmxeb#wZ-KF;|-LgT|7|d0@>eJ~Z zz3R_E7~eq((3}u=*^>7}knsw9c?{s5P}m1n09%AY&z{qPP57f5VDqvrN5luPY}H)^ zAGEQ1BA6t`jATRIlPx!o!zwp<3zNNlb8hypCq?)Xd-y2`^oInUS^fs~3Aw=CrbOPS!UmnD@oeDBlC8M` z1PDmhs@>pi#G3|G3Z=MZhIGx1Bvc@`xJj~1&5c2C(H!(U9Jxa#)tVav-cS>CBlcs! zBUhvFf;wn$MJLLlbD9n&Oy&5Ga#@l$Oq&BK69t6sN z8mz1stuMh;@9i0%q%}ZH-x2cJIzB1hTtRhlq((eG38OlQ#Ahvk++l-0>+`wu@n;%n zsQDYk=FR6ya53Ez2})Itg`v0RKk@q9K0U1-bjuGd5r{*%;l2D>q8Oi4sRVzRrKBPe z99i&0o(&^CRKGE2XSbBo;w*|A0~qmy9mmUE3#ZZlSS?FsJ1d%IXz|v z^Rt~ioqQD&FR^Cln`N3WfC*~(dNsMqw^umDm`~Tk?m93qvunCn>gP8oY3!OB4AbA*gaKCabOYqD%PD}1wsUf|R4HS9Q#o?4qp zQ}K1ToTz;n64*K9?sJ`x~B*y#EU$n-5`F(@Dw5S2-d z&H*u*E+3Bh3r}qBP0e@Q+s>u&f^ZvoiGCH-3uswA9(|07$&~(YOr~KCwue_Jq)F_(D1Mi#ts!yEgwE?c|r2RSHI9}w*C{434c7x_!>F#6@ws0 z{$~VP0uUrqi6Pt9{{=zP$B)V#eOQp3z4G1z^CIO)&s=BaJRr=*P??0rT1DhgGXnc> zIOUrDDtmJl>$v|G8%Ry7ytB;Dh#>Qi{QF3dxHT#E~r9Xix-hSveGNm#3 z-w;hs6SGib;z{9c%4x(q04e)U0i=Zap?*zkA5@zbk0)>pUPuI%p3?f_1j7cNf}A;=vbY>jmW*)1HW(Qrc&sF4FK`TT zvITFg4}?NG2h|N9OJ3LS$t(DJeINbaSU;w}wLW719#fQb*whZjk`E%gG$sBpJ$v&L zUXduPVzV`9eM+0bW-o7GcRJ}2AJXQhE?UO!{v*j{yovwl%6)AvqbQ~$?vqf1z%4;P z(rC7Z>QJnbbu%Z{YG<{PeSVRo$rN;&4cmUiF&IDJ|y<69E}V z6M<5jG)WF#s68$P1ISKMg3nMh3;U3%u}}>~+)C51)i+WY?GbpRXFIiUyFgxzMf)pp zMmtV%YMNwGGDI|7@!oKnq$RpO7*F+#jpgAnYX@${x*2`|sR{n~ef|(& zGcYtQD2fsFwf70NJ58}#xgsCBqQJ}XN|Rg#C^Wnhd*+*<-+^TfRMrKnn24s@(dbWx1(KtyVn*-g4MNlD$?tVd5o#;MgZ!5N96!COJi6~3^jAX1Bq;3PfD!*5kMdg5rxNrtGIke!ogUS{3o2fBcq&tVqmCUP-?C&(kQgBl( zS%T4a$XbE1*`79WDnm{{Fc;(6GA5X-a+%G~w3a+VVm*gZS_96>4zYV+b820k6c|}Q zNm8^AzSK$0@&NNNRw0nzqh)l4?ZWfzEwsrCH&wsutBGkYb?24 z-{oKX8_;z)uN%R4Gr=KR!GI3uAj1>7OO*OPlw8M&^wVJRtY0@>h^azYjk$X6|5wdU*SQfBsNL zsBzLNtMT)uRVUO8*++7Zp+&tDQbV8@Za7ynLa)@fH`s6Lk;%)o(ZA;Kx>aVK1`!VF863rA zzdXgw^*F^H7mtNK9f)A)So&OvRYM$)BIFSdKIFMoc58_Ew)exQPRh6lJkA$H#180o zO^#lklv-9!bT2o(IfT?0N~*_o9h2Ztk_kb{E=1zmIK{#U&-vSPf>>pM52oi@9wx)r zKC%n!B2L;m_X5g)+$tMJ!2&yVvHI6BN%p|bch_vWG0DGjMiOHzOb_1Rh_;{S!ZU{? zC#^Dw4+;-rAwm)V1jAfIfJI#B2o?X(5jxV{Dnp~*;gAQ2F2rA}As+IEE&wpP{WtsX zSEOdGG@KGa5){aX`?&iytvTc${enUj3!z}Xa*6fzqW&3zvrJY!4iEB3Sakqnu zf&f_@@?i-93P6YF-pWc}??q;_NcJ1x1fx#Z7v);`ZczXh?>_Ma$K&f`t&U~=$2K}-;Ir`-c!P^FB%nu;i3Qfm3W|1Pe=IQDI7Yqp~Y4eqcr6K&YcZ`&}%ls^PO(TqAZ?tdMbuVF}{(!SF;A6n?8lKNVcx2lT)cnxg z*C1yJkFQz1a%*LZ2poW>a9#^lqzI zqgdQzGAuRaAs3bF4>77~`!|avzeiu3u|FQttZ;M$rpnq67cJDQGXd{E&T$Y&M|9eF z&sf#oAw1)|gTKOK^zw9__qWi+BjVnH5-YEDwG#!YzXE&d+dpZu_x#oA+|u42dQ?UF z{8BJ-j@EU_uy4P#j+P?0wlEEl#d~pvfW^-T zCtV+oVm=h}!VG2#?XXr@>oXD}txuB6vcXK}K4nJBTkH~b$%)MRN7MgCr^uWpMUhdL zjNHD|;;*mK>{c5kW+VWde${vPZ$}KA=QSiF-T{JhicbH33eqI~PmpGB;oXS;1Ziqv zf;6fB9i&;CTkQ(b^xpT*J9KU&$nnee{o?=r+$Nx?O(L`8e4Xwj#s3+fWYyJY(vO)3 zBEmcgC11Cg;M$6IP)Bv`Vq+b@J85DUTKZodkW*a$@e9Rc{6gF_kS>fZi2Udd(1h!> zWFE;1$^cV|jgul_B`|ih6Fed^0v-?$1J;2x2U6Mek}cdq6JsO&7H5#V-~VG568gt3 z)ED?TVZIsIg|H-js$O91LhFGIZ?A~dn98v=1Pbzi>4WT;@y=geb%8rfDGZoxaI!f* zfmwfM3B_k)d%um1AeBEPBJ(`BVJ|So5LytNx#*m57l^W|wVjses(;C^&b7hO>EpT> zH;n-tmxx)$ABgY{x;3&T=eX7?&^?P{?P zT$A}Xo*c+NPfk)=IVjtJLQ{(SW?+m;O7LE4<_D_4o)snzwftq@mPz}GV%Pzm@a-JV zfWd}f$o~lf`|Hw5hTIP)xQiM1`hs^j<+;Y>b^myUP?~??D2RDjw-kVy;>Vsow%>1fSlH`&*F4*APKvmXT- z{6f*2&zRf3iY<$h!v|&G`lIJX+SA0yj4r+xm(r9*<5hnTBklkb58XcmXp#EE z<8~nxFcH_o)Q1YLMXA8JRhL?ox}42!y-|nC`-smsWoHBiK>t4$q44ixHdz3NE;{ZQ zj--hV)*3B}{tJhW*?_Pxt)fB&-~_XAeaKXKLn_?@-5M=;01^6=R0wB8Nf1^_^T zqd?5KV+JdYd26%3b-XV~;ioki7dgjt;fA2}C#P``^#IP) z*!~mB$-_`38UJ%`a zBGGY1ba*v+#Q#{-V9`2zuXL>lVSDh_q{IT0={En#Ns*NrZNJl;4&I!OATi52G{>BiRs|AsP>KhS{L3 zp3ySAq2>y>*<7yy1IFsvDw78MCMw>-(y#o5rK!Expg#-LB>kood!h{J`yx_mIzOYU zl!2o~ulA=Uy6FTgqWC&N=qffx_$qcx_ckJ~4t4#8_^S-18rC>eJGZz~GBCO9pn7u$ z-YAiznJW+j1gg&!i%D>B{S5VeO;`(WdH9x^8B$49Jgcji}^KPh@V}ULlv?PuZ(`{+vAwxh+ z{}fM!4!2~Z`s)aa=$9AH`^$!!;=Rm+N3%iGmErtLZ(jFP8p;b$#=TyRyp^d0mv4O_ zPc{15vzwVU>w>DHs* z*Q-&$L7dt4f=iMSI=?CUjO?|CYu7!4i~wfH!dJaDBdo;VxbKhC|h(R=3uV zXP$daK22V2gV#>C5xeZ_#2;S##}L$bB=Obk)4t7}3Y9;N?pUqE9+ajpd+02ttK@%( z-*uj|pOSA1HFUn~ipbVF!T8kU{t}^0bz4iaRk^?q)bepJz7P0;k}-ZDQu<_kvg!LY zBm^s_lm=_22D}dn0(UjI-Ov69VebJB$M?1YBZyw2_gBSFrtL(&E- z;_E5Dr{)cF9wz~X`m#(~a{is~6)j=)`yHPD#huLrBTAn3vGkU66*QF+>X5>e!Mu{u zwM)>+^e@n<8 zWYcv%${^6Pfi`* z=G3M#`k$P7qHLc<(b#f*tvGVW2nK=m?wdVqL3Ww5_2M; z0CTs12T@+KgmF;AFO&3#ZtnV zgb$VPQ3;iE;0{T~jM^gJCrR)}=1KBLI)UlFu=_B$;2tdoXWHi6%#}*N$@_H&4Edur zXbwZhHQ1{R&y(+(BuFF$AeCTwej%WFf%#B}J!X3dXA%S~uX(VQaZ{zu4pGCsbYV7f)H<082Bx51b#ML9 zc#DjK4HD$Ecdqb(aX_Hz@*~;Od@ylhWD;eqy7j_63K=KyS80HPP6MFn81<4wSr`UW zpRI!{wz&1*YvtoWzI8$iad8rw=wt(1W%%KBQTL=w=0wjro5>#T| z<|shM(fdba+_FQA&vVQY@s;P}vW!t%!I=<;>ibbC69(a=cE#X+ATD{FH_(l?M_S1f zBXl2Mvfs>SjzmGBMiQQMq zQzs%(hBf3>dH1fV6d5V!X^be3$MN&OdM*?F$)6m!0>&Y?_pPB9qf_1XtzmToQbl$M z`ii~W!u;ASxg9iz)6C_`gV9GLbxE@$uoascxvt;BvRz6UIyrhCH=%q(ygDdhO)<10 zh&pcs{!Dcxb*ga*0V^7^-csjb1n5e(#gtal-vmuXK8An^7j2Fz;CmB1Ndz| zFit1*551S-3F>Q)_;td>!)@&*=3o0@_4e_bxqmY21(mkT0qF&|w~xM^X#qPaMf}jp zE&Ub>h0C%!Xut_^-dd0)aFOJM(@hL&K1yG;GOG%Tyr;l@eBCySp7;h;EsVxO@#fr}W@iuJ%$O95m z^Y5VbeE;OdtAmplbyFDdmxeHGI%Wl5s)UqM`_SQewq50f6sOTtR?*#5*6MV8l!!At zk;CUZEip>6(fD#WhgeV3^SRv?41RUISNKu)*#yYPRm_P}dus)WpWO-jples^l4gYnB~ginb`M;;1xkuTtbWK|vCzWp>2n_K$E+k~7S_ao`z|2^@nx(4 zs^7T}C-?Mu&rWE&B0; zysf)HPalq4a%}{?&d9_IfL*A`=hgkzzaiyqr52c}MVzydF3)*hqF~^#1I9 zte$@#Wk>3x7offi=fb-L=x|G&xb}f6iT9DRKf;s`KB(cmjCWm5`HZ?yJf1tPsn~ zA1CMWAd^cT^-*8h%P;mR{T!C5b>Gqkd(rcQoQ))Lv?~jB z2oRBH9c*O9E2ob-As;ZlczZ@<=1edApy{^2{muew1Eu&6WK`bpi}QH$ z*wgzg=gY=Qp}@-d*v6iOg8pqX-RFyP8BD^T0_fOyO}0^EdcUkB*S^HXyCXIisTl721zQu26X-zZTU&yrJyZW!0TV+mxqN^Zs zJN_MKpXEWoQU6Z3gA&KeTHZgvQT{}3`^EnNj^Bja{|QziZUW#~fCi2RJfG&WU+F$< zrc%jDNUBcbFIeVXdzM=mW|I)I5Cvr;@>aPPK&-ilrHUg9ZKR(;hv<(bc@Qg93d8I2Q^WmYU!8m^S5XE&Lm8^$8Zx>RFN+_~x z)c6?Rsqww~&bOw_*^bLWFXNgF`rG06D11JN0o${VOYOi12=AIHpEOyAD;^QsPwHuB z-ZihLWGcn5aQz)h#9Q$}g3R_SE0IyqFLyXqUQ>I0zmEf1^P-rqRjj{drIO_uyr7F` zYEYb^-#`%t1JOqS7jvl)$eQ5&Z~D7OIIB4R58~PNa$o7zw`=_NrP%fVDh3C`Ymh&r zW&9E=N^C+=sTkOnSo;0?LF;Pm$S8-H>eP>kJC(eJ4>jAi;=lREE$da)Q+ro1Ky|W1;@bSD$`S}H}^m~3_ zc_e5zrYxyU2PQ}2AkAqCCWCoCKSxwvg0?a`F~0@QTk7;>>y#MSLUg`0$ERgbJQLiy zzz`ZZRgxx5!m{LgO9d?kB0IRnzh;Vmh!;fXj9?`7+Cr`hL z>o~y*@e_}t2Q#@|-i9f<7>)~U@w}`1zI}r9OU6GQ49Y`e6no z!g{bS{zZ*3JIJW@Ru+o*LF*{%Ubjfli9of!%&+EG22hS2mAsBKK(oDG40JzuGEi*u zxb)?Aqi&AV@xYiv)l}2m=I0EsNbcImcit2 z^?oJkEqjbLB&PaVD8Y8ZrHzNq9n|#62wb5x6H$kKA@R>1#^r${IJW$iq@%$AyLSxw zhfSCuhGs0e40l&@+bM;iz(Ck2EayHkvxFuG9AT45B^lJMV;N#=Jcwfdv4z)Fo`5Xl z*}yG}`$~NK9aj>v%m_A5%PiH)2{#_%=kf57PP_@qg)@OPM2$XcZyB!tOEO{|R2eWc z!tT@ndY8XuMrCL-BN86?#I5)Z7(u4(gr?#790BygEffW6-#movVl&I?@W5-W;R~KV zhwP!Y6ZZ}K=J=sYZnaAZNVCFAOR^+I)P3V>Mf*Mb+r z;Hxnp23Y~Dh$xwbwLoE_WjLl%E0yDIa6w{$O&K{oi*oP#EbC zpe$BrgNy%pbBy0n0tQX)u(hGB@f_eRFd+pwZ~)$A_ksCQxx}TNQO#x0a+&~x08s*h zjXHq+l5qo6NCNJfI+R+d`&*-}+}Ubi$=+7P1!_RehX%S_MlI2)hvY=g@}e!a*92T} z@zD6K_8sg*WO_$;4HdY5z|Y9MGYOgA9*%McK2v{E51=j)oxfEE59n7BSuOR|0H#uv ztLL@gO#TXimVvjyeekwOY*9X?TEU!cJ0Y_!Xwf$Jjd+I#d^_0JsVv$o7h;d!0gtN; zw4+hMqa<_@@oCMk3~MQ1$J4+;!Yf*}eQp_89+jVFM{x1X>t!WsBNRlKgm0&CzcsiU zp-ItOR?()L0xAmmSt~PXz+Ad0jJG)&O4gK>%b=Feb|P(Se;S$78D<1D+LM0%Id#i| zDel9XSVhg1mNF{nljOa4?hEtny(;|T@il(hin=3OG!z|(+jiWe%$V%k1wVD54Rw|Q zFORjKfwj@_W&R;{+35Fix^Ihpol%oGFg4PFk-HHpI{SYsrKph=1#HmFNs){DyAhrB zpG~r!08XdN9}wyWIRT8$Wwj*Zld|Y%0pK?PFevB$9|oP#I{lv+^XlIe|55`X(P|*q zC+X2nmPP-{n0tUi;_(U}#C}E{4_iMvpiyA#p5a54?s?q)95C0huT6Myw!FC5B=0uX z6?cD8sxtNj&!fzQ`s))e(PbKj|2P`W==w2C{ne$b16}$%O+r{h|I*Vxa-iD(B?npq zav&=+%dM#XPmlX0f8lE3zIn^=GfpVW?U&qFnN4QbuWlm2Yu-aiLiY?y`nodz+H4{o z&uz#kYwHbtFDpAZ9o#D&Ke$N-0BADG{f_@hL#AZTq+F1Pvx&v=EB2p(9~&b80_6k$ zE!GqD6T!an3RHB20bzRmMpm(MCK`k?z1ZLx=Jp+UL;Sp|DAyMGdAawKeR)h+-!1b8 zEqy=WeR~^&U-kkX)#s#*W}fKPPi0^S5%A)9rL!Cy{fEz4m)ttPJN6juYb2hW<^_B< zcb7=c{=_gNTbv&?9cpm(I*ClrbzBlU3#BbSyT8UfS(HA1|Kt7v21`T1VVhFTH_IkM zSIjhId*izf`piE8Om5lB0H$DTSpCkw1DNkG1DM2hmA@vVP0YWi{LBzFh+K?$Y;rd{ zuJz&K@#(^slkP8LMP)jhqrrVD-!tzh_t)P!^YVN$W4_1kCbXJ2YUo$;Q?ld9+dmeY zO2A@MU3ZO5MEdtQ9eK-lZ6=$FjQt2B|GkLkCYASnQ|*DlrnC~te+@R*|7)=MAz6j; zKL(o}z+iLzUk01*uX+D5*u<;(Wt8wg3^t2dm5#r0oVX1P&%i5zG<_8KYhLMJOQ@^o zDOb{TQ-Osid+r-0YQ`Z+_{`j1;L6foFIQT7XaYz~;Y1Zu+AvXDL=XKed0)Z=n+>pl zW-V6&7SQ$})@BQ&>FRA5a3+t#t^K#PND|+fr#S1oO^Fk1;X@cUkoGVX^gDs0*vUI^ zxK0Ps_zF7&Z{NNP-Clq)EF3G_3A-J1%sSF>n&%R2`bbg{t{ z@LSY#3DPF+-3L}E*ULNKKNP|S3v8B|{5}f4^3LRx3ksQwl_bIP&dgc@D`20=cNZ2e z?Tp{H#f9Mvj_CPEpvs{J3+KAj69jaSDcK=RQKSAr#YgPYD5yX>m1s!!0EI2WGzrfh z=@?AsJeV+X@2{rdsi#~&dxhZ;FKQ!@ia0A_tIe@nl4Ug*}xM-JQt{1X&an_zZlvgd|tD@ zhf;#rBgtXNMG07jnOwM&!C>JFg#nC7JmsBR?6*j?o=@EKVPlO~yp@cMYjegZybVH_ z$++HuxhSY1?Pd_G9RkQbFu}J--MxV{C}koMZD|DVmiiw{qvz<3PsZ2m5Vm2SMLi$Y zYn93 zxOyXPth?@*T<=`8|MgQ@};8tJ~*I&+g}SH z#EVHEJH!E>C{bSOBW#*lvju)eTm(6?x9hp#k@UHOXEI5~eC;OIBNWQP)C? z>GL;fB2m{uhD0WZc_G3+N%t~?!Kxl*kxz08t<1s=Jtg>_6YuI$V5cRC&!7@KvL4w$ zF5{XRhPsya#|Rhf=K$G|=Y6W4Jar4M!MSms=(vS9TAqvKl!83NBF*D|h2;F>fouB; zS;IL&;iND{;pF6)oI<^8rf~H-Wdv%J{UHx!ENayHArE65YBcyMQEtf9C}p@)#X})_ zMmwN!se^PHz|5ZS1XTPuwJf*G2X(q(yTH!Kg^S6qP|yiKx1zmMjgJ@Nl1U{J6t3;5 z51ST%*ptM=3v!Xk;HMj0d^GN%57SJh5)JFtz6M(9R5wDd4v2ylFuhG45xVNd+iGI~ z>l1`nVUyB2fRFu6J*@6yC#U?AdhoCCE2~8tTLNfh?#E&{zT@(A|aSSbAq% z;4o#Embe!NUSRaiS#-w0vOUGb$l|7OV)gE9nG zW@hcLF119HJNiIFgmrsSEI9>8(h=9OmGi)cD<#Y7$tm>B(T{^(A;%YF{lk2N^E z^s^&+UyL2o&JMs(+{%gSMi^;43Z)2Fu<;qjjzytf!AC@VYGg?5>}=RrlHzQ6p18^M z^-&)KKO{5uzP>I^d8B!a0{pY-QoT|t(fgdlUQUYVt37$w=(bcv*ivwlsRVm;Uu{I7 zqHy}|f2WA7;JoEKeS+EbMQN=Aq5q>-BzZvebp={YYE1Y+3E` zBeB{G@6BJ|Ic?v%=MRNHedLcS+{>D2m6tpF9W`-W9X)q_s=n&QzD(SDqbKw0mYm(s z{c+Kt&d~0#=7gJH8b_L3M;4bmBTI2xk?WEl>~p}E4kMLKv=vfQ{ET;iMPaP@mD=rR z8}ABYGm?v*yvMJsxNtk@_^HjoVp1^_8{=s6G*%+jVcO>`)5aF-m*2q)>aAdJY1zte z+^H8E;gdN5(4+d*i-WDBv&AttBiW&2ng{)a7J+n+hkUl3ZrEW&7q>4TjvSpYEPi?P z+w0(I7W3|x{O{7bQMIOYw`-(R+bh>kOjDYZe%%(bc|Sh=_Cq%LfpGrYBX2fqiEcK# zrG}clMUT%uW{pj>MyM)62@ewJzv!!BiCQQm|ZWb8!u$2R%D*OZN1Bb7emnD z6gcZp<4LrC(-W_6aMxfvW~@o53i4$xYG?F1h>>LL4d@CGn=Ea8(04{HvUW_Ok0E_f`|RpheF7fIh=Gx$ zPKn157pQe;N4hXKj(AvuA8a8YMqUMR<0VUP)!|5H=ZL`a4A3q-W}aB zGd|x3wLpg#!S+|rW8|_6c-MVGNhwpdKtJ7PSOMRE7FSfs=hf=m1%7upPw0mLnw7G6B8mSa|*fxm@79#34&2K7EzR`N+le zlnsc?jC^85&YOBTEWL6|%#uS5-Ytl4yBvo5@<^Mn3+(w1-x6GA_x@uktF8DeR}Hr> z?zvSVE3rr}_~*ry;N7y$it}6e?L;EFVAN1Lo|HfPjVZ?96vS+`M?m<>xq)FaLI&jl zNTTPSXKZHhZVt#Esm~fqI+z0-+a{bM=E-#^He~%h);*#-66A$NyzB2x6(bN4;EP}| zEOefaXA0*5!4LzYawG)^hVUj9gC%=giMS5v4-FKi!FrX9z_PePYn%W+v2eGU{x+P4 zzd3yB7XP|($iXVCy$?DvFWX2CgY(cgLnJkfCL?iwO?e(MYoj}C>eX*gMkWrud?iD1 zn<52a{rv&=ks5vgZ2KBF)|fPOW{o1Kczx@pX@*XkyNzXl94|pzYvU z5~ilLlZ>zy_^uRHi*25b(v1myVp_>=0OtWuq7rk@_PI5g!UQfor`yHC#qMgVqe-Md zcF7rniZii@m^OWH(N)0mW{mGRo9Gp{#W&u9ZwP(IZRnk6CUnUNe~pF%s3X$H+%eCG z;dBRX0T5_fF*&qnwPDN2C{3RJ)Ei#1*+8-bN^ST)*j2Uj)$X==8Wm1bRRw)ee-9YE zxIYI^qH%-pE;S~47W1#&sRsthT{gah!WN!~!>+=Po62xy8G^w+34^W-)+i>XsD-cy zvu?{l@AvoIw#3U~Z!S{BNZzW+KdXB)_w)NLZAG&G}+iO^khUtAC`yh z{R|+ZJhb^OSZsZKogIiG2tDwE@FpA6Ha{K;tponx9gc`3UF{nqEZBBbxGb33Q>yS# zy4;b|SE_^#r5>URPYd-veFf!Qh~&I{;2Abl7E^9LrJM)BVaX*QTy3vO=1o3kdnX-Z zEG0Ae!ue?;ZTZ7Pyv3+4)6h-|q613M@1GeF+-<7T_B__niMBifNqPnI;s#k#cvaLe zvVl&-st3NZD7)GoR$*QO#<(K?7~`6>nI7qCiSYyz#OJ=l?JAquLz3Y_pVfZ9 zhkRR`PT4R$AC#{gV=UPXPo(hqP8kE-j@mp!UEABiF4%{4Yp}XZ5foIL%1SoKx5UAZ z+Z|(!>)9R(QN~uSNz6ZKlBTzraIsywz#h6N4pr3K=F@G(M1k#p2_4A=2RkcPQ z9|2^E>uY@jcDB1E2jYRI2*MxPceH}QeuD_S^X$NN7Yu&fsSmC>>q8nbQgCAM>&vC) zyE5Q_)SuBVxe4G%Tu#?50WGHX8v4v1!rHKzZw!K~q?Jk~7JgN*jTTZVxJqH+@+Nr8UBa4Y0-q|JNNP@)(4w7%NH+b`m1%ZD*t zC@FNE-kS=R=-%^dGu^;2P>V?s_@w-r=YAroR6)cx`zvDFay$##C~`+itu6h`({%p) za2un0>(*&~1FzG8*-=K#DLLs1$6e;?ZBv0bce*%tbLRZ*7mVM8CrXKCBV2nEjJytKVhOkKmVmsZoWWhQ zxyG}T#WDFxQ>1*;;o$wVr~8laqy7syi=uB}1bDfOIy6aE%x%4M=Fcj82ry?)(ek=9 z+PA$Q?c4qba2Cf>O>{kiGt|F2%kwfyhl`4&CwmQv?YK`I&-O$}>`yr^`V_@Z4N0pq zZ@u;w8V$x-_wcj$pd)ZGLs}t!;kDy7cJXWB_epp0T#;Y)o>0Se@Gl#eQ%H`uh{$SN z>=UCrbWYyCdB!z+^K0d3$YGOOujq^9NcFcO1&*EqA(o%LE#|x%d%Oi@*BcTwkohM= z5>-hpA>`H4aeR=gs#Bx`c319KjO0`<+4sSVz3FYycysR$-u$-S&1IEkXSdS5vzC&X zmX3EDib$=!QhiRwpZtu-T$qLecgdQ)e8sw4M+7@1FseeX_lHK`#@Uz7jR1**oZ`OB zZoPy0b?kNn1u5dV6R$^c?N1#@6dEJ_CRe{Wd_rux39<^+T6`~*T&jNh^oI+9k8$ao zc+K6jSB9%%v>Q2=CUbcvz8|D5dfkzjC;8InjBU^2@mOTK!{KkfS!O_(F{iZKE1Ekf zXR{wCUgp@RKn0;C7ob;P9dPa(bn~uf`6@emfFyVrZuYU{-p(JmSupD5!g*i5`0m!v zva$YcQPNAxqdC_{&SfxPO~B8r(gFp9gc^@mH}_lW*Nnefc!v9FG%7u5CD|NX{N=5e zaTg!wThP38Y53Uuz^1+OVUnoVVKc78I&ty(H{xQ!mhoxc{+-`?kAf)smN$X-rW^3y zoKpO(`!&F~Vb0aQHd%vg$^K+%b?PKMi?>UDKb<$=%f*t=7)v&B>|Oqd(flcj+V~7v z%#D+AoBhrup%c+F7jNL%?l5k1jL3RobJ2nKE_<&*j6bC4P+1GP zM%Gh4K?iALV$DP#R-wI1A=4Q$k_7#d&~aC|xj?u68?b~{FzhzR?2q&&6jw0(BMA}$ zlAs&2r0rTDB}#D6c`FHeHcrxdXbJ}-1U}_vnMTfDXqec!X2Quy`gYo?>twOa@Qp zvtuGx>0)dWHJ`Ymkm3FDQBK4^7JP6pAk{u}aQ@zJ8I3GejqmMUjyqP1$Mi|i*uRP( zDvhkJBr3(w@ZoD*2>Qpc`Qe8h++0S6#TwV9ay3HK;)au;I`f{PFSUu1$DOcpxCcZX za|?7S4mlODt^-ZWIlWaE83z|4y~FYfqvoX?=wPGqJq2Ism>A^3#OJ&+TM#szsjar) zffHUDS@v)vj1WD{7$Z(Zx?SNZuHMn02fAr@f(vYr@T^M;bblko=71ZgQCxwp=U-K6 z5_Ay6Nk~XdZPnLmdXA;Y(D+js)ZZ>vnKTIs44}g6O&E7d6lcRbd}hT>%L7KKr{n1> z=wUm)mc-Ut(|3ZCbNIZMQZWpVvJKTljSL6~%syy>5s>p?in3v7O<11Cd{x!yFrNPARqsQF|KHlCWqLN-fBHU~_ zwDkCf29vcNr~!(otH*ERm;F2}D5*3qxy`HP(hrKZWl_fxGI6-0ghJMcXX9np7y( zGpgMd@6LnUX9x)y(1ZwUu0_P$mlzw}gtsc!kQ9?eDhw8gL-|W;B-E>GBE^-)f} z=vy`qUh|>QFINk9Y+x(t{bo}4iNT+%Z1JNH&LZ(GuNpnVlRH zEppbrX@wgRl(E~TQ0NY?1{pX?Rv=Pm_U_=Hq{M8HjvFybcG-r@Mej1uE5Xz= z&YS|Z07f0nr zQGJWdgS{sz!xl$(A*fnAfl6{Hit%lFL}{)9Ona-bgNP6(82Ms;4BJ|)2dG>$SVKdQ zFNiinf!tghyieYlXNB1N%q``Vx)I%CqX2sVx5ObjH*Pb-?THd}RFZy`l(`vI^w`M5}dHxm0TK0#uzRJ`?)5YvDa5;TROX~5Z|8P(48khe#Z zpgDYqSC6bmlfPMS3Ktiy5qj{w&om+BwvWl{bX-&t!R5;%ku4Y1*D7?9X(sbPDuHiwn*m+L~@qH^gwAKk*T!>1(>3S<@Pgr8OLY1aC~=I4K}kN(3kg` z_JrGV^lE%zAVnpGzLgw>T#sah&_T}LxQY|?Xm;_pGQF{#KZ{Z3PLI%5BcS?>Cz&3o zd8J2_<_=Gk2R8gO9%?jE_kAH_qskpz)@x}C>x2l_RTK5APAOZS8#^BN^K|FJ%B+|G$YugYJ zGorrut!l~lfp6XRcuTWAOXX)9$9h^a6Gi|pu`7JFx-+ce2d3u)I*Hi|iCdG7;-r2O zw`kJ&r;ww#7Kw))$^gQQ`wzlYfT5aIj#+nZcT6rJ;QS3arx{qV8(sy)U?z^-a_u6ZeNjhb$&Y5 z+p2TX8b0)kCFf~IpYLR=72M*D01NK+w@xcf3~JJl!R?ISXPww8 zlPSr~UmDg(!`dr zM`GI7BDTXAG=US#!f4t%*2Sc?K+S~=GZq#2)AL>-GR4ocXHAw{gDryl zn!Gc;CqkqLGlR$!k>0%72dy$^eiv_^zXxh_@;_?x<4)1Mk=2xSJCDDPnxD~*nm6s` z@0_E6qvoSaYxkR~{hz1ygkpx*;l*0{BD`y}@_{&rnynd%@ey`66@9hnWr4y`Yw2L1 zg3;`RhJ-AD)`&=_nR9S%+$381gN>*WnI-Qf19I<&Y61%SYLMpYDRr=l`)gGco0hdC zpZM!Lh6=%w{8*Em_WRFSRQ1&u{IOq{kRy3Z@&|$VN4_C9?wbEr?%TTDI79PRzQ}Vm zY((;WBrg6PeKmZ!u7o@su*!$45|tY#;-5JmMKf*?R?ML76b$Xt&`M4o0e|9p`f8v5 zcs-}*#%W%2*T>OeyzS&04CPOzk__wCu~5=iQ>kVLIk@9;ytNWe1$^TXeZ`4%Fo$Ur zmfBXEdr@v&nXQWMLZWC*ZXCb=>l>btLBY`bTTZ~zC>MxalB}@7fkRqxU$DJbS6~u9 zbPiM+S)nPQ*=muc@ny$Bi~~c>@Rf_ND0I^vlOzYHp@49$#6bs>Q4Z&!9{ISz(501; z+93J(NKfDXmF$fijQ9EqOtDBY`FW?Org6D(VL&1}C{#_S8$&f-mGu64^(a~dq`(Bp zq!JEN)26^iAWi>N93dO8N*7~$6O~Q&X+TI9tZBjxY<$K!mGryI>{SNl$$wKSFqLaG zwu*agx_R!gndx_%{go;NLsN0COGq_*T24}WlN%@4^Px?JVv=1&zq^Y-u|(;1doWb> z2hD{lHubnLNTnrO;UI`CjvZ{l)x;IT5{nX3U<#qZn!bYg_fKCO6>!3_cRo_K z(>+(G9Ir~Oe7QK6=R*qi0-TM2pj>nbTY;&+Y(mthB6|>+^C>VH0f*;PNH!I?A@E5a znUH{vjP(OUY{UZ)%Di9mLL(dO5FN@CFaYO*PO1gv&148UYC@w%9V-?|h%>n=LVBVk z=y4Do)MgUX4`4$0&lf1~i8;RH{cIqw;zVX|z$_H(1irmopDp0smd87veoP_xJ*DjX z$9!Z?I;Ab=uiT1H-HMmKC;+J{o_$58Tm2PzWk_aVI2_T!@*RMc_LS5L{ zqeuG@pd8Pd(Kn6Dfye>k%_zXn92ha{q~^L}YiFPmMeoK2 zBAaQO`JT8Wq@S}EAx|ymk6M)_ zdi%tksdK@*U>$JPbe^QVwP1viLJ69%zRIm+OWAPSC6J9^keR6m=i||@`I|U^=9k1(vJ!U%Ul+`()S413Oy@8tlQCYHnz?J01G!Z)2$2SN zqdA|#lWgoJI`3o9wwl(MKuZ4ID#@5~H~OLkM;k@pvu8OT#sx>$Jm+6YL}FQB(;APd zgWBiVF^yzoDqsMyRZTD_TqVSNdoq`^+;NLpt{NC?f`;4|N^MjW?yug#D)j1WZNTQF z!oI|kG3dsp_mQ0CtQy?1I8N-n{5_**zX2%|KuMftN1+B#Ws zvCyl7!<^+-Ls8Vn6cz*M5|ib$mxN5I%Mz1S3Ba2D1K1}m8cXtp*;3i0%*C0CU<9ag zKG#8)m+Z67WjIp4O|JnXeDj<}E&=%{ri7yR{(B1FC60!k^;^n2APZ41l7MWk4b4+s z6teSuu+{JI9XJ>X=y5!4GiiM9ZbajAeQG3NX-SwaUN9stU$QRuPUFNjZPvGYN)NQd zT^Q=F8XCnPHHcc2#S7EB-;t|pju-qTmkI6rmYzQj#!U+n#H)E7Rh~Z78W)+xu5z#+ zoRN93{>?;gv$lQ8(Pfsd(yAHrSbNVZhkC!1n1qZ)16K71ME0UVq&lqo{~JWgcmE#{ z`Qg7H@;(|wrmc4a5SjfS5IJk-{4N4iJdc(O*1nSIn}VVsmc8;#N=`ROr((ko@G$>Z zTD&-xZlcQr&S3I7c0E?2aBV;i|9+O!_r3CrB8MqY+}2NY(}b;$DcW8AHjPvoHqR%#S^uWQw~pN#AIR)! zn*Hc1U0E6tl{+IL8Z9lBdHVS^J@s9A0o-+d=bOLQZ?e3UDKv6`ON+FeB%hrW$rZvHoCB++~)7k(zqvC z(%4J(SjE}yeg{mC3QuMXEV@)I_8%?(jZm7<&51YMJu4DfbGk7t-|@OdsdA@m$w#HT z3il`J$|1+^iv0+*4CsXl=>ge!?ZaJ0QNGt4YS{0CF6HRDOFP&w2~67e><`}z|y}@W`zdFH9J_v#8>1yeZ=naIrtqw%@bhI`#Iec;hQx`;QO!QT zGS`x#9#D$g>fM5C5Mb}UWdjz_KJYA8m4&CK!AM=nMRbB3#zR0=!*P2X1^q(MTurfH zhj>fnqnD%6w%)(CYt-2!`MD1TJxgvmCrbUM2KL;sMQ&xG`6e5wD{p7sI`ZP_19;XZ zrvH`|91bhaF~rnyy5Io&qVg$f4+3&v_ALcfep6U6S~{Re2R4xS=aL2WuX&-R0|HvG z;+Z~p$vANk4Zq4r5_kDn>_kC>Q%H9#3d~pVBSA)6XOR>5)L-4XNy0>=H5XqnY=pdK zA22q*T(=8NSYS(*0cZ8s_4ySzF&d4;-@$R2CT~C+6J*W3tTQiL+zo+th<%(3D;^@j za$sF#d1ZjtIv1&%9N3C0b^FOv1wYJRGoC3t`e0f;eHT}-tPt4*%NRVvO1vB5=@flw#Lbf<_eBeF0op)Mr3O34B&V^S84~@low0B^dILTnPDJ zxe&M``oF7Q)9aG5c@#rN^tcHOqcVQr>KF9_GM{trZ=jJyG14BCDB>14m{8sB> z6e>5=~Wc1;}| zo#5Ak84&8DlWY~wQYKcZ=VjqI{N-cBZA~b%RB#BK%ZHXGjHj&qX59q(c2q3&ee{Y> z<|!YmaDN*RoHnrvLoM%s?D_q;%QpAUmf1V#)EZ#%zAZ#n`jA{itq`S7ta78|fQ=Ew z*E_9g;9O&UqYSkqDZy93pu0n^#Khn?xI(q5OVkQv2WRiKGDlf;M1|$Mm~IB8av#5c z81W!s0)NL~#NO=7yQv$iSFNRR8Ucf|XzArusuZV`MT0N4X1r3S*KYQ%X|In{ht&|Z zjsv85Eba{4jE;81*s4=M-j?*4-d&2vy>O=E@-7Ol+@=+Z@AVl-?e>?do62}uzy3z2 zQ-X8`dTztu-KE8(>{ui;wnzd}Z+0LcQqyctU-`1X^b7ygb`Sfv6uTBK{&-1+B`Gun zHFi9m@KvOer8}vX7~cSZlXwVr3Z~c zwNYhkZt=FpN^_v__jOIr#GD%)K!+~g=GQr**~lKj)caTC@FNu*elYT$?E6y_0!+;QQ|D0 zoPXJM2kmE6i_2o04(x;~+C7Q*0rpVc3JRtNauK|2H?rbHBt6#?2FGXT62mU* zTz{y@#cBZ|iuM((myr$lGOow;oaJ4qR0`p0H!Of&hto-1pJMlZF1KK! z?Zh(_R`*t$26t~+q`k_=`9x2#-ZFgfIyt5ogqFTI1xtVqKL4a#A|4=t0k4zpz|qLq z2p~~}6xh)0W*+n$nQpgqfje{&3lu_wD0@uY9Gn+L&ykOWZhLlI&A~D)NI<4L6rPgk z9lZk*p>&7K>I`=c)nS9xqyFK=KzGYozN|rb)hw5Wq^8l37N~MYP*|#4f$q4yWh#^1 zAQ!>-B6JSGI%*Kw#5yw$)CBBW1C4YteW$Gm1M1!=0tXeHc>}Zw5>&fjYUNC7*mKX$^)=%hH)#8MEpi?6g@~v zh~qv-;#r)j=~P{oJ2&_(1FD-xV?=5Kdm=!I5d)MMbr^OfCZ{!UH3B&a4d80T?n9ab z&t^@cB5&67#C(p7Sde|mkZP+!^s8?GydPNqp=F{Q-S&E%aB?+~)yM+QB&7QNw*i18 ztO8ylv4y5N5`m?Y-NYJsGc0}?lnLsM;#`F=^BqH&2fypF_D0p%sYK6@d;{}|MZ3IT z%er)VH|u$<^lnEPbf!GjuU`&sodCt$VMiO6(jbOJZ5KtfG^m2eD_?><1vkl9piQ^p zILNlv1}zN|{uXKW8%TpjZYkdvv%ua4U+@A#CEG3f@c^7RydAEv9|JbLU z+hImVckhTA)5U)VNePk|$o=Suv1h~S^*#;wjza_K^?JG#DcdH$ncUHdiBUkO3Esy2 zAvzKA#Nv|!6Qh-U64LPxPcsS4(@gyT<7sX%wyu#rSDRWo3R&np^g^BfJXF?NzgZsu z0N@H$`JMw!>)qFSHo_ae^i!TIGIyTHuU4lC(zs)sJKi@dnLSL-G|(RUA<7!JxJdbV z+)uXbXRF)2$7qxH1NW27q4k=o{AsD{&WmOfW=(w53vB!y4nP-l|B0*ZEe5@b=2e%U zdoLv{Oz9G5w*@(Qy?){f&?r)P?jglX^((bi{xlr+o{UB? zl9)=C7yY>7a_LER8L)LRrQ!ebGsQbal2S|vv~HVP!e@@^T7DK)#$lNtM`K zn1K+-&gNdZgH5@PC{{|aDpGFnhtt3E<a%b!yt#<67ekcD~p8t?E#bVHalx=@# z-RHBu#i)vf-`H=-T~O+Ly%qU==WfVMZ6$wW&wnAQre`y1(e%oGx94f(5$rMcp}tlW zDFRk;IJF$5)<*UG;cLNwYajO-O`N`T+kEuYk?k}7y5sBvaj;-?ecIG?wzav?vSJ)@ zQ_Nw!WdAa49$J%BUa70HL{B5rw6^PaIuNq{JKXzMea4rvGUMz~;*{u`{~Ow@OZ5n^ zJJW2?i*KEib$O&h8FBT})`;liPgk_9k&;@5Njvwu#qZ0DH+5ex)|><_!r%rdwYNOa{<2>3!}oN%*wf6W1{f7j!DU#^4A3R`A!~Xk1#cYf((z`;B~) z*BkPaOV2c1Hd4Ol>%4pZ6qwiw5|2P8_?W)~`ZJYEF+BXnwNQjq5?LstqcWRXKjq{? zF0w~h#v_<|av^Yt%3e-b-!%M+oKD0o!gX~8y=$Pt`Wv8tIS2;x0t%SWwotSJhA;$d z)#$q@%>5lu%4Ke_agoVC%9 zuS`TWnFz|A*!c8tg8uYBPX}=2oHU3;*~B`vOYHI1@oN9Lu(KjLIRB{Bl}y!mofU6^ z+}eP!F4-jc$8@|KAh(vr7#xat2AG)uIwJWxpdG*>v(xjU@svyu$&r+DOenLLmdb(T zfMeJMU5T-KE&cyc_SRuhMQ!)6q%3@rlkaE5&B96D;`Vz9jnF#h~cq7}z1y;m# zLv1>Fv<;OM`>m4#zz2#6{1Tz^%_iGow~K?&h7EX)WI7z}w~OC~njN5Ckn&N3r6m5u z*1|m{&K(A6k#=!$vO|VOqlSmMwQ+ICgeEf>t_PXW3=f)jfF7nOx>1$NdWF4>D`uhX zgcxqI!!7GZ8_W}-U7fi2W&1ieHHaZ%TjjL`s66mh1w)!pPcQ5yo7IE#cgS$EYGAOZ zc+~wKfxWoSfL%S0zuwKulK#VtxE^1SFj1V9d!l4?C;ot+_7iO8wfR}GB$E(U57y*W zS!TGRA|(~2v1xZ&x^}W6%zH?{w0^&0K^`W7h-vEdReKS4FNi&dn#vhV+xQP>x8xna z#xa9C$dpKD+%G@#FLthvKZ#|9c|N)R0pbW-gtjE*fzg)0&rXzqPkBMI6KSC#eynCWj0~Ut?k$EQ6iLX?*dHJ z(di_Vr-9QtWj@Eb4m-5!p5$?zU0TU)7XonXFD$M~Db?-zAOxNQ`BK9cmaLt;`L(CZs-xT>w3aX zuPWZF%H)7^Yo9~rA(%K5*BYT$KV23Y;?p%2p;R0QhclP_hKvG>*)%jHeTCoBYmgZQ zW~ES%YP}!m4b+TOKlPwgeTzpE!EFJ!IK&vzibZ>O_y!c33V*>NVUY$h$y-qE2U_Tk zuS9{;DI9nyOi@W#q@W@Y-B1Q%uU;VxnAH$MZhb#NfuOgao$Htlkjue$Toxjd#=uCf zF{6Gd9|Cu5y9^aC20BJWr(G?HA+iw6nhQZ*fM~a=UB(#G_VzC+1a~$7xWs-wF82y+*Obfki-7Z&e=)CDsDRTg3m z&D+Pjz;=1{1!&HHz5>NRUxDHX0E$mkrC}iubx4aKOBsj=2pt1i*cRjCrfhU%Hu{Fs}Kgr~7ded9q^MegiSd8`r{(VNKpD`L+KZ6=b~BlwrtL+MAuU@WqD z!>{ytEg$Zg5$4SX8d=Ee{|gc>`9G2H&;Lqd{zby){tF53K_cN)P?E_zWSs4uR6--J zqH*!S&OF6OpAjZ)uyc^r36$7+z=O>upV37pO&=_jO??Qx zRWy-@TN37Rz%Ield`=)gxGq`>r_Olo|M;8ElQ?&+rSe~QIzn0^f}d=0g8%8N!o#Ks zqgzk=XNR{>hm9FEHzy3Hu7XYF2jSJ}(cU~6CW8)-?vook#4R@#_?Av?P)Mr0{m|mm zbUw0v@k1};$I0f!(;WJ{z~+1m*qjgZ&+H8{u-_YJUIpZynp&=f#lPep1~sp4q`l;H zfbQne`|j5cUv!_xjvF=v1U~YMFkRK>;xKLepY$G!zx1Ar;A71!X^i7v^FDtuaSDKm zp9?p~3cBF`8z$aLqbgQ}Ia!l8m2BVuOPzqQ6^f5xjJy*6a7X&b(iNe6$NEjNeQFs} z)94*D`PgAnRo<@i9?)Q4+tGhkzCK@YhCNx<^JOnrxbnh&Z~DcU7`sacYr}qd>-rTbLnCKxh4~&K~S#$hk&NDfhVtBUPTT|CT?Na zb0brm2@Bu%!aqq6>C708G{yUN5 z7xL=!!1Dp1jyZ>vWEVrZVOD4KEy zO1_q#iuyJNsSRi!xt+X2%bTWotnWwt@mDLk1L5OJDFU;gr4>r#)_2M1wjMZw+SbTY ze%jRTb824FwigI;na9mBj}`RkrjPU$O!#z3$Lybums-f&v(B>qu~{kgYM-dJf3{M} z+4Een{#QuVsc1IK_il%()01b25HqPV(-X?9cIQg_gyRYqJ#P<$6hYbTv*t<^j_p-f z&bpB*ia^j6ar^xn5-43nNaO+~-}WlO$UT#BnBROd8Q;4ia=v#;x$tMdU!8DWJfHg>KxHm`oIY^H7El++z! zi8(g4#3Sr})gRco>wGV|dgo%2Lve!dNLZ)PZxatfQHZ@-g&s_?%^(=p_g^Rk!?lz@ z83f(>X%Iw_-`#7hj$lPc&Aasi)^{2T(?Ca;BFa!BXhTRbT(MOHsyPr+1=r0r5@_Bi ze8OzGqQxie}S~v`+kUSvsxYQ$TuT3+r zzGSc^dhDf!+%h~K1V3ERyuj%j;aoaXY}AWg3k4v#xKB%q!Ldz@vNt}~ijX4O&!vt@ zJ&Fu`wl*pR&BMCRd4T?zxS{c=3?V4pVu%s3l?!V$kH(Y@LUHqg-vn%v1k&^H%r_2` zF+v7T)gb_j3?i5T<(O$lncS1b`IDH0ROVKGti;)*JV8oo^)NqH%d`R#LCQmJXkMQo zv-hNG7JLL&ZT)ugR?PWkXTuHgSRHmL)q)dEoV6FvlVsJq^tBLD^OlHFS2wQv_^F$% z*h|tov0L1`YzpLGDoUy4gMFK^re&vk{22IGrIZJ~Cc5e<{zSb?SdM%rsv#t0`&&MF zyp$(E=!CA}mLGQID!&o!>Olr?{AVxjxPuq6JFJ+EFCSCAwmRu4BGHL?cdzY1jKzd( zRNb1T2SnuQn9&Hdd$NoM=p3D-u~;Y7kiY^BM5br2GKFQu)Ak2u369$h*oh}C?p-G-aFjbbKDuBP*(z=Sh5-Y6oncvTlM z`|RJ544s7XQzGz^CSko}KlaHenX8;_v14l5U2tKGx| zB!@I0OF22Hnm`~PP~TH7kU{R4Iqsg@(p6J6Cu=`i6OMD>>x_kv!sH|zIO&$4T#mSz_z zdhHLykHJ61XW1pCqhljO;@#I^}u(j*JRp`D+ zx6m=68X`+IDArW$1Tf*x0K~vT3xTuV+5bp`f(do|?AI|uG2$S*aoN~l0;ZUBEt)IP zYmcaaE(>~{NT7hLR8)Thtm04O6dpL`8mj;Wi<2;=YgKhjFz>HW{s%R8$~_A1-i8T7 zRg46$u!?;!3p^VI^(7)*Q81(h6ve}<6&1)Wy zpa|Z$_=*iK)r9Ph?9T_hlIjeGv)+eRNO$N4tRv?DLRO?6QaZI9SUKegR7e}taFW3$ zceqdTlp~6fy%+#{=R^ksl2Po20FljPl(6@Yp;fC&*9-ePh!BXSro0})kJsK)E1^XI%@ z(7;=XwjbvN;>^nRzWg%#M9?rroFkQVWg)^`#ZpP)~J#Nsh9VUt&NonKqeJ~IG7 zgNj`*3??dsl8Tw2&xN~1IEMmjd>{{k#2tCIS)P&Xw+ip|Cf z{`j@j(0NjYtnG~bxb>|n&fxBKFzbSQ#u|cVt(2gDzD0)ZgAJPmlMt9g4q8vYpN zeKxIu8}Y#9FQ)Ag>6|}vKQDbw{#+bvzNyHzImdM#z;#~j$Ulxrr^R&opGBRVlI8x# z^xknvpEzsOIcBM=mJEJ9nmT^O$JD7DKs~QFN&n1Qd+q%#{+Fv62=~X1=dC6p`3U)= z3NvLpUQeS0Utx^R34PiYM+1B{IBgmPaMS^3Xl1K0+a*%8MAr;@|L%5te(ZRHITx#? zhD@K~_+)b3Br7F;YLJMTPtsU&%G}xeh`CG0U1_Z_vG}}Qm+45^Knt1cNR|OavPA6n z+@>}blmKVQxssi2PC+v(yXB?yPqIgsl2%1~RG(k@seOK-#WZ$t;CXcJoqA=HeiI0D z0-N-aH?vIb5y}TaHXot_oL*5})?@~H_=RDMN*|K}lS_54R~!m&`;DLDyZj!!|1Z)| zF(3`O50|%{9@Qf`>e)$7p0xIsElXqiW%vG#qfVw*eVAaa$I6%v`%jMgIzeiddqlrK z(fr>a_7uAlO%?>P%g7)W=_B+l!5hVK>P(}q>rBJcw{%TAb!{VW7DM&l5O|z_BJf>0 ztdjpk;In`zlG?Q>(iH;lUqO2h@Wk~+^l##{cxf{6-os2 zLSNG-@hrE8VByosY3WTAWOcF@hg%ctRAokqPZ&YIV$q5za&0|)FhXjJNsLD7Sxz~R ztpqwkv~HKTl6t=2oR7vdm|$RRBF6)pU_cM*C9Wuca4n2f)(e?n7|z1D>r2+k^GG{F z)B&dzuvyij3JKhqTkT_i%z? z=u|WxNe`0a*VB#=0!3l%EjZ=Y>{|)e8dxM!3>hfh;I6}<#3&(J=<87rY6}UVkX@Jk z`7g{0+7aAb$M?XGkO5sGsb??Z%52%xgT#|P+C<&eoqq`ELo3i2C2oSg8yHOL*+emavxjrbHR#!z(I*nmruM6>{+s1Lz_Z z62t>AE|IJ>t*pGm5@`^msW-8V%%-GS?Eg|%%lcHVI{xILi5*07I0>JVYiOXnyvT{c zdOX|a_w5pqY`F?N3s#;J_WVy453TL^P0&+8Y4hl9C#|q_%Kqeli|$tw-bZ)4Rf2d> z3rhXngJ$O#d%O=N7d_5efyQ)^(J#SUMZN%3g~^j(#v#K{3Ru@yP}A8(;(`I|ivDD> z#D=#HaoYWRY>1iew2%deDCd!wMBMh3Gt>hp4(JlJ6Ha184Z%RspIhj~)~EhXsq z2@whCUi`2jH%BT9;r=MD9Kn|IjSv-K5f*>LXd2K`ULW0YlJhnlwbgJ)d~W$&W2R6e z>61$+tP6)uQV*c%b)5M;I|50hldSi6yJnd)#6MU)w`Asmc$M;}pEIgJ9QS3rIkRA0 zm?Qi#0C;xXcWX!2LRf@s+_47W>}$9S8s??Q67Wgy%5CT^lipu;D*_HS_ie&7mdwWi z+WP+5s$rTQ>c-4-u`I)Pv1|)`(pU1~w*(|YlavuFqwrQr3D;Z|#ELQ}TT(DDThf&? z`?t5jgGjwiRh*8TTS9%RQSCW*MZu=y0~XkDo(cy};IJVnFgvQiFMXo;j~S=Q?4YttUZWHmK&A>h zrsLJX9SB(&)6OK66G6sIuPgj~ z5N+WFTj3`eL?OmZWFxH#A2aJQ5NuG(gWXxGV|%>3)w?Z0xy(`#Y~**=e-*;430#Ga%`rTD z61hfc)7-1V4q}ZjZE51UnWPvR)_LwYqka~w|1}4AL5iz2>-Se`@15Eg)i7D9k=+ZV z+c|6h*s~-v!PKXke#PixgdPo_lJ;$#d_8F#c}nZN$4e9ST>OXk+0Wezb03N*f3b_T zmvP)1C;9;y67P6N=n+~p5}$q>7}Hv|K-WgIlbZf z3ykf16Hb zskynK0d&qA`o&wLm?H-yLxZ3JH&{kM1~emDJJ6k<*8xz?hxjQ{1Kf@M;{La=@yZ;X ziuQQ(J9WtUFm*hK??&E=8a=!3yP(B0(VMw2xv?;#GctM@LC(eXjXfr)OE zd+M8CREwvX&;C`z2_;=27@`zz@I8kk=|B||@5Bl98z1d|s~ms%Z`GT)fNHMH#YsG- zCh*@>^UALv^{L>RM;p-MGy5ILxf7xfsYp)Tw0U}usXaZrpkp1Q7P@z@ns?Eqe?_o5 z2Ei?TDNn9k;JACSz;|N(h0KR1W#{YpRdN%emWi(I{Q4>vIumIDjDRAqjDQ5rmp_j- zsA2r|o~-Z5^UHfa=->3m3V2WMXzE@3%zhp-`}z2q3bX+dowi6S5R2!;*BzCu@=fE! z3GI3iG}`AfRTPC!QB7r19zO`6P@%yG>~cOPLv0-;CWwm=*P2rLL|rhgB)p-K z#S?xjpXYagyiQM4>r1`mByk8Je-?r6d=I=T76qLiPT%Zue7*|H)Fo%vtm3%IVg*&m zSab^9D7QFHesMI!n>HPkw+!pySmF}F2b@Xb ziYkV3OhRd+f)OXPOakNI2FhR-~Jync4HkI1CbnJ$rElFp+`DB%nms8 z`y7GtQN?j~*GvNAIArs64G?ke%Hy+^d!cL zRZ9$psRGQjiGyJOgS{}oIwz>P_)%!6LKBgG;e8+hw&Wn?Y%pUdiRbE9Z2i!ttpfJH{zOoR*||?R(2C}O&v_OeK#{n z@oAYo?U%!{V#D{2)J{<(a|-tk@~thp;&C`3H|@x(Ius1oz$DTfeX2w*+!=x`oc0H- zA7ys%o8~Ic$}07QYQ9AL8CzJEmjqoem7<3&Ybs^~T09>mqMQEwmOywfbXwq= z6%Uqs8Xr|eD6Lwz8cGFi!G>gU4_ZmefMWX0B+W$n+)qDVoPX3&WnaeC?ol)BS z#n%M5$*56>R5IQYI1usvHV9`78fI%9Kr!Z9ktU`TS%kY45Wtl|xQ9J^3dFTjxthxy z@|7XZ*U3x3p>aU+f-C?ph?(o&3D#o-AjxQ;#9EUJ8|_ppOeC*^;`-{Z$a+lY{jm-U zr=(OLXbVqS<-8iG(DVUPC|c?WDZi3?N(lD|8!C^_d`Yl10y>xp@Rxk%6}JomBln1S zVp^}H)SD7tUI2f|!`@SoTl+3(Z6L-W?2CHYzKRSi2}f{1VT@Kvk`f{+sbPst6%=Ee zhQLU}>KWPhv9^F@d!Zo&i-xvc8Bkg@jEG4{Kd`df4}hJL>mnFdr~-f_EK0*rRUq0l zyYl%ekg?I^P+L+>MAX!h>8)%SY3#Bo7TDk~zIoXOjv^6>{XcoCB7L0f4rDU>&>Py~ z$mW%xksS_bUgHso4-h!R{l6%4cRbV>pcpnKzwxwwK;4xgZGV+I^`fp<#5Nlpj3N66)h5yYaC6 z0SY*`!|aa_MlzrPos(-CCh51TUABYxoD@itxvDV%hS06MKpTRj52&OC5|OGPq5_{C z(6je(qAqsWq_Mq#kpfJ@98inUo7t3PR3PKGvEjH2azl(zPhQ<7zbX`0kY6U&{%9PZ{#yp+~ zTN59R^=0IYWv;@Q>C+%!uA*VuQbr_Utm-KeeK`erM!+Ke;J!byrlm%2>14Jopm~>qByqr zDXeIw)DPiy4t&wU1I0WW58eFMDs&{800#xtO&4|v-a#;7&;Ng3&{xs_<^=)iBIy4j zUGy9~_FvLP&g8%#sNAF)@{WVCQNQlTRSo9Mg#2_-|HT>Ex{cAv-ZQ#4dl$``cW^6X zk3NYwPrAgMW;d7bq`BqVt*#axy^ST(aI6{Yyig~u$#aj9UwX7*3d6vi{r`Z{tIYNd zS(@)`lM$k=kkeu6qSks*IL3X+-lLORbh@YYY|mg*=FdXNS4!3XPUc6Hy4Sq&`_+5* z%@ki0%zo{*3NC?E>a|2)@yfY+6sF<_tUBz*7k##4>)u4>jF%Ed8t5iyKDr7dn`Tbk z+^%Xc4HvvQkO@e@3A&58z~bbIrv#iJR&>?w&}q$X$V(U&Ckp8!zofDHe@j57UMC>2 zgA0OPK_vP6KO)JnN1M9@3CTvh?w>+O-T_}p_9cZ9|LM`EM-Hk^Wr?Llug}SgRMJnr)@#)Ww(b0PrvY@ksrRx zTxR;e$B|0}joI2AC)+khUni+lO8RDHCj2!&AoGs~|CWD*AoGtRdaM@zoqyaSh)uaa zVKcRVtyqNeSFz~LKeLbf-WZNkxSHu*xSGbkWsTbDz)upDCuL}%0xT;oZW<%YPP_=JhH?a<-M;Q%=g zxEVNtGrCHX6a!0gr~T;TRAJ9k4$C7-$LcjDVAnm3Lx-~NiN0+I*g?1R$4+iePi*qG zD#cfFIe;Fd-gCeM-7=(ih>@(r){{H?vZcbcNDJ{1ekvQJ1NXjLA%}@>*`1(`J45wC zp6{xQ^;J_xt5P^8g}@yD3h8l!rW&HXbiWpwRXUuqZ`H*!>b81_1Lo+c5k-FwRCNi1 zYab2c6tq4l_XgcrRv5#}LD9g&T&htW^^Trw2!5r|)e8dx&|eqxJk}S%S1#tvveeZ` z?{ZMvMQxD}7L4+r5hk)LG4+y5;?h8E3V7E5wmD87hG8FQi`19iz|2FXutKf{%F)uM z>pxBcX3NeschBo}fW<9oSr@?()gLsu>poZZ=ImV7c=4G_;B`rda5CD^)~{~(HAO)5 zE{HLoNB={-NE7K|4$yKGkm10x1aHK>RAC~lpYr)2;Ry8CoLM=JT}s-R6e+=a32egD zml($JKzGk|xmQ%FrW5r03Z@PD8xUqzfj9W!aAhP!?18S0g(OU@7&!vU`AUm^kNwsY z+;7tt)uiR%B_1yGHX!eO%+juF8dx`rs|!g*#rO!}-r7)57LxPBtBG;lu{;rY)gh%3 zGdY1I0cDbam%&<0?Hd>Jq-wj$QUb$qyuF$E+rpl+FV@w^vh4;Vv&5a`9a(>ufraw` z)T}M~7nM?QsU{$vI{*$4vhYjTGwUH_l!8_Wd}M^i;I@*T(i4wEb3XjJwGA)-JR)v=OiD z@qz4cv6ctnZO(Ddp5z9Vmi9KCAIYV|4Vq5oFShp83fJn|YQ%8?`DgP`sIorciu@DP z74P`-%T?VM3?+%d5b0V7hK?n_fxK zZ-}DiZR&ECadp{Khel-amy7;}apB|vt8FzkjeQ6H7}ZtvSKG9r)pe*zMYA*BE|uOE zq_ScQEanG{iwOnz`q+OCpQgsN0}H-C2oOwUZOs8zOd~Mtu?N}8uWWd+fSWAXFymUE z^#EZ%we;#CYF{N~$9V$yQ5OumZvkL*Yl3IYw*ggUIcLEE929FVyI+9Z{adX$X<~45 zvmuh@Gz8Fl-$^YgMmMTJc=}IcMd~E@7@&2>bYIk;za*~rGDtmFREF>@6)BC*0wN2Z zt=iidn6SpUOR?sbSpnw}urfdWcEd#{BpGhhdNUJC2(Vhjd-8R3l_7dm^Th4R@bbI! z_$o|*_i`#CgK_Q@7zGH@<;*;X1yQD7A2gPNo!9VMA_>QAB}5@7)J@lG{<|=^SduIF zTbJ}iKL|F-*`BYcQllSuiST|B}7!379Ngl}99eg=N(KsvL-2E}m`+2pv%rC+LwC7l>zG_T}RxEacHpt5*J3$YT`3<@{Flf!}G=1orr-V@^- zSl7Qe=(;Zx)Rpk`>l2-Ykffhf-d4?_RRHvW3S(Re?M~olZbi?iP01S^g~!arDMD2! za5uJ`cjkfK%@$ilU+vzqoa|jTJ&tCRsruFgD-=!K}62@>vS#`37PBpW1Xvp|j zPc{3wXQ|QncU^OS)+|=ooAB$6Zh^$v0sgx^-;M~fBgGWqoG@o z$0(Clz=rBS$UodW|04fLmSVhaeWW>Zoxm)(PGDZ-y??Wv$aJqz{<7b~^gBj3z5s>U z{PaP`$_npPAbtzk^XEp8Hk~)6`iFz_W&xS{Q2pWw9)mt_Mjr`(S8E%N5F(g7X5W(7 z4j{FE^!9x&J^6$C%VXL*5=#OiBPUzafYTmc)3)BQ+3e@_tYuDOp#|C*^7UoWSGBtw z-0$vcj;-rqw$$#vZr=5$l*eOv^Kv5T@oRel{a5~Ipb(TqhwQc5qj}!vP>CU@yD6XG zOP|@;KUXZS+fx+RS4sHK^4O)*LcKZO-x@SXgM8$!k+`|Sk&|O(*TGFEtG_DKK{nVu zA@e!obmjAm#W+ziRnOo(M_n+Di#+_Jc+KQq*JrCsW&n>wM zzRdUh9WB0hY@SZJ2zjV_sGyp)A8r59NfO7fvcVi=}mrNlU!Dk-0b{ajp{T>>^{ra>0RI^*S z1K}@^kDs}?(7ooVmWvt9C||z#{pR^6`$+hw?UjUblW~l^R}wsNE&I!-C%=9TIoC_; zHufsLD-=k4uEJWl=}_t4)H3(l^n>c0gQ6`D15*R-aGRgkpS26SdcFb~-&^+TTiT7f z*3uM2?>a-{#Pfn;jh5k_hRZ+A%cgv+)Am}Dac3Ti9Jjp2{6c-YA`^jl*>L%@cEQQI zJtdNO&H8wAvuCFxmwc7(rcp`@&BfvLCgDhiVkytt0a5L&BcsA!&K@!{XCkPX51Rfg z@0YghnWbF(p$>{ECO7!ra=RcsSu@?Jq-gT9R3OxoId!_Hk}1**wXhInEcrwvsDasYSDh?LJRfz0e9?q2v)K?OiAGe`@ ze4{Gv*8GRaH0wzs&ghZHVJFWzDw)uM)VoSB2GlbYZ`AI>$7Yf!SSdaUoRgT8zBeFu z$pRPGS;|y27p;mT@k-!`0tZk>_@g3fx0Hi=ur<9PH0E9(+eo@AnW&#=s!;f8su->q zdWH)3J7d0i2~>cwZnhCb<(uDBaHp<{!&3NM-MZ85P`mX)IR%5%S=KmAU#YW5{e>bc ziAE4yyioQev=IHCNhEBNXpMaUd)^(q9#I%bhq_wOR{>l0tjE|xl}wm<%oJ@<&(5WR z8-lm_lk}DFKH|B;Pyd8Ypzb2s>Y#_4^YWS3#hzG}zLJDJ*%HuI@c=9EnjmQfx+-sO zL1+%jQ@$*71ZePs^%Wt`aYlZPuy;O$&{SyK`G=ML)(5w_*eGR)+PR*pwX%otVlVyg!uytLZcx|j5_oUJ7}1`8{GFSj(&R#XW_WVlVjZ4 zWV%gV+@bnP^-7s|IcHoY;KfVwC(I(3Sh>K9Q-ztrU4L5S01yr?F5XIxrlrB|ja3!* zi!}6Mm?~=hmaQz`9|wlJRdMZAmkoE*^p$|MkdaUv*eV1X0nz3wcXWWl83Oxsv~qQ2 z2#r-!wBQ4%XUa0|a1?A(JN!)Oeulmhcu*f^lYFvxrM&+Y&mGz3BeCKZWW6BVR&`^%;gq2*D#Ev}wU~Qkd zDtO0ibyK;7DR(5@>W_9!%l66OsSVm{+=S^%)z$h>(#iFb_BJoK7LGE#6m@&3iXu<% z?79@U)LoR;C;XDEkz|PdG-_P}&hu#Du)BoSHl+y>V)LBSkG9){y+bMJIx`z$TJf6R z?*H&={!KpJ4NkV-0=?wBBpJ$a)({$+2xVLWvsG=|;Zw?Zxtp+~6T6#=2pz2&!ah~W z7BYZ00y?@eg{egXd}8cL$JTAY6nf>V&wZm$bz%AW1Qy^K*($nKi=pljfh_mswbdln3{!lpstP6df6ZvOo7uL8_f*$#z3 zOM{2zjophDDrPPWX^VFXREv1P$-Jn`p!Wk?#$D@A+|In$+Nd_ZCPxfn>)#Q>#DWq;2V<~^K^vDVW6BU#?fM&GBd9_VOwde44HOb7jE4lW2!UAD-=w*RRbBL;*Xj&> ze|f?{Q=#NHrq++@PSA8q8A5j!#Fs$`)U$_(%|8}K?dzAY_h?;yi6(e(pA5NU(7OB{ zm6u2vvaWp%WUT+X!OZoeJW?hMl)xlCxSNzZSw7#=?s3`A0G#fN+%J)W?m!p`*+0=z zs2iZg0W9uyAMWl&E{Sk~ffj*ZrIyAC9xxd~9HQJHsZ0n;gi92VUr6eM!GK4)gbg>? zs$EK?i!yT|p^UV<$SvwAAOeDfG#~uVzQcxF>lU(6rqT*@sa%0d zE+bT|?NO#ZMN%qx)0IjtGZ&w04=)S&)ZpG^lJriL0UcDY@-XP3-g;Ly>DjtBl2Vl> zx5SzuBO8E`o|G!6M5(c)s0$WSuK*obo~m>Mb0l+Fk2w7J ziLff|G0-=vIhI(AnJ3U#u{jRfDq^pq2Ib28{_3WwP_{zb@CuHriSQ#yFup3rp`?--f_)_?&9}TyR&BjChza;z1;c``&^WF+h_4K_uih_qX-e7 zt=aF9!{_T2Keb?g44zWou6P>KN|*ut;ko(B>LeBaSxp*)3Y*UY?AYx$2Z0OW&M)(4cnZ?l7l&a?b7}xk z&lUoJ`W`yn>NxbU{-953)2A`O8_7hEII4#ZBZ8+VSsjUW#c)y&g2^k*9H9ID*?O!g6l(b@xt19z^3+a-Nq#m;&| z{a!_sFq-z$bIgClk@n=!MP8gAsU@jz)>4mUBueV*xt%iBn99pUM{6YV|h1kj%X@Er&m17x!&_MVmKmtM3s5c@ib`*iSV^ zN`kOaDU{%LQO6+k;KzCtVXLt2zCD+E+xCCNkW*ex4yt_Icbpf$eEIOfZ{~G_{cj>8 zUF8W|?1halTPjr;i2kg85J(Ci{4arIr_wvthpal|ESWD#Ybs8cFP!I|A8|U>P!*5~ z$`NiXNl9F|Up9PBe<;D2f~_KHv^CFBPZx9Jk-Pf0-XD}R`J}^HYAx;1@mgKut5|aU z{~k+bh4Zb++f6w{&b}W)LD`wZf)OkqMs&Qq_!yvl`ojZVK)9vJ;xZNML-vyo6Pz^F z!@p1lD|PEXNI`P4&KqmDCQK~jboEt1^pQIHq{H(nlGNjL)fWxaFH34Y8pVR-sA3v) zG8uYu7T9$;sDOy3u{Gzz!y8qaJg!=KL4j8t3-7;u0taRe1!q=T?m%*kmWUopsnpU} zX|6T1KsN?0Tj&8? zTz~0zxGhDMW@^5Ns{ZIk%B%r@oPL@8t)<8MLf{X_aL z2y`xwquYQ=0fN*Z_rxXC`YADR2CxeW$z znBdNDw?UZ%>#&c_M182b#37TM0B%+mb(8=!=w-|U(4>zJsg&JwP zSXG+DDItz&*v|FAHj{QbqWzCi?`2@tZVB;|S@B00!&ji5?Aka26jlvwFHpf48Mm$Y z!;RI0L6bcek=0hc4(_{#y56qY(%XPOv6FruvXTk!LV z6h2DRFN^GBC}Yi{2agAK?y4zrF;}N2+e;52Ijs4G`UxN`91pc> z5+~`Z9EXuMiNwGr?e-#k-m)j?mwlk!U0G3v`?DeJZ1tDqfmu)L=Qua2PaN>Ms5;qv58%zry?R zxY1%&@x*ey%^7Ir&)8c#hMrq5oXtvB4JyR<^YwO)vMQ|NMtprW)|gT?tKB~~94OhG zmr)^hKkMyJN^`9W?&fVGgUut`_zKOE_och)Fg*m-3d)mn!E~ z12gNN-n^aAZPCE}zCc{MY{ozGfYI$9R%v5*z1$}bo{39)TB4r!rUsjylOHi=tIF7Z zi}xDrA!AGexVSEyde&^*z>9>{<~&BJ01ae48^BM#@WG!gV9j0hH5F(XmD-MyDK_3> zu3|+Jg^V5~z-{+jAL<{P#N#R;>~*kSDPaQz7z>J5FVN|s!u&V}ogmKBi0U{h_hRPi zr`+8X1DVd*s%0cgh!;3+oA#-pZ8kjX-@^dT-lViB2p;g(n{EbbR*`#VdGLSKwxhG^ zEBWToR#&LLKO^gHPF?j&)#xKzS=K!6^CX7?kxYb0M}^)K_u1(%%SoZ24N8wOzFR$& zeSr}a0(ax|iBU%GmMbn9HU{Cx6SH) zRiB$EM1x9!@>MH-PY`Hk%R@Dn(*&UH=h&QOM^agkOZs*)RjLc_oJAjO>-{xBg~{=KYGed&O{#>IsbAAovb24h8K- zv4_YYbmu-<59f6Gqad6wq~*e>JyANNp@Fxb%gG43_}qviExBza9B!<^=n7}IOXS8?M)h@7s_4bHBc(uXq-qYklDfEGHIy1s;>$B`cCzvvYt777UfC)fsF z%5%z7##kzZnx3$6KBndhHn=3hChLh>DhZG$i?CDxI`4&4;b1E#lLd6%MUjd~#X1S1 z5WOW{Q}ifH1&rNg!6Y`Uo+zC8GBu1nElk#}4HzBbZ~?@=~RV)2Dfy#D`Sce@->D!DE4tX_4~h6Cbh;N3Hw8nI0|LuP^!@yJg*ISg-no zk19@YJv2S_X!^q7#|zO#&v!bB7o{$;(l=(+kJ$5W{^rg>b!4OFqPlvf1Rs9zOc^)1 zIdEY461WL1m{CO;iT`jre)8ULhUUQ-VOfjsa_?`JpOw;@RFBd(o(0DrY;ym8djbBxHw-_!RPs$lga3Sa#x zrtq}Ugi!BS-f^wec!%^t%iO|+Ri>1P9^ILh-~6Dee{zGh#-ac$nf(6mC-#23FnPLZ z($kr7LBD3-;W0GSy$?RhxR^lY-ACVL>*NbVga73Mv_<2rB_iI1Hg8euNMhh#MmHv5 zdCZXD$5Y`9fxu;lS}`Ya7rMoTJrS*A7qSET%XRkOx7BgP_+o&}dukgW{5^Ngd(-0g z#c6p956uVkOv>DATmoNw&X((Me_FS;;|`T@${Wb~*3GJ?U!hZ0@oDm|vWm!h5jzV4isckcDNo|!BA)z5C>r(%=9QkJt@`Po3C(wZKoxH5~k6@9uaP2H?T9F8cj1Z6q;{tY4Pznt94Q#eH^-;QJ#48!{w-W5>?Eq@3kns zeV>0@8JCvYDxYtY)W;8g^>g2~^mq;vhs)JNdHdvr{4^#BkDtv=RT@dzM!=UA_VeFjhZ%BwuciZ7P;R%ZHbA$u6%kF}tCdK0$MVjVKK59l;+GWb7{+L`p-1m27; z3c49RP6c+`r6B|C&$3HkPSN<%qc=Q+(Fh=kwz2a6$ZE+qSz+5VS-z(IQ^Gm1wR5bg|oCH zJVv<#1)r0(X10Ul>FhuF=Y4Otmv=ym)U92Uz43|&Hu4?wuyb~PPzF)-mv_i(vvRp6 zyMg{>`OoUhBK0>EX;|Y0D5#oa)W8j1zTF_!8n#5ng%Trfavhc`-raJI%(_JaT!S$0 z5Y1&A?bU1ZSInpm3f^Rv2^h+NB zWOZ=D^bG_Ha}mLv`L5Xf7;#5e!h4DWTeWR|vm{_-%ww1bH}YVrBzU)KJCH2Z5M+a9 zPAow?!pCIzRyXBSeAvV?t(l;*G$B}Pd7)%D`HtHVSSz)DRS&4_%mtO5VBtki4>*0v zYpB5Ob(kPCRd8AE1CeKYIg=kCsTM2T?&9B4M&>l5&?r5Nk-tVI6i<9qm@;%mRCQH* znsh{u?yAk#!AVpki{hq&21~Iz|>(J zPqbkD2s7^hn-8z1w(b3JPf=Q*ChdjzmT3k>F4<`OO^+Ayso$p+~eBnl444!(o8JC0YMW|?AE#@xT_>LYL6Q+D9>?tP-*mu=plU+8%Zo5uv_Nexf-~5z_t@8637!`vSMb(t5M-_+X ziyd*&21^b^=nVh;y9{G-BH3nCW-gBXZ`v?WfXRXLP3=8iU;i9@t#rbOo!nWl+5oUu zFmmk%ty)0t(A+CwIYtq2JA8w}L=G@wmfeCe;$bX!Bll+7!EVSe%+O^Yw4{{;xO_0d z?-#e`omueuR6~mfSzYVx0Nv(=!snsor&SKX>>ZQlf=Gexf~Z6voUE3DP3bHLa$vV7 z**hrbU1=j>EL3`$%;CIjw+C#Qx%dInu851l2#stj!)CqeU~a>UgRx+Oz;an8Q5g_l ztZt0B0zyoai%$>}G*W5pl3?WWQBfkiv*^mM!3$prkwhhoQ4S=MN^SwZkTyp^SlJ(a zkU%a5SxwU19RosHa7N0ygIw9~EO)%5RMsd2G-xgcEdeg1lF~-vd^cJK@#(8J*#j4X zZ|Y}p3W!hC4P5z|OPI)XWR_UJ1?rm&MFyzdYxXL!d3%rqRpnqmHjvx6P$db5mFN|! zce^I5U?rs{DP|5XvHqZ7<|+XxPvE5vN@ikUC4MxFhZCX0`*~n}G(cYy2OAJ~aGx)m zMT5j9iRpP+i3M_dTK50=dh56>y0&YWmhNtm?k)k5?(RmqTe=aHZX^Wh25AtaLrSC- zP&sLkmdVkMC>VM*y08JK$BvolG=dy-L*K35fAJ>^Z195P~eQ42HaC->$ zzh%LL0Zhc(@=XXd`sMDeLAW87#p=@js2mHLryx!nS23#z>NI=-bsA_{n#znt!Vgx) zKj(qyXHyxQNVp4R{L~+WZ5JNGnkNro%_$JpEKl16L-v5k+@1i;=b3hpe}6L1a>7ZX z68CfNcV=a@-di%BMoQ04gjB1o48pb*BL}(K$}{?pj%KKM$R79!0{Tv)&nd3zp}%>kka% z^{M}SIPQDxsW&%L!8n!prE-J^l)r<^QkByY#!Mo#?2NRW%{k?vt(?wS9pVQH^Y$)Y z{3g$h)&1?4*B_on7Eq}KU-l-g)7|`^Nb>tdQQ^s_g)R|j9rV7dhG^5=x%tkwXI8v5 zn?HRW1O2xf#?NBRVD4zkXEu-pn*8inU8c?uspF?N@xRZW`T?T7HL5gviNo)r^xC_9 zv5R$Th%fxgM*5$5;lwsOopnyu|gg+(_FAGe$K zy*}IzYVrLT+z|UH&?7Yfg>HvBe!+x!zDylbZI`arNN+*y6S1;exAI-*!&ctj zWmY5`Oc#h9dLGG^5u;xL43pdqM2HOSlg)(+Q%eRINZ926C%DP{PjFM>ISGWE3Tu1U zF}!cwG0aobbjG&}t$pn9OPGcRhsIPVch0Y7O5>pXsbhhGW`_(Wwre4L3NbU?go(<= zipK`(!qTKwVyPA<`45PakxO_imf)F7%>|4R7py??1xo9r$EfXJikuBlhG zGFuS*rKlm({XG6_IMn_}`Ta$d15d5a!g2Bym9~~I5gfl>mALKC3&ceR8tnM$ciw;D zSO&#|?iWY{Jho!sNk*Kf?xy=*wq$N=(95J||0pe`YQgf?i47)~Q@?w8F=|@+OvHio zV=7Luel4B-0so_$2A9GFp@>l`OqZ+cJL&C-iOC`2u2z%3Va-ku)+~pHHOnnnYZEkw z^i0u8Af6^cr7D}m5O<@x2AI(v0O&sN0W z%sIljVXi2m`EDqp>eQw2rMOmtkz^_~LS7z4)Gjsj()f%r$FA;%TOOn%yq9kQvxbjYm8t#Tr8s8wLuLL1%fKj2a0pQY4x0_Ddb*EKI85sen%OA&rDK;vghl9&Q z9s_c56^e|qB@oH%n!#3~mX7cg50ahe%Boz{Filobuod!V$);i0>%Vg zgb&Cz1idm`TJ^`SWdyx* zg!x}AW*gp*h9VBwmu5`#b8q`R?HGI$FD0z99>BDkAbk5SAYcxs-G}7jWrx~*?2ygW zvxXGWjvS}eoR7bkjJ zaEriwV2!iX)`xv(osmza|GOqz!@iJNNp0W`p!%PXaR|0)|;Q7lMXY5)9DPzBDCvlRyDlUqFxHB{4mUSDCYPVd=@ z;y|6Oefpl~`Rt@kScN7nSSWL+iORr(^70kX;z0(C*uxdV0a?og;7V8mlGS*~hbwe0 zxVzCG0baO*pc7pUF&=DLYN_l=s(Roh1n)VRip^*%lQqUz-=om9o+|JrYo`pWZ{W3F z@`AY>u47CQTC(H=Q&f}_=9td2V4Vr(HY*3$iaRn}30!0rbzFUBkJE+^h$t5$k;LLI zn56=MnME93uNP_oT?u)L+nYU^HNf6BSn0K1_i)SsQOq-9R3sB&U?9+mnDf|MbnDwo-v&N`3Ef z<_^NJr$l{4v7|r+UV%n}B_GUF?er(fvy@MEA}pmvMbrs|V2QN1v6BEp@pb93zBXGp z_4-}Lle5G#zwt!fAsep%1R(}|0} z6h-s?!o+;)$6zJEfoCg#*BoQd54?+e&I$lWE{+9eXR6-vvwb*Mb-dB_qQsRy_Qh6m zh_iWBq-o%Ip}lv|IIrz*+~g8^wzDnYiE&)*iTaj2sj5UzsIhBAH?a!v6X?S`C+in= z<1Z=q_c<`6+1_2Y`hWZ(wi}AH4>8#GJB5LYw$=V{N-g=hMWQozDuc}A!1 zb;eL>u!);Nu+CA;>eb%fCGLOW%#s*an7jVL@zM2?TfCPkqAp8la^$54Of|J0%<~p$ zx0}Xe6P`z^=Lauag7r&M5NC(|^cif_?Qo*TXEY`=dURBx<~G@7PCism_T4FAapbzM zQR4Uc-~v%+zBUP<2UPn(i;mA!fQX2y*?Uy4M@>gC zYDiM-DH+6-XOa5H43XE*gI;#tk1TS-$?O`(CtLwC<1N*)8Kz}p>)AAmO{1x8Uxjcf zI!zw{CNr185z|b_X%cauC#8J?G6gHhz^sD?EKNfkte1;xIN>)p(bcomh}h7|G>-VFEp_7RWfhQq_%MJge}Ej$(p*ExLI9~ zKd6q1a)4OnEL!V-C16JWn}GQ-^$pIy377;R0aN4O1k5ZM4y%7j^ZVV!EsOsq&3R6^ zs*O3=zd?hQ3_m!U6l5zJ0=wOJ8m(t_!9VQ!65ZbN>8xZ6Oiim|Y?XKP$V&W6w64gd zDtNT6+V~UY(?!HaSXj$5b}yI>a1>#408bmqA_33vfE;NNze2mSCkM|f}6^_<`I zt!C+`diH1Grzif989S#}vLTn`J?>yD;L7c8t~X}vNV~(Me)mGxAZ;n!bAVA5-8^ww zU%|1FL_TZ5dF=4w9FiBhBb2J7z+>TS1C*zXEb^<2a-e+L67iizL4;Vb6jPMj4zD@B zRSR4TnJnn)<67~*${z0(^vdE)s3#-!OLR8~)hvC35%#!9$rUY~4{R`s=g#j|E^`CN z%aSJf0*R~)%@KaZi2N-C8N*Q=z^-@naH6{JNwSEC%BQ7}jZhGwr-G#03-FFIk{?Nk zHTer_a8gMS1MDo#(&3QnGoy8swHZ6^f@AP6;XX#%V@K^x79#!yYlx;`DW=;DehA3Q zWPh9^+^^0AZ0~~R0Ek~HbIgN$zat4J9x0c^eGnWFMMGvDGpX}iw2sq;XhumDqFcL$ z`y!NL%Fk?s^a?zRCmv8!p_nQ&hJAH_$|&o)lPL4o+2{d#$`#VXq5cPZ)|V~)0@yPR zV9&o@sJL}w=5dU|Ek^E@VH{*8pKuNkHOX$G5$3*=nhGJs zPSz|fg3}G@$q}YQF?uur)>^s}h{S4^(*DiqQhApQiGRnGs9AdQHRo{-51j{?((T9m z;V08DD(`T$8+Cz23f=rezfu?2MO)R(_Id2!Gpoy3v`!+7mut!uR#~|^_>zO&0HMaq zR$L^g@@|Ug%)F^U9CUQA%x7PqcLy>($wura#n>JnpYT@tA^h^PM#u zC|B?QDiOfWwy8G~bo24qbn~4!vlBVO(?U%q*v0Y2uQW*Vy!I!ks z>zQNe$=Gu&601=0jMAX+@-4(q4v3=7U$MLZL9m{xu4S6$YbQ*(D&y1SDWdM?J2Y{RAIyQCXi$g(k zL@Y~f^jzn+5wQ9MF$<)e7jq%Lo~acBUog zW?+u!mQYW9wX0fgM?hVv5snF;rr?T~E)M!aBd%})IWlniX{6f9T98?(rh?Ea!Te2B zk?>b=poe4hCJd>5rQekf0n>6o9%4XD{y93Ouc^$Hn&pe@uP-EEtq|k=X6%=HArIa} z0-HDWxxLjk5OJLx(UE{HCKydr*!mZ!3YVG4&h@zPmIM9j{CKV7ya=D8hYOT8TvKL= zsae>cZz8q6pTIaYVvI$sU(qN)A9M|uM@S?fimQLy!?pn{u45GT67lV1JKUHM+~;T^ zdx>sPph0Pg62@|XoDatg$kTz*JG?%Z?D`%0#4X(`82vf`JE2f>M-rTsqSk}I5ic;Q zqGLWM`s?)$io|nBN>OGllicEASPsD7F=*w(ApvVDj+@GmP@o689kSO0RnRl;>gEJN zO9WfL&IxVdjzL}~@UZg1pw6Zat@^gi?u>*8Jg59G(AQDG`l#zh8_q<6r%NfH%)n+y z%`PsI@mLrA#ps=r8N02ta%?zpB7AmE zrufKhK-eHa;%ioI5g9^2$XHhG(_*&st}NO9qni0yKV$zyHcF(BytQlUU)7r3zrlG9 zK72ujRDmx@Bv8Q5{pOqXQ!MZEjL3rYF9A!UKb)yv4ym2=ZF86ky8EJZ?j)qhfI>m< zmMsE=6@&Q2ju-=L&o~lP?>kmL+*Pe)l%5uIlmwE*{%-T8H2h_9<=Aiv&CYa-InlnM z*XChvN+oiG=4M*zE}qI+-TPu)^N8L|-?snQGfm%KMcr9NX*^FB`|^E}A=cfwE@)vZ zcSDZD^LTsaYH2t`EVsh9@A~alrkIJ?<`z!q`OhDvh#~-H{`w0u|6hZcBK$rf|DQq3 z*N-LzWQQ}%G$K6B-#(;gn*VU}{c$VtnwaHfN@KD7aKolu`vw^&fS7OVKbY^VL^5ql z^fdzbM-f^xT-tv`W|sJ+=J>*{rAXh;Y`u6)g40yr;Ih8snEZ9A=UG}YMneDs8)+m- zvl+JzdTK0zsR)UoW4gK;31jJi4GEj#|HLq%)hitj2)W>FQgOaOjuI!n@Cz=D(aQ;( zO20c_{4k2{!p=x{NkiwvEEf12iZWqY(r%RV_jbG#<~%@(W*11&)U~tXGPq=#3OOx* zd^KjZ?IMr>LqR*V#mS>{)6up9?>dfdG=j?G>g!BVz3npsyfS6l6b$tx4Fk<*UH{zO z?eFdNHCt)F#v#Sy>wk8yqiVpGq@`d?j-$Nj>Rg>W2@@tp>`iXW-KoLRO zo2~ylh-n}pQ$`v8ADvI_d!X~-r9V~MOZ|=|6T!}vFS+^TgF0G{K@_423BP^urq$(L zdjJZ_$j06L+)B2j4f!{E~ryH&)pZ_Ao?}+OjWIhFdWj+>AnUB0z|H$trvpB2s5*1JA zxrWO7c_X!C(Z~5&d3-o?Ku?*EH5X3Ks~@WJp`OLzaFrGe(~<>ZA6uC6c)_LbKj6Ve z5XXdv1)ZYaAMI09MWE2ivF5jtE;0>@@T}L z$Fr9YEfO{eTSjTZUUH>N){;e&)mK?g*W@jaCj@NTAU#s@j%}zao?yN_(66K*& z0_-GaNHj9ZJB)wxGV>A*x&!@dK&iAHMnI?mKuIT?vQs8C4u>FyhK(o( z{G-tsMliQ*Kq;`C4KJIx5^Nr&H&YYRM9yob;BN(G;z8IV;T?56*r*4yOwRIn zKdt=(V3x@SCQX$2+}mg0R1>*8eh%madNuD2UdVazqIT#(mIs7E?Gbq|PjL<;%B-(D zkBfvCbg^j&>QlRmgwwyG-KQffRahMEJX4INo8B zpr{Hbv{@M6&8S610~QKG{A$#TJdiQ5_wSnJ#~`Yxe+`RT$l^JJTfkj z?|>MWsIY(%y% zOi!)j%lg=7J14r6N13M+NWB!ZCS=7&`rCQK-zgWq%Y14V`}3vDtBA|~ffZ-6Z7h91 z*}2(t;JbHe+ZgXu6PR7;d8^YD%&oVikrfqD9E7d6k|HsOfvouRFQcZSJG%7CHh8++ z#xq$pJYb~(j^B-Zyhxb;{{)qw1o|{4x}{aJ2~}d6d=ML`vI4x0S~!dPVf6R7vg-c0 zCIN(l_p0&*_!m!)IbSFPqn}xTGN9}Ms-H7K1wZ0CC9XEQC@}Thulzrff*R`h`#(MM z_rk<=tnJ*WDYD;71v7yDA+nj39W@INl4q9DjGd+Bc1fI<{WOl%Gwy6CG0x+2!U+}p zjKK!#b4b=}R0K`ahmXTMv{zm2ysye4_ssj^)g{Ns;^C8e6c!15M;S=iAFJtX9Ew9C zqo9lACVlU#s$`rnwJtWqiv<~3D(Oa?(Oa@3p6lz+GB%JbIZ{5dvf|t7PhdECL#67A z!N{WekK6~&YF+*xxld{u161y#mbi(JVzn+*miw8fhfVjZnojPd2Vx#XA{6upY9jLU zt3;j}y+MttcbDLRzlePl9Z~O2(@KblX|;}U?u09tnx?6CcM$RA{+$Tv$Ow}?q1tjo zNOE6(Rfm)^ENTF%njpf+h@#er=`vGr9Wf&dhx+%RP@C%#jt4$N&GD>cOu*Gh!rt^<+ z8KTuXFfKa>vvG{-eUz222FlY@iiP`zy|3!%4g82oJTk(vlu~I9=AqZPZH|+%GV5!Q zG1NITRa+TBHy=Slf409zO_fic8mxfoeZ=)=%L+aLdc0ETp>OaBwRW}=nrt~zVI9w% z)g4!23y#7zVu0DA6Bk}z0bXESit^mcPe*DxUd!i^_S$gyRraRaQQC@}YC26o@gte; z`TChCeTwp1B?fZlY0RIW>E((kN9@I4a z*i$0RQqGjcFH1H}kJ^k?US?`iy6n9+U0*95UN6%75r>xGlTaTW6%HRb*}feX|+XmwM)Zf+pi^sd&|a)hx{-2VO;>b$P=quewL$152xb?=jw=5DCHEoU$_|I> z#?z*I1*Nk!32y2?o=XoaZmVQG@7GiCTh)K1TyK9#AMrqmJ7&~(7_+05N;h07(@*o$ zcBm9R(k-NZ2OKn~oz)vYA6u)xtz@n4V5{wr?S0UUj{?m&-9Tt0+uK-qBsvQTMFtCy zWQmX#g32K_Y^y)=15(oM`L@Q}Q zw6gvmy}0$VJup2wZL?}DS!G&nDIIwyAoHvIBft& zz4EWlC+@!l#zMz)*+Bo@*?NwF<)&4b8Uma!m!I3qwog<*d3ul z*SjZ<=Kyi24>-)LLUel9a651d@bH?1mJi26pC}x4y_c+#*+bR3s1YxQ0fXr6CDb5z zVI=*;6BW}^(#iJ{?o3Vb zbgYs49q`BYqDNlB^a>LG8Tg*l4(sM7`emt&M9Q|$Mv|13@VXC;Kqe;Y%VfEUDrgk* zIri*+1|9Ht^qP3kmy?(lifC>td4+E(k_FHFcCquZZVT2KwE4tevdZ&2Z}veBpy_S= z(P8_p&LMbOVAh{(wllw}MQtzpJI<6+J4s-+NBy0?=(*vSa{uHYE(i-!wDa(;N4c?8Jv~!+U*-NvHX$nmY)?x+7%gW$$7N)h%yC&jA1YUt zcr#ilSwBMXPf}*35#)IZDd{k?u1~zW19CC}ooCMbR6r!BBG<^ENY)qNHwt_eGh6-y zt3V2zeTEBmH(c9iIe|LqxojX~VZxPKi6B_`3rnk@rL_xLZC%l>n86XkRp4>*RpD{g zK^h-TG`CSGS^Sfvs@Jq5?x-y}`JngJ12OACZmzXF9g#c<{F9bbB7nQ2juvqZR9s%h zXoMCHOqfEiUzWQ9yQ8w3JjmrUAciJzn_&%sG{B@ktbH&++65VefR%unAPsW?KP2_< zo!t$A5NukORjPPD;%73J+nN7lo-maN3p1Z z zTA%5>Z-X`zIk>}S=*cEzOb-ITVM^LL<2;-iIZf{$kNJ|)fncZNjDH8xS_TLT|J3x1>+Uu zB!h!os4K$sbV$DN_wkL&A(z-Yx@SarZ)N_s^xX97#X`npYp(xh-RWNO1b;S180^LL z+N#hW<=Hp)Wzn6;{ccw|H0=g8QOws9{(5=aki7k0d(QXuN>pSO3AgoPI*LJsb_w6i zjZUpTq)q3awk6;g8|iMnkpGK86OaK0eau4qmA!OA`&0R9aMb6kTW_0N{(rrT(xBc& zq+}x9-26iqJ40p)Fp&wsyJ+*jyo*BDpcs^qN!sTjrimJ4{=>@m$0>INaq&X$AUtQ=_NF4%;TaRqYuDkouVZEA_Dr6B_LuIiH;mGYq7LR~SN||q z)5@@jN|SyNBP>jqkle$`m&BOtu^EZZ6VMHSsmToUH!(-upQwh)d`Kqv2L6@#@ck?E z(FZagKcyMh+Z#hsyCx}(?Pft5d$+FT>9o?OBO);)s$V}lzdN1DRuEpwJ!Qr#2i}`m zoh3U_*X>TfXDb^&Sx3wPmCtVo@qf}XK>^E0`GZB2Y5%5Wmi@u`Rz~o}z7Mq&i>&ER zh-*~jx3lw~glm^VD{+%Om)5a7WmQ4x3J?Ez~VkaFlkz}QEaf`%|LST?Pt zR9J+p6DxfP-UpX6-C?X^N~0;SIn#b -lxz$LPduk;m#s5Ja~3JzQsp1Cu{Ds~g6 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

    tsac()%va;T4W zndfraENYP~n#QD+J0x6OOGmjBiPk@aS>|^6x{|`Jt@$Rp_-1oc?*8r~{m@!x zX}ynB$NpT@EVw><$X)!B_s#t_uXU?5vcYg43p0(Mj{H0L9~OoN?6p|COw2SkDrH#v zAf;Q(H;{Y>|LJ+8;b2520)l8UO{`!j2HH)(?;A@-W|{*(Ozy^v?>;SxtleIE@Jh;J zi>QPKqUknz@8C0zqt_(PX$PR+w4*!D9MxY|J(=2lhK%HuEq+G#h#{UZidv}SVAuG{ zQ!vP!-X=noV$(?POiv#4ZsI?i*kv5|&;s*t*LYB{+VKzdk?NcFc88Vt4_9r>piN@H zP8Vww5$LZ$;%u3yB@~QKmv)DZ2-zQYjKt8C>4PRT8#Sf!PONTF0qthiKllVf7*)JX zfFLSDyJSg(oV^Vf(1N2B9MKetFzWb4Vo{b!>XM%sBUnD+A!xIEd?-TZykVP9GAB6; z#w!w8^+gK9DgIssaOLL=R-3@G9V|m#X?U&+jaCZiJ29-LH$SCR32}os@SViC%QAiV zZl3!*Z}^w8JfySL&cqKD4j-eCBgErL=N@_rVYQ(zL#kFKjA9onYk}{<|MMP<7`F#O z_UUT_MQQj=-=~-qF|2Z6UfG|cSZyTAvd@%3W0|rRvYxW%F{OXY3qg6r)Vp_L^>9Gj z_~|zGt4bE*H}Q0P2MFQtR0Zy^oK1nPtTg<$QA4f(&3+AL zjExiaSmarQDRB26Oed-mL3i@MKfDtQskflFNj3#di%f&NB?;u`K?9~bLU|i$_<-l} zaSSz?K5gaqU&u7yiGkx+@3bmN<$QYQ!MejjeCikwGMOs_ny3c|^u$t<3bH zhQBU*H&0zMyG=LCOs{=`5}Uvfe?2zlZ_Z!l%Z9>r9sxZJo-YM(TPWHhjU0 zdNk!-o82DCT&^P#X{j=^G^tWqn_kXdtvs`06vnjQpx*DAY66Pv3CX;iM~Zk$A-zrbhNU0iDQ7!hA)I%sl~yU{$lTqL%dH89`Ed zY{(n5fl}^IB}7gtj8XcA2s-q^8T=~rfPF(s0ongy-#%Oz!#(5c0#0mZm~A5BOjU16 z4lZ;Wll2X!D>0NVm|J87yLt=F(RG1%*A}zO>=u24n@nhhcN?ab#~K)SE?~F_eh7+W$mA5pk{)Yho?DsCqm$g{=Q^ZlkTGWg8l}NFL(2^BoT) z8qx#jMgcgt_(azR)9G^yV6kv#S?265ufKZmTQu!=SE-!~e!8ORvKqe- z-tdEH2sGgL5kc%JJwkW3eXJDm5Utrch9OuVxV13_U}`V=UXOv=Lvb9_G#`lF{1-o= zU@@-IfBw?0kZQ=e!Y(x>Ct82CaQ8|bv8%T}=8Ph>Vm;*%1#8` zzhKQ>y&ZLht2XA+)Lp%Q`L>n6d|TXKzAaNGBJMBW<_lAE1siuI?l0fAiDFPE@%;tM zjL9++QN%djmA+pw1q)z|CVX+rykCbWqRFo6J8cB-CqOEsT)cX~A~;I~{U+1+L-;#K zi^dP_l`(OV$V|AgIQ`Xs=c^?(aK7@_cf9R8T(6vVy*_Sl{4j!HEaKsDKbBlg&GBI* zt@wWRxolO*NWq=q*v9qJ&65jm(YdGIwq8eBC)?atg4o;p%wAp^3+CLr6Y5$zZfiN` z+Zj4LPF~1}2L`Q}{(fw}-8$iF#nR-Bmn^su+teQx#bz$N-b_(bEwE9ammfA#&Cgd# zGrk_mVD%QCI=(;o<3HDxaC0!hRbt=Wd{>=}QZjMhaC^{Kf8J~v!m{ox7YP+uM4fnj zFkotZUGJQDrmf?wy3lZY3R~Vj$7xRCrc_QpI9EW`S^jhpkLH1jW1#M@9UWj-+|9JI z&6hec;jtg<7r9 zD<|CnFSv92<1fz5-a_N74o&J826p2EkUR>NnzJOQuEE- zVe=ptGIPaAtYlyB&7}a=`Sq7b`1c}KAJ${*bbdpZ*)6H>j@f9+!q$UXmyf%T$|O9F z&knaw+h=fa_PxU#ZdQ`XRWI&=uq};!=&BI&=w)Mbsh@L%K_iLb&4e?xjbhsLm|do#;&kb{V`vdsw&=P)*238b35r(qPK$1r7|Fs1`2GaHy0~hrxqYZ#9H-Cvy@t2QOyv_rT;wnd0Dp$>mrIi#g7sxP2cH+Jqi#w zT)~=rli~-izJx=q*uFvJylw2D0n}&C2hqt-mKs&C?q?l**H$M{!RK{dSrU2PMaDVZ z?PXnA)%RX4u}6N#{CtxmaXHinthcys#Mn*_t2?Md#-e8_w^SgLvyUp|DSCEtOONgJ ziXeoAP+*xB&iMWLu7FBS&m(k@C$ zH8~XfvSgIwNM0?SE!rR+HPzTCJEY{!fpS zOC%SS!KOj_?^B;4v&)d!9pX9IUGeF=?s=tDa!YAs(+P?99NB${%D>WmDa)gMVdGT%3b9 zNS#T@;X6N0*WgNvZE!49Jb|akvJ}b!cq;*Z zln%NdP)X42I4NgBwKGsoAIk;>ObioQ)UpH!|MN{nUGrs!rSpfcG}Z+;a8q4$XB5d&Sd(gv1X zW*{1@Mq)bsq(?$kXQRbZm8=s}d95<^rv)Er{;?Wpy^i|OEmN{jUnS26a*xIRkLWpOZpc6Ii@TYhZ9%XKD0?o zMa2AzT??UO0Qh^cSSSb6pwa+Xk}57pg0A3d^oKSO)!9s^Fx`&ivT%SzWWebb?O~!{ z{~QsdR`ALlg5~X~!&C6y3MH*=#;L>YdP9UV7RTxFBUsscU^qdPRRFe@0ddkgQ8 z1G2iUN}y6_fM&%vyM`nGDnDOUxf$Dfa&XT)6(q}`-Yt&fVIEo2nGk@7iHOLUq_Moh0Ca9iQ!Jc}e=K-0L6o7MK+)m&D{IFjh+>MdEjlhFb@*j}xXNjUKoS&d~J zdZ%$PZmdwx^fR7{Bx)R3``wkut&!6d04F5y>dcieIPi%95F`!5EsjgMa3L$^136XSWj-mVv1 zDhp#>=`Xpd7n-k67pNnP!o9B%3an3$3S#GYMI^s5eA^E=BJzbLSF8EJw&EN3!1tFX zT<{%wY5^Uhy!J&QWf%W+cULzSF#;!<#xtD1lhmi=1B;OWKs~%}%`Y@9JWDuIb}kgv zUx#q*&pvhhBGxF~Oj}EPjurMO%_WUW!qsBL9G9 z+w)WfzOnipVw-wH^5iI)F;|Ai8^>>7e2-Lk@O0yo#;E>auB$p%%F1gki{kibdYoIxW|gTPpX^p{{=083oJoUn|UB#!v%7{7f+3<@zC0; zc5?vjUL&03sBD&L5|;{&(Kh<0n;6H)RBNBlf1=A}_8FOAKi)LaC5YkqIQ$CTigOQ; z@(CS;R$S(Qa!Y7Mu==?JC`UFltR@=HExiX439AX0bN8XN;|>KV^Kx&S@X)HO?(9FD z{#d2T(R=D8yn}-7(&99OrV3fkoPlBt1F`RvzjExO=yh6?y!6Z|e~0w+Cq$v>Mg;G{ zn+w%%${%UyE=!3uIco8TH{pC2{Zkiw8tJN1bo5lTSNs_k629wj@3~_XUZFc5Dl;ZW z;qSpVU-8gBo6URPY9T>oqPWIY3Q{E1PcxJLLcs7qZ^~Z?tJs&f482x`%lhN_VYdtq z?a)Zk!ZTN#UiuXP+5|G}9slZI_(!F4?I%4&`x0O_Y%u+tbGcI9b%e3o zw+MEV4u02js$m{!`K~9E@cbhgWf*fjx~jhbDTEbERq8QFY>Y|Fb(Kq7grNu>-}OG# zS4WhSK?;u@?69rB3=3{F4ZZrI7a-WwJN1QG1vxBk?xhMx#D@-yH0BqBYs#f-mvl8b zi}TBt`Nwf@d7$Q|Udixhz{yFkg`@y>V-N+|u7D5L=a2QG zI+URCRTS6aEHfEFF>-4yg!{qg8Au3=10Hf;m%Pa~E_7s^>-!mOj!iME<#QdA`eF2+sjTAqb4_&6D0eXjh^^vq9h1Uf^s%5c%4w>9k>?o2Do)9P z49inW%*DZ`z(1J>)gRr8%W6>t{q=wPYbxl@Y-prSG>bb+Dj^PRNJv0?mjJ7EmN^<| z?=F@$n}C~Tvz(DUY)A6UTF4Wir`9Iv{Y`k5dE~Et?|rHn+M0@-f~Zt#bQI-T$eKzI z{5d*=v1OL|-9?Z$xvo`QOZojTw7w#Im#wtK6Wao$R3t_t%UR}63<$js;x!d?0I+({ z)IyeQNSuA`3Vy+;nqmdTXPIql6ze}d6f2&!JQNpGfM@g!{(M{56Q{E%#z)ZU60m*zwqwy7 zwjck1nl5oKrFS$dy+xzTEM-8;#kL^6+^emq?r!zsSYx;0_7XP#!zAE2wMf(b=DTm$bFgViKnd>o<~xeRZKIV=<2&GN3vVWyi;c)QPJX(mq};aJ4GDA z$D`M$!yJz8gM$2Ut$rz8EN9uJ&m=sMn{98+F(@|W7KWZ(w<9(@Tk+y)nHc-aORVyL z8Gqm<7UsW}USGtEDv%%Yg$zfSgmvL0PwX{m-yff~bL`LGR~Z(kEaXV?r7yRTYjKG0 z!hS2});izs8%;m5J0HtQ!`Ywsy7N))>TLkg(tg9-Bg}$?K`Lw zMmIy#{n&L-+FPGk#_+LE4D!cRb4~fv%fWZ6=aKi0y=Z?3mp;fwU94>0oW2xYEZG-n zx;t3o07A$ALxS`%F5i9d@ce$tPB-b`4aAM5Ia-!lJtbr?HwSn_B*6tVuLL}m8-Ys* zW8{yXNK<9emUCCnTfty%r4;M*hCZ?Aj1sBbM_B`;Cy1N{6VH0qCYot>+Ls-!4}=NU z7II4Gv`}*ezLf|p99J)uhV4?@5huzGrhQP~=j@?gZ1jZf_t!6orkZ^@URQIvq5fK4 zWOFCgd#;fECTTldsZy(zR5Rr?Va))u=kmjke&gE@_Enz-(`*8UK6-m?mJCcyr-@dF zI+c+&pRBK2kbe^$56ue6YHs#CJ~V|zT*uQLVlCLMyw;(=KRVd%O4C*iTS~6>*`>YB z=sBt94Jy98Ph&nkeS+@&ie+mgv^jHpCbF5XB8I9c^)1qEmEmW-dH(H@Wm5snX|~zE}ISY>bx^S<;BKFll$;_hh{>=X2GIrl9IRJgU@Cx=$>^KgRkB zPO=9%az?HP)L;6QQSWcP+nii&Xf>+r`n`aFZu9&Z5Bpf`S^qJCWHQ7SxO6A-o~h6 z=RqZcVBJY9mq*gi=U+eNq`d*B-lT(3Mf!swxVHaN!7wuQs~)7inWcvU=wWlqvNz=% zXbXM%Bt{uZU4 zR=w&0fWhrsQRk?lHeRN}l_8kVzWlVk z%V?@j%vpL)S_6yf5J0P%09y50lwUL9A%KHef|s4ubep}nHS99Ac>=625F(U)jlw*S z^E&!E88j~c(DT4ad;Th^N=#pL+={lEoVMAWNxw!llRP@@fV#YB2Zil-lISaCV}>;q zj?JTBN7aJ8$zk&xYI3iF7X2)Twl!ApYoaoHGxg=_wO|!dV;IhA;*MH=?~2BLPpX-Q zFqA6vK9TrV;dIidk_~8Sk_&!`<<6RRD)2B+vC!8pUUq`A&?F7HeW=&yqg7`MGH_fe zifE7q!3nQZDuelFA>yd3gX78QjDS6@fal76LbQcD%&Nz8hGTCzzzw%g(w3UDUr`kDS&D#8%18p zkA<^~dyRQhsllaoePdh#P4H6tKYl(fNs&}$rQe?QdB01_;(UR%=)lw2`wiZY-Z}15 z@|!EYZphxjW!tWWU0gk)49DINxg7llKIJ$;p~T5!x9IQ8I2S_r{xT5PmiFK%V&yng z4?VQ@tbCzGT4^cr{NAkXW$!l8yY(GOi0k`=IZ`WLQ$U#|Okr8^>;px0dkk&lpy zNQwv60cp0wUhEwt8t80&{6?b;c{-c-q2+u2s~U#9j}OJFgC>#?>C9V!2a~XT<}UvN zvGDKt6tiJ=y|fR+baC3t^!&1aC^LTxMow-Y2Yz6Pe%J1C=4D86gbM?=^+~ zv8$=f#DT;ClTJC&Ud>x8p?qeX(|X|dj4q$qJeOL9trhfSbSW$$hcS}Jo#3I*4t)o) zLe^O!=l+qN?_}^hV0+m?8qxs|F^t0}bf6=U7N>Ik{Z@)ldHhP>7558~#uwQdCE~`V z$<}n+hDyvd=5Ff**9$z7Tffc8&Ps*<1ojt7w8v(VxXcspiz~I&y2VV*~Ja$1RZE}zv z6CdZJ9a_jU0xcpd8ptzDEu3ADkZa-Xg9KG8+JXj>)AG%8{YXy^!epbkAlCr*9)dC3 zC_O|E$(h`oOd)LktZXQCV)hfGG)iORc~t)U#pgaNQ`z~yf#V&^!a+e4%Ye>*A|g)N z6TP319|t{>mlhU~e7L~(`;X;wS5yroEy66HWphO6#bMyQaAJ!hEKt6n$O_3-%W0Lw zN@gQ0cyS^0F)R;c+aHbbghDhXntWQ%ky)=8RZJC7Jw`{s$C$i>`CDCor%kyWbq6!F z{;!LBd!@qBtUlijKT)z}bw(931%^-DXjT$d*=mNb5*|FwAUZV z>EAO(>BXVz&_B&$Qb{_HmS9c+Ssj`5&em3o4@1O+W-YJ7JIh$Bp%nmd381`hQS))JVr5bh( zeFpHn>QzdGdc!7VWC|4nXRIF?JIv%@?0)F8y3=B%8hV9&df3%!i%dXon1?J3by`=5 zoKfZVn+abZV9Oa#A3BadUWu!FA)!0O_v?LOd}8rr8ZhPz!w!7_w68IR&KAmXTEV#T zSWZY>HaPxBlmcCCJ?~FlckaEk@p?pAxwHs43asMgetMNFN(mBSIcjX^zISg5LLUf} ziPj8oG0h^g0a)F@R?)keolG@0b)<TP57V5` z5Lq<8OtGQzSYX4!Ua0ufYrMQo)XBGYCNf{I>2uVs9xW91k1~54o}A> zJ}*QlW_W z-79TI71g?-F-nL})Ed~hDkiT?D+zJ~^y1b~#Z_EnHoM-sjGK2sq0?m|Mz3XOM zi@T!{qIH|it5KBGYmAn$5tdprClCLF+0Q1Al&vOS^u3HTXSz=WR-MJ~zmOMGve7l~ zw){!HGT}c{H%og~yj^jKEz9rByy@71Aw)r)#_lK8 z(;H@B1~K;;A(bQ)K+RNFX_t>e$JYwe-WOIK+zpxM9G|VbBgPW-cwAiE}&E6NQf*VNn zRcSEvc&U55jwW#-waBpRV7jqeqMV|s-_nVj1;3&vCc;$w;g1{;EeI|>yMwffi_Ct! zaJ_cAMC=Zl;C=h&vhzn$lQCJ)^e{bd*X3^Bz01X|^?Fjk5bx(%L*i)FL0V?wSVt>{ z(7WQXl%j^zk_Kp;_g6FLxil-Mak*;IXzy;x!Kz=E_UmDStfhB5&o`;k?B;G+2 z*C!E{4zu^i?eX?Ud)C%ocVqPnR6*Bs>m1r1mL5%|l#W(7N7`ch-2HBoB_(Nt%lFYu zxBsX6m`+y0X^_rppK#(@0Y71#yR7V|%3j^ruVJ zZ~Jh(9$x!dMu0vsUu~F4|?8eHI(BXU7=R9dxM)KXaGQ z2oxru_!nfLmqG`1B^YtVx|k40?LXDVYuq8O`lAa5p-AsN*BfDQ?}&O<2Ae)6(!&NR zpxK^A<4P;vl7OCu>k2QAOVRz>-Ae@bu)zRV3sVMkkM+qs!{*oXM-P55em!@5=Y;-t zDu=%gZ|FDj>@z-_1o~>a)E}Q4U)!9q&rQ~QcQo0~8O1BfQh^G{8>sKG^Jd$^E&16q^QC?Kl;+nYckIOfQ)9Zm51!ud0C2Ti!X#Lm z|4643E5xOwx{Z3Iy!{v(R6s7)BL(fps9^$fvL4BJe>BxISVkz;Dc}wR=Qhp_cPJZ} zodE@S;Z@u)m)x&`!9p*@x7dP>^U3_x0`S9J==s7DEPU~X07g!y&$^TZFmi+GAQyUo zktbEtraoZgBmx{}&rwnlUx`Eq8~c{Kni?Nx;tnCn9*;(>A%iAwm!COvf-Cv7kA6K# zWm+t5AaDjlCj2Lo4>rcA(GTJQ6@_G<-oV0xjYCZ)ILN`2;woehvW4q_kr|k3T!Ac5 zaGwSW?!m^r|BTEG)A5GB0GM287<`PVmy*C4C+2a#-!<-#7QyvT4O6=@{aREd1_csg6zik+4)PUt+^6RQ)d;W z{S#M7A?x+u*uGj@9J`Y$rveD>rU!>S99qWHx&sM)i1|s(`AHGqjq<-6xkOB+scakX*4=*95+)FZ3e99wK#rT z3$!F}qR%$~%$$RD|CW6lYRDU_3T-?~Z-QGrWtHJf3bl2 z%O0lIczsJpYS2NaL)9I+?!rXFB9gs^P|fM`9;Z8$WtO-Md!0#`hNbwsMievfj=c0W z9CMUT0K}=~FC~>W0iyaEZXMw48L>MQeQ)RKBbowP3T`zVAaYFv#~g;~RJ1a^-Z623 z{$*+q;}$CoK5-C5o$I;o@Cvp;?T-k|rd#Bn1&Od@<=;O=0RCFdws^x#n13{AJx*A-_AeM)gWK014l8Vh7tkE z!;fJQi+RHuA98j<7-UC*OloHX>xq*@d%+~kJb)4x1Khnm0o@8Xb`kW5UW5+-V$jY7NQKg+WHK;SZ_2mzr9qk9BY?r0!9^+1oB1&&g7FfIwG zj`B`h3i#^(nw2H79WawAd~CvUNaXNy15RCP`X1ub@w5~es3knar`zyR?J=3Ahzgmf zh~g&)4Sw|LV(}(AfCgp>9avUe`@X7xA1lZpK`1jO^MyeqfaW4@D_bY%n0AvpsZGJ? zf!gO*Z&8RBK46CZWuxv>jnD#BCWjAM><;?4i;Q*7RwnwR>mbRv1;4+5%5$a zKTQB&2{kbBY!+3;#ag#A07}3hOVD~3?1he*k7;5qaV`_YsqNJVXE%++z%7lG$Wt6S zE275317?2ZlRz`+@B`)_Nx-)=5@Jcr*VS`0rdlqqn)it=S)9hg1q5oyPvxSXn1FXk(zZAUIq@X5nqE)fI z*gXg8T=siuG33 z=CEVB2ryREbPB|KmMY{h3m~V?Wg=hMV5NSXAC)n~; zExNx)(*FOU*+~2UrP(N3c|TEqet-Bss5!?2Y7STYKd8Br;QkWaikAIA!Ap)Qnl$Dc z$VumE36o8>y@zPZ4i3&ieAM+6-2EzSB2x5rArH$I-z1p#?Y^)>+{>yD+CQw0&t)7h zws3VK3-=|%NI$wp;QiqUJGg|Gm4*|oa|%aagSW1|E$vlxy=l&KJ=M9NQE2{uiRukf zj|F$Su&MdN`Z$^{^K`F|y)Ql-T-7b#tnHTIQ0qMKZxr{JFs38(D8e40q}L}`UlG0Y z_cT7l42?jmM;cLaC3{M`JHHAA%7)(IQm>sl%JWaLJ2XM}k`?GAb$T%9f<}xGui#Ne z2R;CO?nCAB?#qX$bbw3yR?^_y_Qh(@uF7!9qwgs`zLWMzj=gRs$G78^jqSph0dFM$ zl3l{2qI`6m98@iOKd}wmwh5&;d%GVW^Yh?-d2|v%;@uEhvUO9l?lxL)$@pwP`8-8i zI=|@LExT`7Vx2|)-Z6atlA6i!Zur+(V;ZC5+PHZ0z3?rSr%Ai=bD?rv>c^b?lbpD%(Zk1N9*Uiv&Zg!=8M_lAMU8j6u=VD!?(X$(GcI-%35H4< z6&Jd5Fa4fu&Obr$zP_z)7A9hZQ`H=1le^3Le~P;5xG1`>Pj?9{B?5{FEFm4zA|NOs zuuDjHr!+`OiXh$H?9w0&i%54j60*|W`3}$X{66m=JLlXp_ujd8c4zj?x##;G$VZig zL{(dIhck$DxpgaZI8=*JJ0{mAkZuh)m%89rFd^(P-JTYgeaQPcM)tf!Ox#r0VS z&wXnhT{|&v+iULZC1UTiz??zz_-w4iM!8aKk6|?!cfXbs1wnJ^U$o>$DsT@7%p z{0thpnk=vUyzz(KEq+MkV+O7wd8eFcb;Amhs13^>UI85kB6wht1=0^kHFSq*4+Mj6D_ za%`vFTjd-H$45F4yGcWJxPVvPW7n?+2rtAM8?bR|B6L0ep1J~)^}BY#`LP;+xlq|b z1K8c2WzfD_!0Qd77q4_<&a;3auvrc-%X_&3X_Qc%3Lv>5@bA_vklX;A;n~`+i3hsP z?}4v`9&p;k0jI6??|!Yi&cP_g;rUZwc+D@)3~Q^p!twQZffqtyV)^ax_wPSacS0YB zMR-cbD?Z0GC|Af|eU0}d{K*EUeH#tllEtE>{~~M_R8dYLc+ldx`$Y}-NdnpUTiU*x z06uscV7dC%VQdrmE*UfR*tNHt9&~G4uIylYJm*?8VNk0Y^yuNgV6lXiN~@qsCt)C9Nq2qaxqn(eyI)x?j4zkU2!C= zkB8_ZE^a_@5M(Z(R~#uQ1;IOftcVePZ1kYKa6uG!v)Nj}Ne_``ZpXYU@i%Na=sf zss|wR2MIU07mq(jv#?QKJZFrM)oK8!0!As~;_2tWsr1AHk*bNT`7Y)U}E)kn*#$pX~ZcV9woHpN)jhRZA@ zMn^wKj0RMNkCG$18R~oMu}wkJjWz`isQ?)OIM|JveHp8tC=N0J5PKwT0G|oJs_{?CVV#*x*M8I*oQml~RWA115S>5qa3=>fwH=a1_5 zx16&g~*B0AAc+j^8236a;v2F4rGfV5bwxDo|gKdwoS(*o;N<%WuZD zcl-Gc@MkFsj=zWwgPh^dM*a5RZmnp_@aTXnmo;U;I>g(6c%>7)0f-!_J7HP$ZeVF( zTZ)htMoTa)tpW(V{pR$+%D$CC<4;b%K)J_2K4Ia8=;97ZdiMc1(_beZeec9MO|h&G z;PNOWT)K4YwwzPS^5kwVNjuOo>YD{59+hO1F^Y@B80@*zQ}fu;fD!y$$oi*?P^>g) zJehdqh~#)l%yKry2mDenuDIg&WlMUr_Ev)R+5*z6i0u(G3Ve!z z9Rs>%Wc9N(QP6lBU03J&#Z}>dDtN1oV0)_~t4B&yi+~g)!EC;<64jc12Q0xfH$cnj zciM={p71Y#$B zXG1uoMop{V%-am}{u(PuNSbvLGQ!PysNA88hnoPceeNf5^Aa~WAHso4H2pNIri6B5 zqK%es&I0mo<_k<(x2A;Y>&hHX4D^Ay!-$cFCU$c1oNRwp8Bo~zOWb=O>PF_d9I+V|8E zntuP+HA~0?lZW0i{w1)&qy*EBF^e6ITb4EEDzysx&S}lMpgkoE)Bf3v=~sgx^SIOs zxBo?{%?Z$V&1^n}lm%qFUB?m<9dD*y`L5D1v8<+~=QUT~w-j{?h#cRCA;)~kx<3?> zEiJ!>$E*OJ$juuId(Kun}#Weqx%G-|;B8_#5sKuJ$2oH5ho53haHk}I!5W?gB>T*9>D zym&=of_#W?tzp#}TT=_hd|lVq*Yk2sPKu`**N+_=s-K1AEI8~+d7%FImleR79MeR{ z0y3}TvC;O;ex&4qod>5`F9O>;Cg(OR=9X4uNSI< zG~+uSNIafWD!{c>AHYW>u!M(@C*iLWrmp31p$tuck|*7#`}lPjL>O&vQ{?-(x6!00 z-$F~E@(XCGT;D81`sw?YD9zd@U-z+~rAzHT;x{G+lb$9h!L0jKFKAv8XvQ{?jV5P%UDEP4wjX&gF+P?|HToqPf zlI0*I5oRYU%!$W489_z>{|D+|#s{<}siz3Xf^tw}P5&GP#sfed(ku)hN}J*Lm~{8} z{OGWRo-&9ZLIX8t5!hY*F9-0OhvRPIU4rP2wrxY!o&Uf# zm@%Y*@hFVX`dMNKQVF8KfTg5C)IfWpq?HHzbeUhf8z%c>KZtOPwbb$froS2)Fz799 z9H9reD1{MF>HR-z!oPDdHThfE&WImU5vgW({F1D%*mi}2nt_Y7T$FYUimZQTq@XVS}V4vrSQtA*T7RGz6e3~HK z7IICHyjnZq+=mtiph&Z(Xe3qvCJlj+5(0v+C)M@+ODd?$tCesSY=;=%vK%)r#!s?7nNnP>ycr{4EDF( z%-U*L&$60dFAxOf!Hh^*oopGHrHD2jbSdl?e7&#M`W=m5+gWFrLJK{C^>l88F=0Du#m ze9TlZXnqg~my$1;{_soX0BmuJ=H4u$=H5_?W7-37-+f!7vzDES+|U8c-CX1+6s3nP zVa;_$?^4Jnq>jKv@S0Zm(`Iy0vM_#I6TV4hD5;D~JWcWlJcW|qe*o=HA&W=CFA;lm zA#egyFP_J%L1jRK{F9mDm3E&jMLliY_KO>6RaUsp~r^6!Qua+Aw}ZM zI6FGDO z+2eKe(?Bgs?0|1$pafz!tpcwF+QwaeTM*9s-_PEY~3Z5J|Bi>Sev-o zj)M?M78V5MXh-392jByRIqBm(F@jN4y&$~?PYd7? z+qf)4tQim8L-^ZZ`U_wt1Y7GI+j8zg$o&QctU~Ee^`ECJn{VvB+(AQ1Cjzy2PgWqB z=2x>RodO47c=gR$T1@z%np%=-Hkaa`;y0iX7Eq`vVR=er8tK|2JxGrtsM$*PIcb`v zj64`eHKvh_2J8+Q!s1xki{RqQ`mOXo-e5_<=4bFLzgT(JBHt;fzf%C4!~)| z(Ne%;mIh($DN}RFm-Eb!_@UdxeE(jOUeR5;a{E0uInWiKkCQ-%i&(|hx3kFbPgVyI znZ9FL>)Be~+Pule)Ra}W0=oh^x!;-lt@d^*bKA3=uX;4RA%p?z4jNXXDsR39!{`E+KzSg_rU#>L_SD^|RzIAkx;I?cPzgrq(+l>b)^?BA4M=1$6 zQ~Oj!!H)uj$7UAJ0&uGkI(X6;9uW7fKm-wL#fY*}RF|D)dFpq{dZr_xF5e>oo=*qJ zvTTWpmPjKV0k%FIU57ObJ4Y{*JOFYez0sWH6@dbM~31{HW)XqxwZLi6whH@teax$>S7$ z?R1#=L|)`fmUlK$t0!!!E1B1Y_QX+c`ODdtoIHjtUn3m5O1i7uuC82X9RqjjiQMVu zZn>K8Y(HiUr=3P{>P85XQhY8D)9bUO=LB9iq*9Kaxo+-xw0ZFEzWP4qGTdh{}zur~rS#+6a&62ftDtykW8ny6JX0``kVu)9G?1m-kT7%3?y(`h?Y5zFFmVaI z%hj+%Pfiq23H?0cdsO1UaEynIw}ExbTuy_{Q|_3>@Q>M*;n)g0JRAEYGlvWjVZ?LJ z@X7y9?afQdms7WTb>E?Jj`)(6&*%>r`x*jgFAN}2MP|1>9KKj%ryN1E&y)s-@m%0!hPn1sg}{kj4EE%Wh&L|-p4V3+rc8zlr}m>=H@G;OK- zUVy)?O8fOa>qlirqIUAD;ioAdzq4oG(;^m7_=4}88Jr)_P+Sd54JfJzZb)Dsdx#b6 zCrjN6rzr14zu!T>{Y#^`gVy;s`on|%cJHhb{Uoy`=4=MwaEp@nDj4xS>zgz_))Av~ zKHbT_Peb%uTI}&v0UaB?v=3{jn;^a#c6pY`B$x5@Lh7D6ClS*7=xP`R$f+Sb$=qgd z6RZ03OI8kf^=<0c=VFy@7H#Q!mmx$qno(59%dN~2_1FdOO!s|vL}`>9&YwmyEw&Ab zAZovi*O*y_D98KYCW|Ghl&WuO}s1(;VSNU0Y-Ymu@P)a>x7icS?VMLmYf^ zgf0VFAmx>wij&sG_s*R=%wIky9EOTWrcY_ca68>@J!78D)nxLLUd3zR*r}5t4n-bhH`O5U8e|E&^rI zPyYB1Ou$l4I$Nllp`^wZ8J}Wvwb^MtFsDymh zF-v3GX+&r8_LG!WWfFdnpIBdbr|2??leAW)yBICWaR_?OXBIY!LNGma8%#g75nN@Y zsAq@nT$fGX7arey(}nyTOUJ?nJw3{DIVJu(f@#`0TTC13%;WY{CWQM|&2}O@c+BqZ|yHCNdMf3%d zP7OOQ-fvtDRcgBsEnpPglxd@uLGl>_{N#wR7QLnqT|!5Z{LRs6b!qRZ1jx-x&{ObN4B1iN5Kt!lk~<1kQi*BS}R< zG~>AVipwsESYRjMaee6o27@g2{W(hvNMK!iln{_%emuannhpO2fWf}7e}Fy%Jg#5l zrc6fS9db#9kNOlQyp^o^WVONoj|=l-Ts+`$L4mIeC~kB63=^0#S&3Kji{!wcW1COJ z{@Dnvib-48MF*zn&a@lmF_vNCDybEwQI?VPcdIuEW*${FwtPaa9C)fG`eZaSn1zjS zd7XproZ>PYUIVyXd5oKz-u7N`@k2xB0<~bE-CHP~* z@MA4kRk)$LcX)D09UQFwYSV9!*_H( zYj0g@j>pWZ%v}3PWdge^1LIebzDJ@N!B0by2{CrT#^fQ}g6?9$^Sb#(q~mpI?@jsBpWDcLCbZCmf!{xHG6v&T z7H8b8>~DBx83Wig976{sL28^lH$*qRW~yObk|3A(-O)&G&g z{;jk;xwjOqoKcZAZezKdeD(})LqPW|%A{3%|FiuXKFp6a1v@TkewbLWZod0=33+yB z*))51xWq6NKqtkNh8-XBcC~IlwQ%w5%C0)&)oCDG=C?9Y&hfWQEzjPvVi9t^4bW*m zXcLQTXrn(bP4^q^!|l&=3T-W8DIpo<>VUiyS+S!M{>#{IfyeME3GHI8&!c(IE?AAY z;}X>2_LLCp>vn!^cAdCCE#20}X>*5iBfe0qhwja$H&F*tF7sUo=VWqKMjbhe8t!;z zclgbA(q*^OwP1Q`NUg%!!d5=uyiTB{mcz)>mbfx!`d6Q=eSlfF9n0X4sSrmE+jVe@ zsFDFC;;mMwSX|H_Mpk^wsL@0bR{Rj6DW{!0_B2mTe6jd^PRyC6&t>cl(1hC#SVNV8 zv!dbA2stt;k9ENqvv2O5n&&Sw(pQ$@C!vGSPbbLzlM8y-pGq}|OIvPizEcca&{4w> zSsfOSq=%_)>9B}V#664-<=V+b42 zEB5+(YWDl^F=1~Smby;H=~yceRR=`SZjF~Yj{q$P`I)eY6~hjJL+l*bFvxA>u|D$B ze3#D0` zPV~@ZYPN>@?`#dW?&aBbc1YcH(>vZf}D*>z1rgRj1MmtzAxhoJtQwV?YEJz66eZIS%)GF6|(($#UHP?clMRedqoZ;_$8+9V6Awin89OnaL zyvc}h{NHSc;tAd$%ATJft~SB`A3T#gyAq;zw$+WLI^nn!GkO?OAmi}B(~g}#Uve)4 zh4Mx*^Wo0KT-WClRU!2iApwXua+26DaWCEW6AKn|gBHKC%9sYfKFsnnE%q!9WZT$! z=h^e_Wo1I+y&+~i$)nIePQ((mr`hbgPs!_vEtYA+4mHg_Pj$Rfw5=%lv;OQxXIYj1#u3lxB)qf7$dR-j{P9oc@|)ZlCDcQj zv$c7n{(aG1i*`wKuEueAaQ7VoQ*+JeEAicmeV@~bHCjS%7_HB5_H$Q+_H)@ z+iG?T`Px8=V!9n9AIBiJpOsS@uZk-*s@n%GIX}uy{AFMHTX3kYX_|08^z)P>-)$)O zl%w72Z~IljLCc!EkJ?GA^RM5n_Bg4FuS}EcJB@2d^bVf85;rj-&KG+crMa9vUdn5W z+G~w3Z5MxD+wwAlqkiMk=j_m|l+|r^?5Ve^Uhoqo9>kkDi#S~>1cx_y{8wZ{4} zs*noaJ?>5`ORZc?P-McDV{}CQ;ZcN~`kS>!KpOj-%FEE0wa_aY?t}?TcGI=WxPU`V zg;7uTd=s&RF;?<6UaI%K>orYdDlXHlm-?yKuB)ETo=G$bUgP; zBQFyO*Grx@ecQ}t!hyWYWVa3IAp5d%MMaGL79yR{ftqF2GvT7iZz4ilWYy~`bkLfw zzY`LuPMA!DT}s2_qFYA8^Mr`1B;kDsI^9IJrm-j;*CdA)5zd!JCbfOT#hBgiS&gjo z+>YNvmCtDWRqIS%y{NJ4o$zX~>;3dzr6`r>3E8JPrux=uTzyvI&Q*-b$nNyf1Zn3 zLDYKMh**l7*dXd1(_l?nQmxPRb0T>pYwFipR@?p9d>LvV^^R8%t4FFOQKu(|E9&zd zsTkvqee1d|Z|sm-yw~p+H-#1kyhSO6tJUeZH`j`jeZ-f){*F003QR1;ZN2eRqQ8jm z1)UF9N;Ci2nyC~sbKz4T|KoT2sG~dT@Z`{4{j4&$tmLVe`_irYquI6var^tztIgMs zW(~r=WU@V*x4Gx3zuLO)$gGP>^{Jh4k)J5G?r$aZnYr=2<>PB?X>ED6J!VZNw>pPc zB}=`RzpD+KpJa>I*GpK-Jho}wf0}}bL5>< z)|KJTlP@t1z;Xp@KMRzZ+}3=Uy$UN<;I|9OXCkJ~J6y@U-;caCWHYi0X>IQKm>ly>G0c!I+m?`<@IT+6q|`%w_#agV2j3dd3n7^CxiIB0rv(g^deR&;&I@mNmRQT z^UE%w`QAYF{nmE6dh-75EYMd=`n)|2+e5h;juq_q1>^EsaOU<4GfFs zAYamst{>7i_Fg>hHfk6S^tE>P?!RebpeO&f?;+ph3 zOi(Bz^L@8&xPG8s9p+{tbca}lvvhfj_A%Rx=O*DPRa*HIykn#D&M~vg_9wQTT?3x; zr!hSrm*n(w+I{wN$r~3&SX>)?)DqFj6gox>iOBA_tSWfxLo6PhH|NF->=pIAE#9r97fFwMN=u9hxq>DOKi5(4JxG$pl?;Vr#Ex$D1rAwdm@#WN99f_?@R< z8u6GSiyf{5J{MBZZe_)!-lMd$(B+!#66jx;c4u(=AqTvUyI7;R~?vR8Gt=u|?#r4Aa+;B9mK{oS0keC2`@r zkfJ;iFU|Q)e`&mt4(%Nla51OEY*Q;myx{^QCk8D;1`IU8bR~%=|AQW;fH!Bnysnf( zD)P&ewF{7H#Maq`MHBo_y{3m{@;RRIid2Hdk68vFk}6s z8b86v^{%+ErIF{@tZtssbBoivglBzg|L(%jMOzQjWX)aHEuGf+CgNcLxMynlc+r(dH z*x0)%6TF|oe8G&{?b#tn0MI9#7U(Q)$8aXh5&X5`OXFs595bAa7k?(+7hQ3^xv<)2 zVB=fM&CxhlWX*Zz)qT0%9|;8qU&JQf&L5w-I$zIcrsxo$V|Fm%1;>2m%RG0zo9aHB_l0b^=s%Qv2xRkbSq-l_cd>d4)Dfh$n3GR=WNUO1@=2M^)m9wznQUez_6HN zV47&CQ%S^34U{?u+iM-;<6u+0b`FIT&RXqv915Qh^12fDrc@Qg#^hf2CWa)JRKLuz ze0*E4?Tn%?H1pzR+%hvWp%_iDfnH9egHW>btxu30yfP>^ilexdue+_LqFaveA`h$Z zv^1!(GK%Uzo?y=|qg9h?H5V0r9N!YeBtEYHll9Hq?GK;kCeEGe!NtFe)&3t=bJ3kf z{GWdLZPP|*U6;ChoA{e!;4m6hxCdd6L|zp6(W)E#$YD?2qo{uCeIj|nAIt8CC+{iR zJ~o|UkbcIm+-7dz0AyyLSWTToqCA`BMFz!nu9Oq788=% zp<5D7O&0i*=>^`)DRzfxhGTMeHSJnv*d^L_fTOgoSLxjhh%;c6i)ZeO7?dcxkl@Y^ zM#9y{)W;Os*RMILXiFjnBKk%KpsTfy+y0^U*Qq76uiea--J9zh?^k*+6KEi`RFSs_ zcv^@{8^5my5nFFpPPg7q6}yf>{?YCxD%!Oly&L^3W3T>s0dK`dFJm|U?wxCBWA_V= z)xzt3?=GJ09ez)%)l3tkj{e%Hxa}|BL8%7|$~+{*{!jKg5YP>3HhJ&jNFN187kf)P zh+n^=1$@-Ct)hKAMkp^Cb-&MvY`wX4zO_9$d3Ni+J-?i}Tpzq&^xvE`jpfzrB{Ucl(3PTfaXYeH=xYc=3p!ES*rayo0m0eLUKEUvoLQyf;1_ z5}y2$c)x7ctr^h$`kkju;OzDOw%-=+N~F5`z1s0HpsUqDSQt6-=8dYKcj3eTp5<%6 z`L*Xq#?IT&eQLMA{oByl>lyLivDW~i_bX%3&+asa+!N}T1D88!)p#SX=Le`2@=1Gf znR61ZA72jdKYVYSm%hC0v4G-GW3-c$w=!+wo^GG3m6x^sDoqI_R2aEai492(BePSh zgadqA-fv6zevWg_a?DgO<#aJc6zY{FkCHaI?43=Kd{+<+CuzA2DP(T(?bBna65jH= zVH3y8zM90+Gp3sVQDG-nR3-T0vbA@!2D&-z2Tg>;0Y6n{ zrI_>1d!Pa;kxYc|4sRzaqlt!xp=+j~-BnRPLJr!=Wx5PLCWh>!9RmFve!HK|Q$P6Y z`ggoPob1>ftsJuWq)iOt^q6j;*EntcIOG3Jl9KZZ_x56Pb#~T&-x)U$V+Q$ZMphU- zyDt#2UPod^iDbpXzn=nPr7+nRHVNF#_rHw$`raQy81zaAIh?ugv>mHH*dJ37SWpqT zbq);Mp7#f%ggO@e>rJ$JX-p_y&!L5iJGJ zv=v9*Vtq(()1aEJiO@^R`Yf+`;itZ%E-Dctb|B2P{Fa(X$A=5(WNho}q<4|)=rC3x z{LrdyZoYLG9F))Bb@XtDP4j(38;Z-96^Tkx&!rmf9hok^lA>r17x+up2yARaQq2og z`kR8S%v49bl@J*;y5X7!Yz3r*G{mc3Ouys8E%FJxsIcdvtGCSw;^Lo%7KLB3lfGSC zX3f!9QhwQ_N%O3n617!B&P>m{x-qDXxbUV{8IfhLQ)a*PQmss2)uLolG=HvYxa<}# z5v0KLmVWRqp7|!5BjjzPd9c@Wr;rCs&@;=?`yz@nK8m6zg7Ag7B&9Rjzf_7{E&4d= z>TObeiI5)bM}3%n0GbNuZfo_^-rO<_a8WGDNN{jVaxk9B)xcutmz#m(i59vjw$xpS z=_q*ZxUFJ_k=xTv(mk=HO4?B0m+4k6p)AA$$jSg@W2{Ul`&K<&RG!l>XUB$O2n$~c zLzD3u8JAz0tt*_8{E3|xSkSDciD$X#oO0Y&xNdc&g}8zvGMFcU$Ao1Ufw zqW&ev#Yh2Ic`8*ti8yK6~-6Gpu9$K zbHC#g;Q8fQs(g;rDUcyRiEUXp;_1+}z2}5k0$#z9NkHm@x6$zF<|7>sv)zcQ5Y#=r?iO zzqm|NxUUjWNRHUf*}Li%KvrHS$_7?%F0_f}?j%fty-ND8#y588=*me}aWu^=BtPEo z3(7C(%9Ylog-%Yd2*yTN#3EwiyB6z}#LCod7YhKX)Sai6xHHl;Sk?FC8bc zO4Ngd5lb95Wer|BRVIAAjN%-fX(2r_C4qX4zXH1QBK5hxgMEMqPI{rjXqT6C*bQ|Y zC4de@6GUHzzlGRiQrMiDRzGZi4QV!LU!3Y;U)D?(`Gm@r^1G)uHb9ZB7R-q3Iu?kdZ=m2>WR6#}cjx^_UhK zmKmPgv1skT&r+)wZ#SlY&{%YVQ!KjmQ!I3_%kCOMLP=UWrLx)ZU)+`HN9QbbHkDaU zvjJ{usu)do&@pX}{%*5}@Me%F@LycF?w1SaboHD}`tK-WS{=QROP*~(jFTrrxUN%* z+$Um+WDp9o zMcM*=HMtZj%B1rPIgnbus`VGj*&LU0yiP-1NX@gBM*8$Tm^|dct|R?6QG>kCb+V54 zGlP7*u};$vWfx7wB8ctw6uv56{W@B>{;RI|K`< zrNrnXlKlPtrPo`2#}J5;C|74qrtowV{xob7VG!o42=*VT@(VK%#BES+{aaJ(R6QCF z&|JARGu{zwoP6J#K08UgrRwlSmGqZPU}?O>B?*#zZB6R?Nn()&BZIq2zWjc=@I!j%nAPhbzA7a*uXlpzRy>K96@q2OF0b$KAeOB z^#s$tOBm_>k^Y{Syt#+0xgOBqJzW87I@_Uk=`3yPh192t0* zzj8bO$Jsx8NpQ3qD-WOVX1Sc!ihz8UZsLm>=Bml;4;0+Xi0%*6@6RwwtqX9QT1G~N zc0sX~j==B^=SuufK?Ju?uvk5|*stBOrz<4APq2K*M!7WXKumFiY)?l_;Sy`lCuHtO zLiGLV?MU!5-7ua`A*p3}LRGe2(X6Z(aeqSBhtTtqS|BAfK&&pRFuukEpwfz|X`4tj6{UZr_(FOv3KpCdpZI7~SIeq=7oW|zD zQ35l#pL;09dIgfhFv<#-99tL=je+^ObxaM1dw^a8RfxIIuyROqmebPS2Lwzhs)+V~ zXp6R%Fr8AYMv~O5R=`9jG`I#?lvD}jlWnkWeLhY7O)gQ1`54t|2oUHoPd!3|>xPT5 zO^G2UqQr7K&j0spmzCGWGnMB2F3rNhwz|B3`On5$sW!7kR_l2yT*OX#d;c6i;4^pw zXjCdPN8%)3iG^8*F7#<$=WQdtT96nE6!o< z5B$>REuv z;2@%&S%m_;3>TOir5C)hr~cIIR6t+2OiCnPtP9K$A#aQ>Y_IVj2zl>0ga|p4hnb~&2`?=AFnZ2U)-wqr0tci(jKpTKk*XlxqN(T z`1_7!g%?lQ5b}GuWiwL4KtBGX9u$O*^s0#J5R2qj** zOypom$K=X#JP3f@xQxkG9uG=3-#6SQX&g4Bm_S zb;rX5d2#^ZhQcoYk|mfA!~YyTQq40jf1QZKkckLJsDF=nkJwSU@FxHJo1 z-W-8>-5j};KxImMyUJjF-Qg-i-~5C|Y^W|$>XWUr&QSfSM5sNyVR2;N&{{E(z7l&b z#~{(yk87vFa;f1r_^5x}waL)XM`^ISjUFMIWV~2d;4E#+@K#mKD9q6r7UEG9&+C@Z zmn~0Y4k2?<)<|qQY_l>e-`WFCG45wqQj3kgrWbwNnkgPL8t!z+^uo`qyo+bfs0tu^ zBzMTr{$r0sTJdicafe-Ny7HaiuLeDn{w_Pq#G`*+iAOK5A90+3+h$}U&Q0+-loG?r zF0}g*-}ZI9BrY14D6s;jEXVmfT9)+Y3Vm#$ltemOQg!DF)ohbes`qIg`E4^aEI~hU zrkJo)WpE$qZ8K!Y2gy$m3|%ZO=O{fM+9BE0=%=W-c(e4^k!q~fAi0@yZ|cP#dPWIc zSo(^sY0q_EzVm-QiS@y@@U(Gz>bx626cfzuIv(VFgr1AjxtOHJE-;U}45kL-3C8sQrt zuDMq85!5xYM{&Chtw?($hr#CzE0^m2Vu1Uy`%IjRP0~BzS|>~**)T(xGCVDRioE1*lsE6R%^(PLP zTTx3}kv|1E`kMytf`wJx$kk^*x+Y~eS1^05Rl1%rr!BR!@vw$16{`5KmQP+?Co)Kd z3vLwDa+N$s-Bk`bX}8u_zDpmZ3thWEchEpx&POenN_Kf;^_nPT1F&XHM62+yM)qu7 z6;p>%C2kbtX^9_)-6c=i$d?$S4p}LeK0miL2#vE}5&{OyWxD{tvY}kTddi@oNc}m= zyfL1m44Npx!Tt1r|qLw|%#T_(~QnL}{ zl06@e9o`<5v=cdh7vH^33se=J`TSoZ4F~dA28N4wg90nQu z|FX>R{%+q@TE_>@iLP|&Ig&dWrI;g7)-b>f|!qBx|OI1gyWS zKz}r(R9l681cPu&_ENHuRv)cMUuDen!UO@mDMV*SIr6!A2g_5ik0QWKR~_hj4>m2P zWCsL$G-YG&ZYE1omyS#>)QhiY0ui?L5+=u@P~?h@a!h@-5M(d%q(tk{nBv6{(5-@m z7+^LMM>zrN-=+}79wpfU32x#4A_PlPpZu7d1xN5r7^V!H{x1Uwa0U;2U%?q%0>~3J z1T6o35O4-Ss3U#wN9m-CQm~bCsru)i1kT{wN0XRPlXk_IQD$x4wX0#;r2!`?hy9Rnpp=7V50vM=> z95i5MdGL0(cv2?-0mtKfL9h3teyDL@<^NjxZkj}swcnrC1a+0l;GL`);CeGH=YmctX4$&u3@Cl zd+h7mYyIgwi&Qw}cWL5g*xmGyq;4eQ`pU0`8Xk{YeZ}?dGkiQhs zZK=voD;J`j|a+S6Z2xvPg51xoL(6*G&r#-2x z=6-AIlG|8y&2+&-GSVm*aKas(CRI~r3Q3gW&&5XPcB{%Td z^i_iXbm#r*>^|f+rLU7xk0#k{PF%|gl*;`_236oM{km{E?}~MqD`N9( zI%~Kc%W#*pRqyZJW^<~$QKta!Z|7(I6C0J##CIa8{Vb=R%~QtWngw`8iEwN>j^5p^ zs|)Z?QdPp=-*5k1Itta@_Yf2G&{<`*a=SGpdOnIUT@n#%9QTI&5HSe2E)F|mzyqz3 zweI%aC&#=`C-^I>=dziSB)k8htpmb$mQuel0hDd`UN0$iis-c-V(%+H#D(!o6L?`2|yxV;eHn#Dp(T z|E)<%k;O@G{_kv)RHeac)397?i+uui>PEpH@t@J82?|Sx=!)$D`{)XV6`{pHU{zO= zeL^deRK>BBef0RRea9k$<)-2F6OdN43eF8Ft^Jl-9NWD>;F@ocM#3*7FT` z7}zTf+3OlEGhFZby?SsSZPVW1hXD>MJOd=RF@?Fm;g*KLedrj5V6iaWXU<{U9$Wp= zie!O&H_I)3L5>%4*uwS__SPh&z1u9M{V(}36L9j0`)pj^dZBJ6anZ=nyG>HGsm)B{ zoelOF8AGUR?q5UCZ#<+lnC-tx-hcCux>zNl=%_GA@I`~8=xPAZYp@i42US*c9 z9?1;7n$EQ~R<%GY$678owxd|tct$Z@J-0)~Vs}^Pj9zq7*#Q@eaVVFw=)K1Tbf2}k zKm4j;J-%f4QfC!rKoTVN*jkD?-}_u)dnJA}wZ5N@v20{Zyc2k)XrE7X_IXkUIZwVZ zEOp*=3u>9~d502wGRSU6D=&grI~MU{pZJr-CG(Pc1po3E6XQnKoHEqg+G?r-hs<&+ zf%Nb>PpIALkKh9yz|^qAeyWlz0$@2gPLS}G8|&)R-4D7B2jZWM_Ln1@^Ayc+%D-e> zQD&kNzf}gN#m^fvU-@$&Tbk;{*KGc?23 zJA*Im&@f=AvMoF0OE!ii5K|JLP!fkgl8HT1S0q>lPIWDdBb@Z+XAZZ+K01y_rLomp zgLuOA9OBSm9L!Lh!`@NJS$Ph)FGkjpLvCFDQbxrYZi5n=hgi#|;fyQ63WL!iqgoV0 zTSiDIg-IZVPauUuC}mF|72pv^GQ6zB6S<+pgYZB4hnF2oL|)31QdpFU9`~SNvsL{0l+imvzLbb>v*D#i{l7Y^%k#B;kp^fET`*TNNHZ1`+=f zY7QLCFI#D){_m4q1vGsEN2|4130bb^4eDZ<94O9w7&&}PNO4=CX1Qhc%_b))0sYXC0eP}qHcXEjNc$j18n_xtOY{{9V(lZz!s z5|Pa}`)i}}4}p$~pV?ZsetGVEAv+gdBEH@bR40;=7f9VohnI)T`LDNO+{zmHjn1umbNmG-2M3BQ z`c`vpG3R(co(#q+GWn0~x%+)C`I+HYCM@)SVlOBX>fMfR4SJ2_<^qxGM&c-fab3V{ecVPW;MZ#c|5Hv56@qL)>OrR=s#jz);Ai4 zBZn9+E6ZSLJPN3fbJD*NAf3*-@nxF3+K3Ln$NSxn79%?d$CkpVJMlMZko<)3DO4 zKw;#oD%;N^=ay#abqvjv^VkrmjYVZJ_IEScFHMdH9kt&OBslZ zClYfb&5Dyq)hDKY=P#_)n0W+tC6=$PO{^t1zX{6tsKhofv$D7?GyAX-x9ud7)T0)e zu1D~!o9FNcM&|nZBT8FLG3y zX_WEz8Iva1NEm{sv3iO)XuGL_@$_Z+)xu)FHlbrtOv8rbH0PISX`3cNOmt5fYTO@kflH zk&J5qr)Rz`57B{93Jh#a^_*c@8=GqLdZ5w}54Im*ae6d0vCzny0y`q6AS#<<%*NbY$SsUBY1+9%6@%s?w?NmZ7ehG8j zpG?T*D~oRKll-A61CU-R3wTxVGK6$w$N{l9yDv z$g%u(kafurbC-wTNEElM(v_3=?O;_O_9g36cDvTU${Ci!4?29=ux-1ptiE64R);5(weCaPb-X#munh#S;Z!Q)x;e-KDsz4 z*xCx8HYubys1E=Jz_8+=d_FKp2`vtqt()dlkw?vdvx&7eUaUsti*hiMdv1rIp&j{z zYWr=Gg&Ck!!2^|}oXcH-C#dXeOe5xR@x_XwSg$*!9g?<}STy#SY^hoxV-Wi|cS9#2 z?kwB_v{1FB6VPezwP-YY!E$`evi#1{02cy>Y3B$288b91TS(dmvjZgXzNSJ;O|<`T^>9DI)+ zI-0i}+7Jzq5LSv0@kbrf4|ec~_WuBw{UVHiCD`M?T9J9Fi+h!3V&+G$C!rf17KiSO^H3Gyw$hQck1Kv^99vIvY8_Vms+hovB>S}h+G1&9^u>DQ#<5#J;Pu7nzU*giKu7oM$y!9j-gUS; ztY6=zxjWoBbldo1uAi~xF$&`DCc$U3Rbre>9DQ2USnsyWHHYC(Q?q7owyCCL;_;=O z!0;Rh1=&dC*X(X*C1ok}jP>!-Qf}bti*jjdpZr~6xf0q{njV3z6{3UrNwoN&Tk9eXi`t1}C)>bMuWCcM%aD}nz%p&wXF@4cV$V=?EVLxbAfpCp86d2T zT6An7wz&X1Fjv|$UMw(4TbHbn!qgge7B!{_TSS08g_1vov&!{T@PVZ2odrP%&)S!c zmBHf)ZfTEk(eW8?@^H^_QNiOh48;m@1@Z|pT|{?uwg`?0f?{`G8kEw*p0Rk+Pln;4 ze4GN5qhhIK&Y0Y20JXGp*^GWWnYz#ZB5LwvO%$nF!jQvUVU?lCe0Ef33OjaW>WDg@ z(p|j_hk?+cGK-X?f^`RO2%-*ryk1Gb`5zEPa9EuxF59fMUzF~|0sI08LztZ^l#PP0 zQi-GLDvTw9utf(+CAleuH=pNab4#gch&>iN^bbgEVb zHbX`<(S8>CB>6G>7QmrMr`60LFr#}XlDb;vk7`tty@#w@kEiwJ&ID4enw+`?3 zg-8>VvtlzTR}IBxX79`^1%otr-}oiDu`?R(*%Y3>AnAsOnjGz${flUKJ@?$$dD=K2 z75_q{_`K7a5Qd`vkST94Jhd|CkMx#_h#)q_GE@T-BrA*^#wbnzEduvFt|r_xW=(o? z6ML|Ea3!oPqu+?SM#qSxh9L{5TcMIFq$fO^l5`uq%EtQ34CC+kS4HEc#-lGH2WOq3 z%n}TZ>jc{2K6UlJ5UwF5= z%jpq7_1y(ZF57?#}6v&*z|g05_A=0 z|0v^AS7_Q*9?{niPWWy~*5{yJSJ_X>+nBv~me43_=<+a$B+$nk8cJU)z@koDTRKWA zanCgL9myA`-fU)?gj9oPKBEvcNFP5SFtZwz6hWQ$r70##bROUX11XX&JQQDCGi{bVF% z>28cHC`eWkr}0j;-HjB}c?5CnflQF4q)FoBPh#Xv`UXi^*b9NV zT8{b_##~5uj4^9`hhWX<6PgrKAe&zxYZ@e5n1Ti9eZr{IenZe<^bckHA|f6>BT8BK zd6@)HW(Wu~1cVy`N)4$+LzAnHt=KgmPk110+BI)actmg7@u0$hr88)%b5^97vECim zqLemF@R5It3Lz4_Zf&JFp(2p>Are}QQPHE2s2~$soWLOZpTr6i42r;@fshn)2?!;* ztE(O;t4{`Y#{LKBz##b_pn{G3qv;9;|Kc`+V|nfEaG(TfKeif2R7J*keNFAAvesWB`rkk+c;NJ{{Zp~sxe$dG@ms$M+9qmnv82JJ<)EK z+f>CYM!nqQIQ<4&x!X|1EL**t%s71?1trc!f;O-Cw;kdrDFI5H^LTBy;X?BKf=3xG z*`J$dy}p}<)m59v2*wMSFAi57_&rc90>x3H48*6nj~Z;kFdi6}!nMj**@0UR5#T!J~7uI+%;Htpu`B$v6Khw&hs0Lu5nmwg{jPC3sR~t zj+KZv7@;~3@Q|GyumuT7E{=^lf(LqBhBNbp=;Zsl)q_zVowc=u``X?&h+a4o^G8hgR<9kl*uGW;nAtE>R>%!*F2B#x=!V% zmkuqUgE5KH5N8yV1&JyuH4OM?OkC%GYM_@6uS^GH7KI^>5?Fl{nHrY(XRMEJ*L(-; z?etF#_RgX*!~tNkL{mnkO4a=tBcItdPasSPk?ru(p*;CZ+6!j&uj^z}ymUCh)*0Zn zCcxIxKT@R@naG|upIWbCgFv0;Y_M=h;!$bq9`#Ti3UPNjBZPQGVFy$)hpp&hhJ*Y1sZILs7~MvrAh4S!a0V1HSzooF{|jE`L=> zkDW-H2@#1SmoA@=QQT(#jIW?iH3huyZ3p0FS9+x_OAH)6LZR^#?ZR; zw>I5wnR!SL)5S!hyI#oR*FrFeQqz6;qZXcfWpj3TJcXGh;>UQCfus;9h-gAs?(UKP zi$~?eQzTt}_=a0ABB+;{QciNUQGsZ`9U&TMTxUZ<2l;yAy@w3XJ5!= zw-qha`#x={>Ij0EDp$sq9*KiwFEXiJ{Ha^kSSr_l%5!tdacAZYS`y4s6nqSS9~24? zL$mh3vlaPCqEbEGi1hSY?=h9<`d*|BLyL$w>I{fDEB*PN zliFO7FE$Op_QmQjC(7N<>o8wn_an+=X?$cnB!6{w^nwi)P4!rzQpiI@RsLT%1t=Ixc z@BSWGWrZ#*j{PQPv&#Fquvk$X3^;KLizk9h2Uc~ZX?5so^US~xCQWn+hlT?yA=jMq z%)-EKTD&wrDEWVI^8R4t{h{mhc>zpYeDHilbB0{dUPyhn66zR*l`WwKOv-xjC!)J8)f-|02ajXvmhe(`6Rr^*tK+V-CH~<4~AQV_j1P4N0 zz<{?@a6l4VU1~s-DC19EJ75xI!ynaXMOz?NyfhQ{0A&tsh_2n%7o6}0=sUIstz&p^*p0=UO~Td! zEW={ogp>A-&5DL%w_Xr1;$~Pg%*QrXUhK~|*+6tH9!GA)-M2}cMpR>N9<;8Ie0a6tcc1!LZdM&Jatu<*;{Ku2m|p#fF5enPy#J9WL3` zKQ*j~incTkje;MCUGSrr=JhI>F{6w+S-RoLogrRE;J~a|vF*+5Y)U|XZ|DHw*Xr39 zNee*0qr#kP>5cGhH!AuS^K=)+%5%Klcux}-cBd*b#J;OF6LG)Tt_5_QOhQVHUSOZo z(t=R_`egrJHj&3>YTu;OePq)7{6KPvUrKv!I5MO86Tk7eHd*4TWtGfpy=jRc+$vK< zAN-J+Fk?u()f3!9Kpnnxh9AeqmQp=vXw8s*m3wQkhGzM_wh@$S zjPgLTcX2t}5TKv(7lsxm|_^v?`qLQ&L}Hv<@oy2%Jctt4B8n)k{abCb7?kg_vj&J^|x>>A9Q zg_<9q1u%{(i(03o#)SgHoc%1;NMF+Jp>Kw!A_NQVdmP~$ zW<@s<)(e9SnZZM+W(y!BMOSFHhEg+*vx0Ad;(R}c)PkU|@H8QOAC1R)ShbvT^lY2j zsN0VilyQAm`)0N*D=}e~$=M)7Y%@fmkKd%hQ<{abGyD4x%!pC<6=6`5>*K4EgMlR& zjObu6$KD|$q)MlRJ6R|7ZCDYGgK6x41jY)z2&scvSaO&|a`=RDID~S&SFuejQ;#eY zjzFkQD@z4B&q%M-e@66&;lj-XgfOWQ6Ax_qcKy>CxYs9`Ht}(HehDCOCW)-;+(UzVEnq6=l z9vD1?R0nu|a?;H?uDX63D^I}O^xTb&4)nYEselz0 zvXcK0Dxpzoonw6yL;G&iob<|nneAq-J6l77gCee0FmW-$X|)$;Mg&H|ES4Ced_W?7CZB zomXt)$6ocD{iW-#y+9UcHOx=2B-K8g0Z$LsUVdjEv?Ht^sz4!WTtojiuiG69@7JBn zuRKN(lMtRp4#F+py9w_=qoJ40j4^Utem4S!MNF0vA+w8;!Ti|bWDfR_;h|F5-YRVc z{#{=1g4;P8VIB!r%Ctkg_b^YEJi5O|+-iK_Tzjvkghi2q0v?d&r20i(A)fnoa{MA) zX8wsgIiD;^5)C-tu;gyxjQh$scTsvoUPa5hFXzE4p+5eaHvWh0agjbkb;k(80v_^8ntq-?0Ck5vpMB1eEdc^rJ{lyr1uq>G{8V8;sN2+ltc4j+oz+D0FSdY)Q`W? zbQtfS%D+`IK3O(XdxN!#SUWizS--H}SI(QkZr}wynpPvHOS9cTnO~OuaiIHnX6i)A2HP*v{%JCbD(WW{%1%!m-iLL2FWKH4JL5i9DZB$h_n+82L^Zu zq=8EnP7C|Kg5rz{E+FtTc;P~@O`b6+{QC-1BQn^B;Xj|^9+7e}#J760EFr9Bt?yAF@txzm&7Mor`1PEMmL>sx&jp}wI#CfJVY za6YJ6Z}g;R4duXX`#c=Tf8`+Ikli)y50CpL_7X~|#BGNNFY;g4WQ$r& zW!|l=gn%{n>3@AwO-`U&k>;0Cq^-)&1QKC8Wy9@_gGHp@*eFF27=$ADD`j7PG1*ii zF2c{lHv&Q6cE}Q&zo+5m#IpgNqDKX~BB63jyF!%OwH*nwj(o%%2y3vACVm-942Ypw) z5XnoxwV@q}IN=$9--jc6lYQRvyG!+@4Hd&vC+Tr z!l?Jf$R4uTx37Oe!Tvf%6YaKkC@{_>t{b%`qTEYbAS+=8)zYM)pYO}L6DpVun?a3Z zU$w-tu?S^7pok1S)}g5mmw$VEWDVxY3YtQVyIFaK-|`90=mo#&Sd`s6CL<*^_G;2e z)HPO)wsjF;kS&d;D-!z}XOQ;h9I*1(uNfEN^5f5pCxT!)!`;};OUW~78D6G=a8y0F zXZhG!<;AvQAX3^c6v(vQ+GUIAMl67Ijr^X2=Qks~L@vmqdul@ns{68hFhKkj{2o;j zn#^Z^-u$b6j4+a)v~R4%SC$TJj*(#qCJHm2-%+a^;lZ|AU|ZZ6V`$%c1nwGr z7y@maU=+qry>Ka^#?WKpH9@eX%RTw%cE;6`H3R)4J!*J%)1!DhX45vpS;+WieIvOh zSAA#}u7DnAeF&D;?Smt5fg{*~BkZR@(@4ZJ!B#&k*-)h8TfHoUFc__xKQh{JWY7YLeKqg5U1}-*!OK zowehZmsra?P;seAMo*w`n)!Qii5kV&ax`ST=4w>4^1jFP7$&#UiGQMC9hwX&)FF6G zY@Yu*7P9)jcYe@2da*!e0E-;ANut9h>=O`~+IjxKP&9ZTgy0a|CAhnLaCf)h?(XjH?(PyGxNS7Z1_Hq?xWgOHJ?p-A z*ZWaZUsqMvbPtQ!Jyq2+71Pv_k$oQ>;PxGF3BW#O-(C)HrhE$AF`&Nm$^wTm3F6sw zowK6(5@z}_61Gy<@5-lmIjSPz_!v+rm_fq%S`2t0f-Sk-O3N7NP^#&@-GYcu{vSR* z{r%;>N^td;=zGb;9?^HxJACC`TYI$f$Nl99jr%4?wDMM>5K6h?=C6#5Lmfmgfw;)R zME)F5!bJW4E|kGRf`Wud-{Bwp{d?34u@RvHvOCERGpONVIs{lgo4icQ#$U6r7|zX1 z25Sni%!lrtNedB08^L~>JEnqve;(rF>Up}|k|WPA%lPvN4aO4#i*Ux1XhDbLG`bpY zAa%wwUjqA2KsB6a@JGTCPohB4CFoCPjf4k^xbB3<0lB3CaPJL5cjV&$Dls$}47zag z$S*_aBZx*3L9h)&Xp^2q@}NOtp`)BLPW;_bP|rj;-G3c=4lhYc&U%a0kX;(s3xfco?wiSJfYa`icwd(Bh{AF5K{KJHYobBhIT?E%O%HR6A{E$QuUp+tBosYkE<=?n9c#0YCUK7dexNG7LhPWP> z@`{A%iQnBOM9)|5!lj-UUMG>DJVSsIOJ$6atw0l!XTp%`y11nJ?F=y&13cHvdU|1c z!${||69*dwX@@b+2d0+_4c8yIubIVE!7LytTG?8L80tM8M<$P{;fLD$I{%m%lt>tqjRlUUZhDnDBlh@=zS9L21*Guipy^{0j@u6E>b zf_6PX)&C^`!wwNjcM5+S6&;)4^8Zmn3tVW+o?3wI%~g&*b0#Lm08KBnT>{ zQe&2@#J>ttESV`FMrh}YQ}InR7cvWFlMt!LSu4_uWRs-10FYfQn?wVEm1NewxVR58 zN~Kb^fI&cFk?iMk06ec!PFc19+&Gk270S zhav^$ox>b+SpP&Zf5t8QM3^Vr`sTj2lhkpdNANKb=l#ZQ2$b@e1EY`Q@n}4GP9XI& zahun?<;XGhYZ7&PTZ&Dw#I2M4JUpRNilE%fEcd%7BjI1Or$?=ep{fQFF*SlkDzlu1 zakAxr>k7eq@LCA%yy$qv0ECocX~aU5GLZ2T4Z;;L&4lkP!zpMhko|n2&_I#~c#Np* z#A+!2GOU_KF&EfkS@=rNZQN{GcvE9BFZ$CD0TEOhvAt_GFM3$xD))H`mOa7@GD|ec zU#?K9p8`Z@kfd?3TpF=ht~$3h&|+znPQ8j=)MPO~#JMcTRm3hQdj$wnE95>~N3611 zk}GCW)RSm&jdM9MOxVlkJZ2}lv6%6ZW|gvu?Uu7??3SklkxB)UN)?fg z6}DJvDLcm^{^XVj(a0$huAWvT*4QuiT59TJmkV$zd{18o6^#ZKQF%7SkbloAO^3Eq z54Nz)jHT|sSY;I(2bEGgMzYH(Dm7b1W){gQH{;u88p+I+Ql|hwX$nvaC9=yQC^uV5 zCj;tj4BO1aVvG4?R*9@q6Y5pgl2ky-0D#@hLOJD7pcC^RQ1=V{J!ZL-+9{S@PSdg3 zay+wGPPx^kgE@xOK z_nGSim7?<)pmS6TMBpCz^3%ixbVJM48426~TOEI^%2j8JWtGwtY16k}jl@1TfWcp^ zpStF5IjR;<`)uv2<*b40qS_;Cn_0OF3>3VEQz2KCCb0)gltzeW)nYi2SX!}&ZJCLy z<2ujE)(ynxR-*%5IkAa~CFd9Jw~H;USh%Nlo28VM-@1+LM50Ug@|3kZyqPjv%bC4w z(VC0ftw7C&^_X&aJqi4ltM@e)pynyby!a~q`O-Atz+UuIhgNxjNyev?9&6l$90?$V z{}O;ho)^v4I4v}rNw8}9n+h`;>1bUsZ!%IAKG>^G-~c-7-p5HAlggQDqe1|X1HiHL z5lEG&`k1NCzP)v| z(7MW2Mf>!tSbCu$EArAe++izh6l1pNP<#S0^eTRqg>1>j1IfrmCfr{~*fD`F(c)+| z{4COn%($?$I5C`@|49XNr_#y$m?bx@>;Z*MaCWU+?oCsmEZb7Sn+%7K`CyI0MRRtF zm*J|JXnF}Bvvs8fa|&`XA2TH<0K^yZv-~8x$w1gGpONJR)Fe_zET82R^D;DIA18}T z0I5vm<7D$50EmH3kz7YC%F=+^5s<1lE|`~Q7V$Tskg)0bn5_a$GjhO(S`q-zs`*(a z61dY9+aD+C4o?i;r!&7!g5Ok4f^RJ)##ux5QAhZ%6XbH;}CM& z3+79#V+cr!c`NO~XsZeJRfl?JrC!7;O*v?lD{AnI$gXuJ#r!O*6*J8Qw-EEK$B?DA zo6xdZCjuMqP1|m>5`3Ls(tMt%66Y5Od^uu1OCRD~+g8V?^F045fFsVUx6f)dN?t~~ zpW2w!@_b${5BCh!D6|xu>6SO^#KPR;U_shBj9kMKZ=I^Nnz6dZ{F+xix-bnv?gsUKh;T7c5&|;;4qr zha^(hzLEDb$zRi&eIc`F9JCVKn_$q_3|@?_Qdr)OI}Y1@0g}-zZKxu-TCaDu{)4y4 zgK#Sb8?kP;1oydxel{;Y`43uptOCY%ylb95pvSm?-odD){gXoTtdadmC;N3iC6K2L zAM4q@*j0i9C8JhcG>;F+(_($aX^)NjY&B|$bm!xE)E@NC$D^nv;J77roZtXAv)6@* z?RYMzL`B%HX4l1m3; zDe0!`y7T`YIN3HP$wa9o<{XNj#xwFRMN47{NzbJoB9t*v=V7`%lIiW#_q}#!4?RuZ zd1LX97XMrzvXG7`DCgoX%)u++myG7%B1v$0liTaZd=Q~$0rQFywLIv3&NB^<3oS3l**rcOtQ@%^4=ny8qe{NP;_7VH=q@_(eCSO|zFp1$>p%0qtGudfZoce%6s8 zgWY~;?_*Tw)xY>cC_6FcFBvsZf{rYVOz(tAC2+^&8n6u!sW=4n>scI=DmOv@Sje+w zVK>spLj02qhW0r6E{6nozBze|e0<8yL16|;N+!7z4DH+pH{Zy-+*wak9TJ}m<2;PM zyU#zuph#l3gG~M?o=VlAoJJ+3Tlj(dC4@myOJ29oc^Z9}U1E_>juwVd(YLp&%)F$S zys`rf?b-*oJs#j=6LNW_XRJ=u(&i98cPp+&Mf-Yi5&p%he_8(kkqyWH4J!P(i*3wS zEz?UcSF&2bNAB_p%=c9RW+tzZqGLHe?w7cT+-2>@zS-B^&Sd_kW}p1k^RN(8^~=rr zSiQjmwphI@Nk)I;3y7opn3#>^!Bpnc^6=h8&uhZijUCWaQ7?~3#LLeoQd7~zqC3~? zR|{`@R(?+0ulO;jvBPi@J3&PkKSB3f7TyNNpg}E$S?H(b-TYk662&Q3_8S>|xIt?C zm86;$=9WLQdB~`Dz_yWNaG716K3nYFG3|?`OTndG9P5E)jW{@%df4!YZ{_Z}qq8IC zL}LM0&upY{iK@?75zl(lyVJTk0tF)0FMG^NVxz4KGrVm-V}K=@bf^;N7tH2u0svVCMd5w~JK`6uUHI^Iu({E{(;^Rsm}Ovh2? zcZK}pm}@=oGW2#uUW#8WeMrGkkKc*6!czS8#C?k08+xK2x2TMyqz_CN!lpB@Q+_Bo zexm^=mKvyZ63hH7cNU?CD++{-^kOXX1>v@cLv`1tDY~cS@r%lyT+UB{9y*_$kFz&+ z%kWZ$7zDuCdoB-$OLTP;3T;d1UC#zT9j5`Q@6`F_e2uVLTHX&@X#LHpq3z?YfbZTu zeZEw^z4`)}`kN>kHh{9ABp5wq>w6(Co-|BDfhab5s?95AuOWWaCyp7X^?<=d;1eb)@^(uOHP|-p%6Q%?6?YvyY~LnJeeJ85s`XkwEUeV`IY9J4lc!(^%Qfj9ZXQlT6Nj`=Hd>Xl=0Ny$mgiX}W?GLVoS%{{7F0{7bv~ z3SP7Fm5fw}ku6xaLL?=5^}Z#Ped;a`?Sv=A~wyL$1wbx{l;*9qo% zaro8nUDENS?c%Z%z&%jlP2u{N5nHdF`sk>~Am;?>;$(e{a{}p$eh3tOwLR zpGxdYFdO~_ONP*iA{u{ykxQ_#-8=0;Bda9hpfFO&8V)%v(m(IgSGZQdNQl zsWShU-ti1=c&+D0A?HP2fG}dj7YzW?_%FRMWoa^Xu4Vd^DkCSge(0{^#J7qG;W3` z4OHME!bv2+NF<0$C>9gpCQ4@(gd!Cdlp+=uP#_c*?7{yJz2kQ>`!5GDWFrg+f-BI% zpG=5VFqR0HNCFKdo-F*s=qFKVGC=M4KWgArRICPxM7ZB%&`{C=wJf?QG~flY2o~he zHGt6X4yfl=0s>({f*pYt`E)|8-vMhXDKwO1^6(Fl7^2YR3@|YiEz`C*2g}JLQ|4M#3pqOp{ex*_2w5rl=y6{NJo^Z7OPR?aX?!SYCrfrX~sO<`?TT&xXFZ=12w2 zoCcXJ+vHs4N8|jm=VTC9SKEr(Zo)uY-v;>YS3xqasDkbKs|_*RsEOEiXS`>5K7VD& z#wi07rFB-FweRWjgT>9>5$C-`9HTSx{LQnlOD6NKZirE7y@jw?JNinJ{y#Mu56@2z zGMjbVIK7)A(qrId>D`N5(-!30-BmShRP4Tj8@w@{QPqzh;KIC6eiq$1U*`gk+h?YN z6B~WLZ5&V4r|5nypLxLRzFPb`U`ByX*{YjdzAsPLsE0-RneVSzyD~BEV zaQkfn)p*1;+UDme6v!CQJYh4NdUDuh3TsObUiAnfNS3RfY)WHK(;$bCdWAsdx9L^& zF7nM~x4XYKm`jR2eS+ZkJTAi26GihjQVEw{k@w42EOrSxC6tX}lErVqxM=m#Y={OQ zV5*g37+q7W(0?LvYLsM~S9n$a*o$>pVN{-;_A0ZWBahx^;Wg}h?0)_?adRrycD5yu znr{C2W$5WBOzsD&fxXW3*%4WXfd3)O^WOA`qDb z3WLYmcO&u|tS=3pF}?ma%)jYvZ0gofTweC|iE(AUA%8hGp85V>oyYRu>O4Xr-Jm&D za9Pz2%G%KN;}k=2%p;91wzL?Ni4Sw}a;)Ef>hw5xU+#3PDNUO*`p&jPC0}3F!%Q0* zIru(S$==Ty2)$rXna--H&@SXYPcIo99($#6-fSovy7;hntjX16$4-deAZNgj7j2~{ z@1Jm%=A+W~_x^=AJ|O0*O&^Wwy&&+NYdcN4R9&UA$K`a#<9b0K2@3o?%2%d6SOKy1 zTEe@&>4R%=w#naTg@3-R{y2Xmyt_#VNkRI3K`z}WyKE!rlknpndm<6I%`8nSUVPR& zkTtNQPT?C0=2#0uHKH{!89C$>iR4at&>5hvp3j^7lWa~j4Pz+^e-9r0OcWEIh7vDc z90e^&dT9z>{OK3plx%Q8-sNC8tspK);Fo-G`pkpSBmq&3O5pEwNj9qx2QkT=eoj;| zNzy-fLXxDQLt4~blH!E>7^32YzmA{gBp=m)Lu#d-h?Ue4+uy_@J&{_jBQ_IBr8?pw z0b$%Q0;x&nv1jgJXI>o~P3Ax2RT9hQLA0dW{5m)trUNO8(j+=KapVjI_NLyV3+V9b z!{-Zh9rmUe+|W8WeafvvKT{ORg6={K8@f3#kal|tn!j)0Sw#R~$)KH?rZ_m!$eyZ3 zXv?9XdCwm%G*L7xaTw@APx)S{SA(7svk45;5xZj^rA&IDy5m^cVjgLAR(h~u+%Jfq9rj=}PwX%55 z?wmRq><9nc+nH6R0nILcJG1T9ACSH2YW-l*pYdkmurR<^D@HrB&{zQNd?+3v5cEUg z;Kc$%X-hT)g=I*P{?pDDCIe>=*VW`*vo-xfMtz%vxDVVEGc9t&%HD z1?&R|&Q#77wg6Ty!SragvdPKt<-jG1NMwdE#Mj9PPt4w8ZD&p(dnm@SH^p5>4egwt z+ZrE|LhxTk*t$Z1{d#;^SH|a`bTnax-LDv7)tA}_8F}k3QMfgR*o3p3W&!6c0&0KZ z79ru-dBi*w@5QKScR$oalC#VMH~b@iRe(<)^Q*wxQhgT zjr0fuRwlePAL3CJDStLlJcmEUuDjkzkH2C{gZ;XH)fR1G=kO;Y0(;8C7ZB&?$>aAI z5tHnD)zXJ_huTQkbeaKV)I30T+SoEsygL9KZd7tG%Pc~q{%ki76uYlz87es{uyD&E zK(A^wi0P;QY{tPF!$eAY+}Bt<)DTXcTkU5qs5xMkpp&%{qM@3*r5GA8A=jXj-BTzF z|AdqzW7_WPnn&x93ZVrW zu7t&xVzv9@wi(j$$NBxsq?WD)DrFkkQzinVZj#K*znvcPVyrDJRD~5KG=&`||D|Gp zXRCjj+QpBwVDN}MSd8G%EB;BY0g&4N5SvCZNTKUzq(vD*Vno6z=HR6hJ*Fty^p~noGZ6zs2lP&*6JwPD)Z{?# z#FB8c2sP2BJt|6#oiCtjDRVfK_a;rDW)lX`jI>w+&Sedpi%sd%RBAFj-S>9}`Od_p zc)}*{Tuf)!dR}A%u5rt***NOa`j265sZIT;cKY(4U z_@;zbN?G;v?~*C@N(G!3rdegLabO?ynoZT||GNm$lIChreP{|@(3v4i4 zsPi<;Po0+S4lcf27L7DlQtppYUYEZKxSY3|aKxG*y^jC($iQtn`_>QH$ERi*r^zR~ zZ+ZOVc)6a+RK?6$CX$Xi*@a6$V5|3E>2LIokljz?X=H8K&YbXY+4*%XWNvD9J-UIf zJY5Q#i6h=Vu45$v6i$A7O$9k$0!G(!=xr^igu7ha0$U1le3G^A%nk7}KY(m|av*nk zM#^3C3LlTHH)ErG)i*1iu4QpbtN7^^SBIze z&%JNc%5oPx3Ty&RSJ!b*sBvv!lD%&el*vtu^)Xs`YvQ&+f7;m1-#p)5|GdobiMzl~ zsk>y>#S*yUE{r5O$ZFdjJL63Zj@zbQ{UY{pexAwO=v%o6Zu8qt@mx%9y@IaG))@1< zuNfTBsNo38R@uCst!&@Dl}?VXs?^W*jysui`|63Ta+a&+u>Uf~RKndJlNEgrOF_yo zGdD7H(mFFX8zyF;=Kg(Odl$~?FJ9_km=Di++E=q!Lzx%c*R8AHmTejwk#$?=9UGZ8 zyO2LncMk`5)&dq@=DX~yMo>q1UY7reAL{4+k^3POa1=~GY-^o2nO^*LgEXQz#4=&sCnC`{Iw9mC^g|||f)%~$Eft|2LswlVqwlh7EV7jBYQ%dwly4_96L~ z6K`H4r`RQRRGJ{asb-N@zW4YgaxCm<8C@Qvh7n+J1ACvm%km8=RzY)}lxl;OobFfF z8Q5vX$1hN++mc2jl0)vxWLb5DacE+GSYlvUVnA48P?(ZDC%@?wmkEX`R9qqHDaQ{C z0?j^$qJz=L7<{q7UFD@}CepE4(y<28!_ns$JgMZLq!I8_Wz{Oe!|1C2G`JJ}phpt@ zM-mH1693#Mrx+!k2FkZ0ajr0InRMkRohk)*k85!TFN#IwKP0zUkmWUEM*UG<+9n3X z%J6xOOZbCj)hR~z$t|fw{H8T*p$eJ`Hh%=RB!XZrsI3>#02wA=LD_51n%9_nFaYu% z_as3IyP~Fj@9h`?`1-8MnF;h#`D4Lv%EuHk_>i3P?q((MKKVuz^W#2Xq0O27AHVMW zreC10sH>9Gy|rlo5%~dF2xg+Jy0BoEng&xPw{V+jm%5U=lvj)mE~Ts-JzhbR&4Oe$ zaz|MWB@1$C8Yv_dM$eX@(50K7}szqJ&sV6^* zT|0_IZdIubwe~^iS^tDZ3w2m#sM-27Br@i>v`M?r+BrLOFDwtq2Yg;aYY2?F}Ywcmklc&4wPKenM-f zsz<@Ku7^ZJ1wppj_@w5-FVvZ$zEm3}2l7{8@21bth+|x7{wjy@QDdrnQS1|s)!lB&>o^nw?06F`NQxFa$9}mFuV3{dI8x%LGf0B$yNc(FgqS}!_+YGZ!_a> ztt;43w(P@3Sur?#k^O)q21hECP)ft52?2A>25Oi+tG{820xe~Towf3bJrFRQa}DB7KI1CQ-8cPZ`JiOM zn}~y}L?KwPOCAfl3}0!Q+&QJ6xNge*VYMj+nCefOsjz!dg5(VL+I( zmo8BRT4{7_jXsc|{rm_TUq}iW>C?^sx(RNPI{I@)Uz<9^2rOiNK#ZP@54)yHKA8W? zd~;@hgr2L^Z|o$MS+l-w3Y-ER#BnMtyJRMT_*T|_R9(ydS=0Y2@T?G~WW~6v6?4Ie zspPeS%+O6$!f%GvZa|M;OM5n>W=E(8_f|6jtvU-04i$UYUsvP2^;GWoZYr>Fr0?Ee zCQ>=7ItrG7UF#6+EpyU5K=&`Pw>;7~;gLHkNy@&GKw4*t?9R z_CC7X)AsSZo1Q1{$uAUP{54YlvkY-NhdGpit=CK8eyaOz8c`!a0AZwQ6c!H&u|zIa z=c1eVY_&{Yz|RU1l~Qg;CVh9PVdW;DYDs-`;(ceS0W&hpa)J-;?ee>t06&G9^~%8c z-{KDeuLrK!93JnM?I}yj?6j+HM)Pw&*={zApU)~|RV!@8)L4Qv;;0_gcYbU|IpoOO z_&9R@bWUj*v8gckIO#hla3;XJK}hoO%9!_ky0?F?oWG50^~0c@?ey!->&xI%URSi$ ztar)0x64WWd_I3}wDD@Cm%QfZWjd9^?Rb9f*L{Wa%@g+l9{%+sRpr%%VE8$-OR7%*mnF{8b5i2n*qhsq3EMZ6UypOwX%P#y9nqU_B|Mh$IO+8fXqXz+X6NrhCt4Qy zslF^#O301X{IUtWE}AX*@ky`K@Ah!YZyi^YsW|R*I$BHL^YUw(D`M(fyXNfc=ATc` zBU7!!y+hCkaoWmmlcgR^S<+NEj&fW#dTB&MqcsH&tFT8QmWkT))aV6^Cn?y$YE3F4 zXj)TfVMNWD#1TRkY%;4k6dmA&@3dyOc12R5pW&B9spAFPGbR`%h}Nr>IRorjw4e}z zvpR6!+Ya~v_DvK4FauNBy<`Biy8vLN#3%S=6(xu=O_rpBY_ll{Vy>yx7o^1bYH*)0 z*Hk9tFgiR35;_a8n>-nrHyNKNIo1T+U!cMgE!Ymu28!(x>hU-ut$xK8j&CWF9Vixm zhx%jIZzP@=B!NzOBDoz+ASF@zV@q-yiUREih1IAAccUxmf0iMEBZ&ngiG%RL)`{sR z+OuP={zD|c!8lVp+1v(K#5TX5WWepZ= z$7y^Qjv51%i(brT~VX{bKFL`$qX8g|8=)g){7y5TUeKs9T4UNeJVxqVWG z;t_lp!nkCDm=r z#ih3~(bT0j>MHx{{oZKmqNl#!%`M>RBItw?baCK^f7`W^4Pr)4`6csK5e=4cIda)P zH0QcwJIsFZ{tyBD&ch6eF6-z~QgpJ>5q<_oyM~?YI-*cymP?{hbhg;{>OB7&Sw-=Q zpJ4CK-QdhP>L*H`Ts(QrWATH;)O|}=9uXhk6Q?L!r;uc+8mLLYg^d0|zd-9?sUl)O zS`*?*K6#A9dG_@nZmuCD)_wd1;*o9H`Ab;IFEse(TidWpaxJ5&U8J3VVV4reza>}i z(q*KS4!`YKz?2AD8?Jl=XTv&0K%VStb=CQ&^r80q*3NCZ^&r;klR`dq6mErikcQoV z8Bel7GvR_PX-v14>?p zt3p!gr*FkF1X<&wkh4jKBu&@y+22&KGrlAU$;A*bSH#w|_>lUSS7I#Ml5UOE5*)uc zRl>(c&~0{}oq#uz?KIe2*9!B`@0AMq>tuR7$HBIdb=lwC@Dj@hK7y*ss=%dm<;^19 z0$(MUf~7~<{P4bxjwqa)NfW1Wl-2F+k4h&v6M4vC5Ds}JE}Q(Z;CO)5RJhEfd+vPM z%V9;=yun#b;`18mLeV0+kWz~)CK*f3J)9!YZtgnuVfYhSG&&}pfWftrYy5Ym;Zx_D z9tzpm*f8U`R+5~ae+xxcXv308({br+&q~b0nUqr-v)2%__A zreh>1rLf6By=a)+w?WX{6Onb&ZfE|w&CCHqcST$qbq1aKfOfTxQF|Y%fyqxye>i|% zKNsRhkq4B_N*buf0X6679vK8_)}nGhy8!L z&>&?$3$G@o(3?=@MM6s$_Zy^gRZy@dVpV6(ep|xUlbgdIbd%zyTnZLHk8s4AYLKQJ z*5w?b$$@uM2#pu=GFlgFs-BCmznc_AK-Scaw+=L3GS*-mQ$oWbUkTLzjN2;C#9Hob zwDD^`e=fr7&ISRegYs6F^AkXomu5YWZYVeUZ}1#rv!$^Y9yy$;LB&yP8_0&NX8)lr%pfX3urmo{f-k+t;!e{DXCNA$(1YwWxa^R(++4O z2_0IF#F#~wOW>zmbe*X^lon>R=u;^)u_lVDqd@LL8M@!gklb&ZCSz}&!*b1OzU>tu z%GUNS$oy$)lrh7#OZHHq9@7~?a(4}o#X2}K&mzbJPd3iEC!`EVRkP}ulw35T508;l zU8R&x=BGAs>ObnVS5F@wd6N$fHgfCpeQyPp__@W457h!tDVCAREA^9F(=!t4FIC*H z6DJ-=RLIGvbjZmHMYry<^RTA3PB{cuI-osQ9fhy|yHNfp8X(0xmxghB z4Wa+gn*La-K!??~?0YHS%W{fPk40~y5V&vX#+zq8;Q+5dx`&dAUY%MxnUP9*J@-b0 z`)R|+Q7t=hv{{hP*YjuvVXo(Mb6x4MXUNe>pHHi(%iH{ zQ=I&Y01edWM_Q}wTpxA57$exbgRVU#wXP~lA|-y~@YLao3f&aeNCd%TNlL{(tq z>wckLKMT9>VEy^!;rEX!-?5`u9fLAZ<{WvE08!1JjG7+|Zi%_@)z`bPgmHFF;fgxS z593rDSDtNae>^W%&OBAuY||K5!AUe{?6g=@XC6E&wzp2?K|2h-Su1Ogw-Ybml+5dq z$(^{<^S8~uo`>DDmzle-OQolXn%Q=3N7^lWejeVPFZciEIa-QuUgpC_+TL#NZ|A$7 zt{MHXUu_rjv%iDuf4Oh0;!O$59On|A32g9p_tmPF9qz^5*=@dD-rpX6eYil-QGqvzLD=$vS{%K<6Xv*FB$-$z3iscme?xW+%s`3P1>)8z%+YA!3 zLkl|FmHET7izEC9$bBX6xH#Pndv*rjQsGs^k0;c1DD9jeenbf21eSmU$+y$*?c!Fq z3u_cbxJyy(hu|=VYBL_MlW}=K5HGTGcpiMQ1mm|ED1uGr=yNx}Q{Vl-k4KGkCC|6? zm0Gn(TZ|iyYs231CLAJ*NtDJ)JXqeye3 zgtMflQec%Pn_A~um3B=`e=_bLBm}MW%TKBF0Z%2%vn{U#4YqCEZOajkMPpUvUFrfp z@V!z~`s2S?laglt8G0PR%FuW#hdTDTa$?lgGMAhU))txgq+ec z-2wd{+7x{|JvL8;)d#Bj3RSNX*+>V-dL9=TXm|vX)7z?8agf{4+(FCp({IFII?qaO zty#igYmP(pmQTBDH~sD(&f8GW^Uegi`@Fm~Y6O#NVQbDp^}sQC=iFPgQLr_ap?bSh zsnnd6eSw(n5{&gSAT@Kyp1=Q<3{ua(=TAts?M(}ep284s5|@U{Ar_`!WLYaOH3aSM+wG- z&Z=84z0Ui-eL4AnI?vp3?&l}YLo{L2)dwl&Wsr6o^O)sW&q%JjK6+?JTa;6<;wAOg zRV322@DL^ZwpK*iHOX@K>LwB9(%?Y@e!D&RUTdkzGq(xB?Mq9qH1&EXAz{xa{tqIw z%g5>N7@QSW*0<@~?&axzVuwgDrCK_9&M`D7IO4=Nd==ct?Tax;R=>EPeew4AkK@}R z*A>$$Di_x}&opR*z&x-_AGpfa{D1W3xenNJKy`=S-g0lJe|EC8b?jh!idi1Xb8L@l z-U4paCb2j%|6y_RUy${6S=+&(o}O;iQ#9|meSLCU&E|RdHlOcJvm@URUekYzy{Y){ z(0orLP^>8O8sI1$n5_ga#W8VWy$2d*4XA8=+V_C(5Qg5%J(|z+pr~8glt( z^8;??;0*t(3l9hfB+FMnjgN|IGB)V*foRCYF#m`jAOCl|g2~3s=zvf6qo}M;_vo~G z-kVKf27fll`Bb#thcjzsf%z>hqQjfBiAB|&0Aaj}{>-F_XXVn)_7O|r%I|{rDJ{gM zuE{T@`a-uYx_4gC_9yzEEUL``T3aNb78z+n2tN!!Ay_cW$sqjQ&7qUa=ffe3dUDY3 zb~Jh2ulFd>;7KqK-AAU64AsjUU_lA!}o@j~r^2*L-IO#`1 zvp21dm2JNi`QSUp)#O!M1uNl%(pJYS7BD4mhz=aJxl-1kDhP{VYK~!hYOzpDJ>zkk zJJqj`^r$nBgsf(1^g&hLyYQ886+%efVvPS5h06(xhgJ3vf@rUToq(BqgS}A~x>H9f z@I>3o|M=NCj5_y7=y#wel58|_B2+n{XrSvgOiz(p<GLl+8+nq94JxS2`#mt2ZsQTJ=(0CNPKdz9``8js zG-#I9C{wD%AnXDHDve6G2B6TPsGM*J<}@l)kuMx)6$cJDPm##ekR?K)Cz^yrD;CjW z5GQwaPJ#;R_Q7}8U+?OjWdiA&d<6WTnU279rx1Qp%2z?nq*;ZGE%KZtYcPS&WQ{!% zN)q$hXHr4M6*a1`K$qc5&=9U5WDW0A0zIc>;waqY3!S7yn$<0Q_A&)71Oq3X12U8} zb@Y)CmT0PE9u?pKOVv%Xj3)Rg?P0m2v+l(6Rkd0^L;rY)fiBiHWdZ%ETF#`o7 zL(wpNM(dQNtF~z;Y4MhU87ww0N?8~&qk`JGRXPjJ@r%3?jsTt(Qw4R$@n2bLXrG@` zpG&Oe;rd7!svGc|GVL^py2E&kogxE++J~3Dk`^?5l1rI8_Rr~a979Z8oh#3GPf9p} zpu`C-sdh=vr{QhhP|{jRJ5J?oeR7^Tnu*oF}At8 z{a46$RiTN>D~Dy?siejN&KhZ}2|yJ9>yMZ_t(RHE9lU2t-#opa4#7T;Y3BDf%{tj< zz4bzKQ|&*r1zG6-d21LJWq$Sjd^jloNuppSu?md zI+71d(?=uD`D{1hQOEroT_K15$~_?BN|}lh+{Mp2&+Tge(DwI@yT|{9 z2`s&JttoL~VA%cR1G{q-?5q_FQl^Ei?9`WBiM$xg6X2h1;-Nx$Byo+Y&T-zh+;#?Pf0F8^DC3VWAnf&#ybyLp+k&p8Y4J9Jz zEbO(Why+<`2{X@Oy|%k{3f85iD2H+*tx{pnW;W|_x?OTzWZV;rXe!Lao1MHTFY*+= zFD8A;i8WgL7Y=);0~!Iuv+!UQY&8`z7eR?n}&P z*!MQ<_*!3=n%trs+kQTF{5)NY>#DifUvjk}KVzqyx!#M_{RzIkcJf+ln|IZ2GVg}Y zyfU9W{hhgHJu|<5>l^H`KjW)FxEx#7I=n7_cOn43-#s)NVQyMG-scBiMbx+X`cU`6 za>NB;GK10S26o%vvpi!bekvUU-!12S-uVID>PE9}`}0oDm*?D$`ZW8@74P@UsbL%J zDn|(r8sZAO0;f2l>LXanFcI4#5YDC60}OvIb@o3DhhPqea1IB5&I9rA6_g!R$hA|% z6;#AkRKzv-4l-szvi~e7>{;irrv$*@*Xz6&(#$}T%zytU8U#xKf+YmO;)6^hEpUZ1 zA4i-KA`b)O4xwTX17i=N{sSUo4-w-I5n~Uzhp+Pz_%c?&4wI9xmQzj=$gltZ1sig->{uT5_h~eLRt@g0rhWUXQkw23Z z5F^3_%9=Z<>y**-k1-b0Ypn=}URI#nvwlF{Q>Hh-JKU1wPl3us78<-)L3C$@ zjW%4&ATWWbntJ+(+r!@kgG?#o6c-|H*n}%n;jdE54<(9wtU}r-R;L zHggh%xM;~4^CfXADj&kJZb{Q8vWZl6Yn2!*3|$ys~O9bEo2aTS_iSo z!d~YAzsYa2+$^Y2<P@*}e=5^%+E zI!Y$#AcHCvIwT}TcsYWjS4dc7`ornDRRg+3Faq2oJ~`ZOH+8PK#SduKF)1|i2|)fY%AP4Oi{U=#iDXxPdYMN%oV5DbA{ih z!kHDGgwNpr2^Rr5+J?kSR0vA4(FkJ_`=<_E^!~E^WdD7onQvgnwESwpOG$lJ9p_mo z{|5|K$WaF<_q*kd)i?$N2PrJQqry85A`4WE%JV}b3%Gi#hFXIbjpc58h%ZyP7*kqA z1I)Ee8fKXoBOf5!T=inLOis%Qse4gJ%wwutsdiwwyZTF!ydN{>PdM}5;yo~$EGd)V z)8rfNoY6Y}G=0k)cP|QvamQFk$7Q5yLOODWobgRvX^8bZkjcta+xKvhuexgFuB&p= z%b7UxK5UwhHJ_ZB5}=Cdkk{P}tL-2r6m^9%_1D2-7HmDjr``Y2!tK&3hiFOhzh_=C zM+Kt-)dEDUNs}JW*TD;u4k^nO89S91nOwC?St*-s=(fG-X0h5(mV52H%Vilm;%gBH z>WTWq=-fX{d473GXRa2DsY&(GDaJU(^X8r3eYN}mP6E6U)H zSr;$Fdci7&cCpYT9n!SyFj!O&xcU52;yGLTf9QJafU26WQ5cbK;h>0gr!>;t-2x&V zheo=Q4(aC5-5@O~CEblkDXnx$-r@N@?|a{S@Av(&n3c2F%-(0SXYDm>3-|cb9e%lq zre-ZCnEy@#Limo{f`x8ZM@4hOyIs)3qjeqEF<%@xfy!J2;-?_GW#dt)Cg43lqhAP7 zwkD)xFMu=4nsY{F_JbmEmEGnp*2bQMf>%yMq&%Atjr$3O%||-Sc!(5Mi2F#-{zJDi zo*s#^W5k&^@&9h3KlQ#nJ8+e&WH}@?C{LW$h5C03jAjVu6F!+I{V72|qv$Dmmur59 zcoqtq)dm==ieHJ&rx{YKEwS@ZSi1;dF{}BNq@mA}{?vd6tcDi=3tX|TzgMXvEE1lv z30A4(=7*Nen#0RAd_RaO)U`$G)F>Z?Pqa$HOXX>P38!AkjjmEQ>+1IznBYLB@JXle ziKg(0r|?N0kw`4dkWkJ*aoC4z@%=5)$&o9lxdSH$AM7Q`C`PoosB~RtzE0;P)1!A} zba{xRlkm|{QR(_lO5M(9l{;Zt?h=eVdH9vWGYSab>VKN(cCl6Nq-wbF$= zSU&BqUq1`|J{p*}cr7q3(Q~i2Zuf&FZpYZ{Mb$J9yV8? z(Y5%fR^+`32c$r_msfHZn@gPyuvB8fARvW6>)Q@Cm-s(gIe_*2krfQI-hp9cI3)r@ z{Kwh(23RJlz)<6#zW&hyhW!7#uRP)2G-ELRxny8~^b&q0ARmD~+jl>~rACj-t% z1Yi~Yt3^IWEeFm>#3ZRzNFLBC?`0=3+Ik}jHp1ElWZdY|JMOv^gkWok|&=#D-J)E@_=afTNi!;jWwTe=EZ&vrTcQ**7r-r?ztIPiVC$(Q#k1hm*D7f6oAZxpxZ@k<|H#23{ z<9+7o$&&(Eu#B5dnE)SLNZpOch=gvBW4>!ZUz{*-X1?|$^LyP8oMqCJDTb#7nn*I`7_nL} z$tu}Jbj?22kHMWX?YAIR+_Vm=GZJs5t4lBYeepSUU)A$Db$I9)rjo$t zK%MLz^(ERU=G}33G=HV^Vj<*E2<&#LtCzD5a@Ml8Y?{IJCDtU)a{BW*-G_g=pxMWL zb(4*7hs`cw>T`OoMHzKt*>0zupAqxlwx^9wvVJwla@}Vli*&M7Z*)EtQZzGnhO=CD zl4tl`pPgO4*2f$8J;fXPh1d+=_ut?)>&fa0*c|)i!6_yBizi7dWY;X8Rn=>>y;K~T z%0#W)yBWLBhew4}=2B>3fY88+;SH=UqQy%PwFKivu+qzsZFGZ*v&0@t&{#Iu9*OOh zZRlpjt2aJbeH(7JTZ;GFFh|v=YAl# z`Hb|ovZ8;^r#bgMVtWai#Ki9i#R^Q@*?mWS18ZGnNv5(8uOHyQPpR9)L5uOjpWn>C zX2hGVFG-d{LN@nX-W%ZT>9$FJeEzg(rJTY({ciBCuhv&|!$~ehrNd3RG_7^GRp?ZI zQlHN2LhP~t#&xzJqIn%>r&xV;-fti0q+{fhj$M4ZR`v;lJ4V@F0>gPXpm-Cz+ zoU^40CEE3z55m!WTXB5b?O#y9p&E4#hwNY-FBA+W4KnN|V{{x2hb&y4){?In@Dm*E zE#WRZ*0Fmt)z+5E-*9t%opZx3e0zP6iAs=z^>5Ao>SqBRE4upcTH6Jkf9=yD-F^6S@^D+7eJHfj zcz(D$M3WJ)#>!2)a@+5aFO2a}Yd4OcusC_r+Ry#qO*GQDyS=-9HC()PvHz!7eArj0 zasBpY)n3SYhU3XEGi&KgH$^^EGN&A^VlnFNj#pH}cX1@)Kj0S{#2bJ8mhG?(6^!)} zBYj0^cK1ful`hx@n)B3E@B$j;-4IT_@BXHE?h|!g8lF#cxYvvvcRici>efQ8Yi+Ji zko$@Qklu8vHiUKe48Z6BJT^Ofw8tzxp6DlzN@p%HFNcTz>8IuJNB+ zwK(jMI#8NR8hr=MyX1)U*vPOG{=V)8m43K_dO}a3@G8M>!MlS1p zshH@kdT`!VFHCS*aj*fid}w6;A%$i#Uq9#}bO-n?OsWSVQkqESza;r)=_VlW&v*$W8>oMT&Jp;`8Y z)_)Y&ogimEihb@NgU(lgNHPVFWtk?{;>Rhk!ig>f!zUVzh&B(Ft_#T5nVhURf@(Q% zju$fH3_X_&q|iNnX1f-~?JV(1AP3~JG10WpKkMwr6zZP*W*QsLd4%XK*u;tYLrXS ze&Wu>#42Jks?;(*zSZl>zPD98^KIn)0V|ggx}lZO;6xS^IY5e`Ad;Ap?bHkz8DzZ@!->zpKDO;v9AXj_m^xwsvYW8}?%C;)@+ za~R~{AAoz!dB|^imdp-T+{J3!B;=UKk1Os^U^z+INJJZI)aEbVxX_KuZSG@-PEgM^ z3Rc{WTauULJ&jX8AgmcyI#)sU8ZVM#-#~dS#8mOO=YR)ig} zD(fb4w7jBqjXc15Tz4z|f*cp$ONI$-pCc$a3nZ!CldJ_H^0H~E-RFMAo3FJyaG}_i zH9tDoul5sm{3WpL2NzkTASy(x9-zwm0ULjh#LX&}UtsD5<_qF8JVPNwMYz8_Puf}o zm^NhYoEHOsLp|LHj$S4iw!U?Hn%GG)5s7i!G)jTYf1nIS9+Iuty6Y!qz~nzLn8Z5j zexkvtuELohR&SANUc*GcO^I(g)ce4hflbJ=>!1;{u^MV3L_~^Z_MgW>e`R5H81eQg zDHh?I!03@KvLw}`BBoayI6R~ereyL$t58E)p+&+ke*NgquKtQIuFg(pQvFduG6?NW z{%8Whxbs-KlTPOEy&qcJ9Re(tE*)oSr-S-J85uC)SPU#m<39{S&ZC$geoJ8{A{)bo zpC;ArW#nz!F>|}P9v^$mICtc1?FPs_rgohE$(`>J7na9Z7WD44K5&q&R(A@OkDmXr zF4kUp?LpaZUOILjQdS;Mn@6Dv-#l829N`i@wYE-?{wgiw zBquFh?WS%{2J_iE_(Xt;pvT3cpN0vi`xl#eHph4MtTO(gpD42&rTt%3z2lvww@mYN zP%(+bSzB*O(-x$L37fnv6^$3rvs^WyDP!1V{naaT=CI7LkgIFnrN=3e6Kd@?%Uks- zi916keucnG^KI3nn4n(a*TbbEJ4Ij0201yoJYKDm&~ks2zGgm#zq<@GJsA^Xg8Q~e zvFN!$Uf=mAIy^WnK!%|~hBUdDkZn{4H-DbtOVX|Hf{O6rSM?8Ye{m&dLUlZ8l?WtB z&D;3`r=a1a=1XtjWMA-$?5zFJQi zLr`EDgG3$xfcFLfxIw@FoEOBQb87wK)~HaXi*)WJAV9d{91+1!n^)^7R1+T2Pn%2a zD0Ef~Ac87Kq0EwK_n$Xax=6XvAh$-0EDTpYS_UFVp;0{uehXAVONrPrh;&W#q#|fM zcIra$%)h=U{*`IK*x)uBR{@L<%ug{PtUx}P?APnjY1l=2krV6cEyK@KKuk0h5B?LN zzM6{f1P$?2{AY4zJhdF*SQ(IuCm$ePM`gn)FZTZ=F!hlb*+>dn8RqSAYcUyg0VW83L4tBe(p15y_hB16U8K(&a| zMm@WI)<6c37$B4fHpaZbCNdAfuU8J(Xh-4R#^Gr?gssJ-B7kFC0>@Gxo$!cVi*bK+ zVjMW}69PKaHwHG=K+f}cKzU&NIFzt=!1PN$$~{z0G(Z^U2q+pf+}laKaEG9^m?A>T ztNidl1V2t$U`PX;nKXS=698j%iU3pw7#XKJnBOg2s;m5FDb#!D7Hb#j=p&``D0>Gc z$Q&E@R#gu8F2@V(!o?8$5+8k6!vyS~I9;UF;m>YWr@$bo(E;N4c`YWH;2S(M*n*TF z9NUo)kT>%I?2T&y`FL;=iX>h zFA^6KU0Oa`2oL|!9`|#f@Z?3mhh%Hm?5Poj{$(2OQOLhQcj6uHssBpAvbKoG{ywKJ z+t&5Zws2z7TJ*$T+hb~6#@p>$zWLea%CQt7#uV8jX%OT@x!)O_IW{=?gmPc9qi|H* zzQ&ZPD&$r^G_zRt>r~|xOKL&t!j!xJ=Hhr=sGZsCt5Z8N^IrM;l7-)ix2nhPgQT-F z>1PISYHgmE+Ppb9;Th*j}jf+_)MJ`!xmpZa3WJ=5c5k?iWQm+pZ(WWG<1 zHxJH!LuHGsZr$5gL3GS7TCWms(C$lIQrgrRS3}ogboUQ$8q?khtkxURF(W&ql#$S1 z<GVm)`WUyGjk z&RAczp#tvMM+7wB!|S&eYSh}t#e$>19m`I-BZQf21BV%Y^b9dD6{gmrwfYXN*oNl; zDhW{XTqPCVxY9|Q+VPLncZ1`8Tsi;gc)#?Y;~*E>u9)ifcv{^akz|-&?Wo_;S1Jm= z+S)YDc-dR_J>@VzQ3SiWhgEmbrKx`>Twk z#mzLfT4{bj zKCvn;1-Q#%)FP#C>>SmG0FD&?sE`j7WabB~fxdu{^tHBK zT>g1hWbtv$rqBKIHF72VM(?oqL?^cIWN2~Z*H?v1YYz>f8k=8;2`Ax`CEmt~7Q)ki z+)KS3=Zls?Tbr5=N$$CMJRee&-JV*i_?fd`e)>uK^_5KjWjp#GQw+z4jGucpF7sYp zLamNFr`!7n?$QgkoR1MqAEPGCmW6L#E5xqp%qb%W0|#!eDqr|W>TZ70x@E}Sc-#?BGVV`knj{|N?wVIE7NlFE1et{wX_>H zX^Y3}Wx>^wQH{*sn3`{??ZvAH`Zh|6Pmz?Op-YLSZnSUz%2)+Sbn6 zaVSto*-Q4<)c3O7MYYA(BO8kr52{g$$wOE=H19Y$c{CXw6P%04%&f(fWrt_7wTw9m zYsF*3x3E{R(ROp2)#H4|vr5Vmdm#Af@=2q{3cBV-eyW^%bqZy_y45N!%XGP`s0Qr| z=8WXSB~JSk%JR1xZp`IJS<}Yp!G_DTvy1!EcOXhwV7<%e-mFvx3MzDYXl@>ytmagd zp-CL$#%gII?!2d%DzmzqeNAqu>GE-onymcijKMB$oYn`a9X+vH2AYrhJQU?Wrwq8g z<229T>wLM9!n}Mtm4#bAHs-ckZWO$!br`KF+XOzfwE7T8{k0QW{=%a0fI`laN*0## zj#@ZbXfgL}u%E9a_sm2mtf4}ju#8#@gz63O9hrZ}hE$(Cu9C+0V#mzhghqRK&GS(h z?1YDA9~=medH$TojhLMcu`rp!zWOVYT%zJpq=<+4`uTz_Q@-gV9xrOZw1#Dvz%3<<<1vQp_85 z^-u#Lt_OPyVPf5j(;Cd})d$~Go%}3RqSAN#zi;{GjLh*mbOckQ`~^L9BmDcpBsi#nn7qVktIQcboWtY3fM zdg)|m&l^9MjnR=BKRR_ng1Il;Q)aWWq2Xxs-0ClX3d_dNUs$VIeD^F$b!7z4_FXM{ zm{_I5XY_|hj`mJp*4O;@>L@(;J*vt21(SL7EsMb4-?sZL?G`hBPg;;dn{o>a`{kVR zZJfn_F&NA0j;VQxxo~WhaAkgFcDNLcfeD6pWpm3D!pqo&Fd_JS$MC>7X*R>Mq|RS9 zi8_kZrOa$hmVcf6?J|3%LvTw31m=FZeHCt?+PF))$BzrQp5?hePS(Ody>EyZ8@Gw=ikoj=O4#sT zVq7IJ?Pe{9S}VP{M7vZ_Z*4EKXuEIn`+9e3&{}=Mn^Z35uw5I6O^C(wvfTV*oSNDG zeE_7!>hf&~M3=)*d-uw`OFTqPX)QOA!kd&3kTZMpl-HE%nZNXuDCHBL_!47)U_arDM_`)#p#UAxWVMmf+^TN6IednMn*eZ#bY4f5-cB-+}3*lwr2COr_epDjMo;{F$J)IXV z&Jh|S7gQl#r%o9}1S7_Z!?p~ek|54`IYr>|(R@&B0~GeboUbSxgD>^Tmi*F4#fi6zSWvVfr) z`O~;gLyU?iJ(n=AX#wLyx1(H*ebcO6n(?-{fQ3G$7k|T^MGW_Cb}nK=8WdEMRACN`)y!hmrrkAYWkc0=N2vM8Op;km(t{{$Xdp(McLIA7+QczhhMR>d zy(-J?d(Y}$?{7GfsLzW5n<@_#RrlRw zg$`9?BPsq(0wOoSxmN=6oAJ+o`3Rh&K?hP@IrIj|fl5T^K}C^BVt76*BG9}@ZBH^8 zXxiRf`iju#MS2UP#4;8;X1&BJ?O1f2aua|n^i*H`) z%q$--i*$RARy4%dk~F%GG(Y9_}t?aDsnxV z0>jsMYD_7p^vT0PkP$O6-4E{eQ(z>5uPjq;krC+ga%J%%7`&wk_27SD6_fSpAZFJ(iD@mz41Wp@=BN| zXnVsOy4F5Ojc}+~1;mc%fa`^^(pmrsxO`n4a|La4lZ6CczAo)uYnLw*bw7;fK{|XN z|42=dwYjB*DLnFwKR>6YAGmE@s* zg>(4caYBMsHTR<5>jfI@NtlECp%{40P5ANhHKdkB8>J0E>%RbSG$cixA$Ucdl+G?S z+6B{dRK-C`v|0xt6S}lM%Cubi=4hzgko*twNq5pbR7F{d>2V8AYE|MGQvFOA zCt1=o+WFOPsRgaWr4r5t?(Cx1w<^`yju@`8>&sfH57$C-bYs=7QN{t)sy_LNt;#cc zt-rn&OP1B0F4IDjQPv*z?+jMlq|+gDcRx5*!?@^e#>s8QlwbWS>Tjjr)tPxW!q~y& zYO&B)nK)PRi{ulL($EKezI*x1?4w(WE!yJu(E_W50zb3Zu$6bFdX~PD9r%WAavUw< zTMyWkpU2M<>kQfDdk^kl%al6~?!}1YUn@ZGf8F=|IpSar{&S28SNJ@u<&~D-B!eEoeS ze#hLMm#R{l(;cHmx4HJ}?l=8cyJg1F=Ek;a>b8}(OITpoY=qqkRb{XhN!Ww@P|t4{ zxMJPO{a5+sgGuUxS`4(~*Qi+EBjKcOExVOip{Pb3Z%|1P7-kZI3eDY>tJYHJIo1tn`>eF z4K(A8clygVaIR|@AY#H=g}p$tl>E#@lPAQtA|eP-laI3J!0sEcD=PxMl<@)?!#5yf z7Ckd@p@>A9jM3Z#m68yZgtfRpr6f#wVXay5VfC`YoRdT=-XeiQ!f%Pi8jPZw^s@}H zz7@I?5{3c!q~*^!pQf&ZPQT%FX$p7QAFc}DIbL4OeqCzY~ImK~jah?L@* zB5?Sj7@=9cAGc^d@2M4JOML=itsix586T0f|D<}DWJmMdj2~m6LZV^0{Ogl`&(9wb zZW~|PHa-?k>SXKm13UCSAnV!n-=Tl^Z*hQwjAj^v0)HYh$h@P*Iy1@Mo_l{46pEE7 z4Kh8`KpCaw(o^>hyxp7@B^i%*lQ)aKmQW5Q@oXMUpAF8lxao=CC$GoAR#tq2IF##n ziO<&ggo}No@|8y@7Y1Ft(ir#A#EW^a9U7ADH>ch| zYw9G`)f$TJKEO)rml%(##(b!|`6yoD0DM!#vfg%P@p@{@{n^d$t|{5rmrr zt#bq{r{sGZO+o*jj0R*y&9|RfEyR!1&&AQ5E)GsH3J;$$kIeW*Q|~GD%@Q+>%-5Fs z`Fv5AWM+Fm*)3pU7@8BD1{c|ZQ_nhmp3%YkoNXkC>|By8B<*_QT1=%|kF2-j8LLqi z$11XS=(?Ebs?nFk)I(N1s}VPX*FalgCj=RlY5T zrn0s^Y6~LJFwqBh22pPkq<*GC^GB6u0GhH~fE_Mw*d0%WM8hO&0uUw?8m7TVL>)sx z+Yu`ORi1_wAQ)@1j=?=a)K0N10l}#9a}y_!K~PMLV$ozsJxEQ#BSHm>K{+nG3j&At z91Vt2^3$+eOq2r-6^n+cKvYSaKtY=h>6(dJvNNb~gUpQ%gNBJ33eWQ_`yv!|IO7oV z`wNU_|DG!q(gx+HA%LAiDU7sF57O1I!ao;fGGuR)z+a0 z#lyP8Hod=k^TfSW_;P-|;LgiQMnc0Re)sb#=u1%{M^ax$nb}^qZgKYbk!=-wDC*Z& zayrh)#6xf3=>^!~OL9`Q*wcTqIs5j%V%xb6_H!;P$#48BE?yDQSB>h${3L`d z*V~gXDZV~w%z_&8-0O*Zy*8bIE)y=v^2vh8e~3S3kJ2YG&p!o9e+nk!?(GW0{J>-^ zPV{L32bq$)ck&4OA^N3U0ErwLi5wD%oS}O?4VeHalqaBzM?g}EiXJl;6fA9Rd`1V~ zlh0*2BExpFstI=I(w;kehEvkK^P1pZSGC$AqDhoq91YEcWGc1do* z^c`xt4Woa8Ej5*ZZXjAl(%KQUP{qAo4M#wi9*Lxq`Vmn61+@PQ|1TM6xgG)N{U7ar z@gDiW_EAoR5Tg|xAkCP+J~_n3ie@Gtpv$|n><@h1)ON3Tga8s~;R3Dj0O@kF^+^V> zV1s*XI6gi$gc}k>0=kc05yHo4jfx)hcI9gZ(!hO#W6*r@aj31AMmH-qL5D`fY;M=$ zl~JO_pM2G{Ck*t;sS-M3e!E2d@uW&o4cpD$epT?+7J7YWAhe9Rsdi_5 zedd_Cb%?||T2*0VQJUzhRsUDn;&BW8HFY_EZ9}`1FyjxRsQa)}=l9jTFP9U(?KjGe zLpr16S$!p{8F`v=0=_P8U+b0rLbY*oxY+NRUbUEwM)~@8I4;8oTkkanM}W?ZMazwA zP|U6OQTZZQ&o;VyhzeY zLgH^J&e|izO6oNATE_+B<}j%a;`yGeD!1(HWh1gP%itETtBF!%rou5nL;A~EJAD>a z!A#m6T(i=%7xqX@s>yq^Q=rUk3qIL#7~0krpv-Q4`#HlQQF(J) z{~<)lcY5lZXnYJV$F`!iy7aiyWg74H$A;bG>FK4LV!KR{W&T`eGc=uQrOf5(1w;lX zzeb#1_@qMNwuDJ>=JmBEoysuZ9HlAI)IZ)@q zU+}~~tLcYw`(xj<^^cozd;9Tu*YW!Bt4}Wu9w|bP7l%@|%UL9?JY0lsm|X8^oR3cS z-=9WQQO*ho6+95x*SRKE8`fS)CDbO-I2muY`MAeyK)5^$GxDTZI_a%uGIz#?xbyhO z{uY^G+P%18k;<=hG7!!AkmpJ^5=yp zXsYEkki0%s0HXiGBMyhAY61x^Iew!S_H&RcN}N|BY9A3Gf?0agRFd)5uniGMMLaaB zc~1Jc4H(V2_`RoNJZ^Tg`KFm$P(pA+RN0BBN*}`<{{K%98d9L(=?fyi(d9eQi;Y;A;wTWjiF*) zto9H~uqI(xdD<5rNbfgVllXN@d&s~^Du%i%&KlNFwG^$?NStot)lIXM)j8Nm3mc60@xaWooNNwc>S@~e6l#rMG1WX(E*$U zj?}MM$j@M^O6q-@XM5D&d2(QR?aOn81Pb5vH(#tEmUT$%lPyu+^Jzhz^w^lAUT=N+DMktAra zc$y@*o&OdYVV;#B<{r7b@BJ20SD*ZY!qh^0e6juunD6WD4k28YY}GXmva?^sv{c~h zI7t+_@ActO_os-9wy(d(O;nLl)&FLc7HjQr{Vzo5U&QLca*JP7to0(>c%NTHtTi`w z!fq8A_d8}(kn4^9BY}zgecy`8IULMOyD?S$lG~>s*H4mSP52CZ>Iul?xyymE69=j? zP&YW->&~o?I@EWs;wDIi+tcI1^nIDX5~g{hobiy=-#Cdt1y+`ppDxez6b;L-x1WF3 zMgG;Eu8P*{_1piQ0NUYl#Vk*oTV0>O`=Pm#KJMZ2A8Ub?R-Fbqz{G!2J(E~-G-M8k zR&8?`+ReCh_ekX!AFqtU_hV3tVpAhxQ$NL~M#iR=V{LP5^}u>5DY2$1fyf^LqPfr5 zJRzu%!(|NUKmYt4|Hv?)^2f^|#S}xD>(Re8!CI*qKH{vAzmvdC~@L;GLk2(_1fKG7`5a$y5U)s6y zJW6CxR$5<9J&H})fOt^+Xa&X@{HOzBV|K|XpDyj5%PDkJ;zwQnQwvWc2WW{xZm!$_IgwwIVAb;NkBbK2bs#g`;_#uVy4(BX=;-xOFT$ zJ3gYwhvwSU-hC?OyrinIT>82ws9Y2N z!GsiN;ZjhMa{{=gVN?5&Ma~AfuY7{-&XVw1%1;qtjs!o-Puuv4XFYT>=bNu>Am+7; znI<&L%6A+yyUa^(j11IaB*t{ctY zdF{ibmS(U|k%ZVGRHIh=I$Fk zfw!Bp_+U@Y@;CJDm8DUA85g`K-q|N%-bjK1 z&1Xj!EMcvrdA>-(t;U#(wzIEwmg5TkaPOr=-ow@FPEnT&!$)oXSBar_3moyT|< zto`QIdudKry%dntF7i96G?6j3WBy(FJJcTEjvM!z4{Ib(*~=R)j>=87tT7WD%p1(> z-)yS3ZZ=j_r{Xui48ug`VqnX$q6{^yF@Lnt>Xx>T*3Uyp$b5&$F{~?n z(hZgrE!|g3R`hcjlTdsc<^&Fe7B&99zM9n)zfrDtS&~R!`gD$2T3X01GpdP3rEOj5 zjNzh?&V>geTZ7eeu(X<6t5J9t12;0z8a6vVi7jahk@LV?h#YfXQtpFpNyU772+ z`7_ZV8CuyO(AdY}q!DGYl|wkrB+8YglV>Gx8gBlTc2c+1QnWHz?Q0YiQ%Q6VHV_9f z)!9I#A2=}!aU(+1dH$(@Z1|@?V5*ZL>dXB6T7>d1y7ApXz ze*xf)2t{PW&&5cRFckpE{|BNb#bq5Jri+~Bke8kiqwxG%699n#@R9?Vyija4Tv-7i z#ZWzop^}WD5?7Bk!+sL33Ln@@XC!Kz_?e7N&M=msFe0BUzn3jvW+GpvD}SIfA0@*^ zT}cFueTY0BHj0%?KR}lv11PSLfJpXGl~~ne96%9@i%KmT(+$vh;UK;nHsfYFk{*zTU)N{G|NREsKuG^fTVFo|P6N7hD$K z`w(j4J5pSXjhZiCFi`yKck5)~vh29mj~WWM+xTwI`<_qPUmk#7DmLqzo81| zv^e&$_!P3atS=l*&m(O|b7ZI^8noZXvJgt;AF6Xk_MPV$)gSN)aqbV-?Nt#<)e+6I z!rVgNx@cnNOTssl6*~~LFGrN;;jXjtovmrOfQXR^QchX69zkY{GRK&3h#o=v1LSuT z8)btUb7T|z>>CWXaqz%96#N0pNI4GOgo?~ZeWROT74Cdf_ZutHg+ZViq=&#~po5;l zC=$|WAFM#IeRdOZ$(pNqXw)6C(i8NeJv5xo6I;A^Gp}4Bm5_=#q5he&uXGwKS6L#e z`Y-;WpiUiUL07w>x-pnfrz0mh<7n0` zLA?NyP%x)<+6s1_+@>i}DeBU!+UX|o$W%xN95ckl=vHkE!e929QNy_C_u zxV16LO$$Dg>s2Rc#z;F5R7&?Qt-x$J$Wk_8bS@;`FiIgcNY1pIN{<4MCXO(THGFO$ zNVY27-QGJ|7GkERmv7=mY(*)5oJGSk@|}R!AL5Z0!QIJg?AjIT+9lojQX! zGRY~E7sCKjC96!HQg)UYZU`g8qhW!e{5Uo3-jL)FsTW9NMTGGBo3R_AF`R@mns!6f zHlmXUgXkk@KH^=~e^p4`YMaIgr)6>6#WU^xLALZ%Aqmwf-v*gSlV(J*mUsd!jkO5| z-P)pOH?m_(K`m!8>*m|_SN5Fwwf)80XC|LSsB1G}#I#!~VQMY~-XQW*D*n^g#r>d2 zAYUdVkR{vM<@q~e@FL5scP5$Lm@nJjhN6i(0TsL5*HVC(P=y6=YjSrOKd+C`;_S!U znLks(Gv3$NOsh0dr?jIbwnAP5x{>))(nCgwd8cPCtGF8?X%9E3itxtNFBVCF$qy^P zuThG2gp8MOJrLL4BuUzkKt7!QswB6cF!RXJ$?JnO*@sU?ed>t!5nAQN3aMR}5SMz^ zXmQl;5LF61^RUqdBFisM_A=lhJv6#H7K6iXPN$W^I1Jm5J&!(5f^7t4dHYo_sW_WA z-OnFOZY#QmsidYq@X}f>OWw+byrh;z|5hSvt@!pEYd$q&$jkPdsf2t2^T>N^l?eUR z(&ZKcol5;wRL^QT-tR^7s?KIhO)^vpG|+~>&Tr=Rt#Q4 z=k$Cyt*eA!Tsowqu#y<_B$#T!V*Wt9bR2C=o~aM#yILVwr3C3{az%{!@T_#*=3f3H zl^0dv@BGCIb0&`q?IFP22F!%>$v@%O&IbMbBlLvTHe$qg`BCL75Ph+7U8~9E4pb(=%915CHwm3w3@~M zRr#+Z{My-LwGZ^1>KbUv(r@Sm<`vluGB%Uyyj4}$mC@w3N@@RA3JR%=~@} zcAIwGSJ&(+``z4HDWvRWPt(qyaz3y|Si0^HxfaO{zK~6S*ta>`Rw#EK-HTrS4&H2z z?y!Vs4RPgrxqfJ^+~YuXNTL2>D6!m}k_fyOwyjMt6* zX=u$BIaa>~W$A4+Df^$o(%(!$hpzCsPJWpQ{@L}s{HsH+7$j7wQmyZ|GxzjIJ92^j z`PMn^?6k+|`@EU!6#Fslycv6z6}=XaZKh$Tq+M9yQo58;!~W7#!&bjSk(hF(MR}sp zHlXo2_OB_PNFp&l93O5bMM1$sA+~e~lOp)3d7hquBsu7%(&wt2*z=z=i$3G;vze}Y z#MtL(?NLi&gEj|qg&P=5JRJW-qYi49W#AHMeM%~`|KfQ`zf>qZXQ^As=e6onl}ywTtUfof(|Ik0aua>x>YWk+FJ@O?S`Y>sE$?D% zi7NAGlX>t3Ro*AR_?sTv(&XE2nks3J_0J!&=jP$A(rak^#8OcWKgi(^k5W;MLnbmu zh%(0#-M;ziT~;E2tEnN@Dy+C8hoAI0os^Q3VLd|5#&7DGwis?w7|A$V%anM7E$xaV zCacCfH^Y)f+a*H+Zfp_kACPdHFX-`B#wFZ)hXVF~Sb05C8uaGlH&!2Wzt;lbv?kt_ z!BULNL5pR&}Gugv1EfH%y7j2lQ5Xa9M&fkM5l)xWohjQ=JmWkw|HRPxS zGpLk^J)_geMS+y5Afjo?zy&jy`itRzeFlNWOlUAs2Q&O6eg=!s0K|q|P*EO)f)l?1 zC)Y#9u|yooaQz<0J|G7bsWAd7$)PVXp4UXKIfJcGZ!A@f-9kY&;TcR$iz89Mi*D1n zFVTt3WN0vz&1?i{rx^AnCIC8KAcE5aqH{raq8C);h&uI_`sHqU{HHU`LCNbfDoP(s zo>#f06kH~jj5bRo-EW zsT0fL!1lBQCNzqHAzupM79!=AR#BrUx-bGmFQ6i5g##n3M9D3E0=mPj5QSQ)fbIgp zI0?B}Suqu*p;nM({-A9NPOdyo!EZ_nN4IB?R^D>3*RDcVxkgHImwt}tS*~TJImPE9 z4-`dft&N~!QNueLt?-Cgb{zHTJmF1A5-Ul+mM znfnY)>*I5;#-D7(bXsfYMs`d8tw#1|$bzP#Tu-H@iqFTER->XkTll3C%%sWH|I+H6 zu}j1I*t+jD?$zChE9DL$mkev*-dR{d_IU67JbR40V*Rn)M3?w}L7@7h7)`6<4sVfnq^|1$Ri$!CitA+?`;-T>}IS8Z5ZG5AJTk z-Q5C%ySwY#IrrTA)?4fS*fZ5tUsd;pnc3ad)m5?)tBdMMbmxEDRh{((5(0uDm z;l*b8+l$R}Zc$dmlVa&JEbv}CJJBx`^ti~Q^I~(nf|o*kQ|n+-#zlK+9!DnrYI8|4 zk|lqxp<%wP^=hL+@55CbE0l&klqDa!JwdGwfZ!f#r4yeQuZeah$b>pFpubeEg{?72 zaxtn4r3n^#kK?(gsg$RAO2#x6&xWCUGdF$f6(%qgf)Ufzc2r2U|>M3)0Y?s>*X;XBv@K01-+QV_eF!2t$YY?X;~ z;vLmfb2gGf|pFW z{@L)0>;lznrE3EAfyCSU+lr-JL8~ug9$$~hXQhf%&knt=e}zq7d%?1LOo-0^LEbOu zzW(ObcT*(sKUbW7wQ(B6%&DDQykhfk%J0$;Aqj z+$tt+LA%4jin;kfZ$k0Ez%0`}Oy#$&nYC5tudz)d-pQlfhf>QopKnGV9QT?mUBAy{ zsn^Xdw?AzTg&pm%4o#MAU15=+!$hi1ZRo@7A#ez-KXe@+!H;GMlX8xI#$#Tp4{P*6 zUH*vy+x{VOrOM{GA#|ba^l$Ppm&`)=Yr17ZrPd48R1rT`>f6Lj@ZErpU%GPHSBZ-U z_rH)gFr>+FAn@RgI5GQX8r#J`=+4EuJ>l&p=_?tTP$Z~YPAOH=Gb_8!qMS4yx14Vr zwA7D~D{_oJ?c40leR|Uo4+Forp$k8%4kpt@1>17ZP4k0Q0Bt(27!iiW6MSi^(f3J!*7dNo0)4w4|F z_Kz(4?3a)Cb-u50j5cXD!RlusX+`hBXad;@_jOP*o855Vr?qDiGI2i+UDrXKv|n#e z&cGbca~9!d;I6+cfU$pQ3okc-ELkNOt5%wLSJJ?^nrWQ`nhC%a|KAIsX})`Z4b@(j z8C?6|{c4L{@7b8Oz^D!*ha6*L{=&+Aq)+10^;X#ajFVb=Nmqumcn*Xb)X z*AJn~U9#_I?sNTraEuj#k)WcmIw3@uf{_RM3j)z;mm~iQ$AljKd$uw_V6*t|y=u2@ z1|BFDp?Tr&v$9sbmUB`d4&H+<;ki-+9g$5;F{-M~Nc0#4??_UErrt zvkV^};cAHlr*`7L75(b*)7`#=mR}9KP{i@Y(?LKm zwRVnz8_V9^3=;Z$t}e~-*nipx&b%94g!2ah2-a#vSfryD0?yt3Ud0PY=oC-ea4X`dqV7!qFYqj1Y4|m>V{^9C`QvqCgJY@DsYXa;G7GRs6-cRa zLE4ufARoE7Uvn-98vf*>Y&;Y*$Afo3 z2OeGDU;n*$50T2I{?DT+vhf?HJp6(ISL07yi2bFo}_pq1i)n8|8*P^E2Ot6clT`hajijz*44+V)-2`){91wIsEAcCO`rJT58F*lzAAE+v{PYm!u! zfyyKCcsCs`vw(j1fse^QXB9D_QYBUptIvgFVCv&Efpt(71k-tDOQ|d6?{Tu;^dcmYn;3iKQKhurc+0 zkLVNEQQ5bEU_ETIgt9?hFg|?J=~cuLIzXHWEdr(FSdPsM$XW?FJTGp(V!vFPH$wy0Qh^di@Bo3U@<6wy<&iAWjh<3dW!lpF&IkTLh>mUspx^DFqR3kOD1UWsWZ)3b3EF3jLx> zXM{)REI(2oaeSy1pZZM&w&*oc<^WToQ^}LcBnrf1{tq(`V5(Gr2x-4!N5nIPO32`f zQ%H|VO&`aY3{eclNvhO<2tR+rj?g6!l~4d=d!gVMC-JGlSb;>q!XRgw?f9yV)1{eC zEH@;!Z81?!nFBYUGdC{`tSlow1ri5a#1krW$V7k$^QEvOv?)U+$}z=raYMk$VPaE7 z>R^jmKx`EQBCMAH#1x?tjDUFVH+U*kY|4TYY*7b@wE=NCpshg_DnSp3aYDdTC1O+i zi(rdu!V5T$b`W9P{%Tj8_|$$qz@k&;@BlR001Z8=(EdSeabw`C5d#YC2c<%jD`Q7| z5?7cF0kf737Gf%MNJM~AwKG7egxC-96uEf~(aM)9F;e^oR4FtBR3q2*nSF7d8vL=H zauP$Vv>3*;z5z|YUp_L`e;JrPJUFW5!urCT<>{Q5e~YD~L(+5TMq8W56{l>pEXg2k z%aqvb;(`mA)(Qx-!8DAOCttt5(c%iJikELEq%K~lT;*@~deJwY$$Gtgm`i4w6Do|V z*t2{!#GX7}N;r{A05ivOy+IcDCsH&{Qs+oo>Q^LQQm6DW1tP2^?v6KawO_~$uUhp; z64#$G+Q!$H!S7zpvM!p{2I9I;*N@W{vR+w7Tt?5++DV6^UAi8IS$a6aF6CT>^tLH{ z+;1)}dS>iNRPK?k6F07K9LW4^)&5{S`EwZ9eUIlBD*f?OSEjh-@e~N*Y6Tg6{5__^ zZNQ?W@*UP%zc{kV=fSNxqe&flHAq%`6Sv1U^>EV6yEsR{)GnY(bXVekW_~;QF0a$| zLJlp15xPXNsrdeFv%?jb+}&f35?^~a3g!vYa+_%^f4%f^fY=iGhMTCrY`IDX2@?2Z-VW3oXU#u~6EN;!YI8cIT@R3k9@(_Qtp0)f zE!c@gS@!6~u6s6%i}qoSfp%WKY9+&4!Q*GP{e?!KUy${bfsv~Y!8V_lBYpi2pQr1C zo+JIYlY>bSYx4v6aB-odR-D++y3dMaK`%pRXKS9`Px2>^4{il-Jn2O*BkW4bm_vv0 zjQ!mHqBIHzTSu-b@#>gQg0!WSdO%6xkkxge=?H9o(~Dqyu14@+_ugLPL$bQI?~c#w z*V7;l@|EZ3U+D;yQ~f)}`-o43771@S+5=p6K8{mCb7k(?+9-@T6!d=OXrjggyEsH> z5F47Ai*LfHWAQ%*YLO!iodk~2I~kWd95XKT>y44QdrpE*khzG~u2CBEf-VyTkAFW? zt^COk%2{ZNXapG<66*F)Qs12T8TEM0O#1b69m9xsz)-!Wyw348ur@SetQh~z|Mm1e zM!6k#l%%WI#P*7W6t0CUy84H<64G7Lt}_yExo?9ljxYWi*P_4dIZIXGNOOnD?An8^ zQzJY-3aoN)v*4G9bV8*bDC#)MqE9KS4Nt|UP;mkXA4nR%ypX0Oul>PWf`S&b3E^$v zv|Gh;U_?mf%6)b{j&QvHQ%7>x;U32k;pB`pmeCid2X@PNb_*yww$oV7AK~ZRy!s!V)K^PwUM^f zp?}%-cc@xCw&#^+JtTg1A9Ro>aTJPQsAFo*JQ2UK7KA?$Y_BRt<(a0_LgASPQP=9p z+^gbaKWP?#En2-%a&8o%+qQSwk|F1+?9=#3_U*LcF29p5YIb}Au@qDKbs?P;fd<9ej|0OsD3OGL(;9P~KSK*4+?n>5DOV*l6))xFPkuO~W=W0&0tg(v4zBHo6 zhQul=t0AJ+!%PmNN9y?!_HNR}%#lU3H=KusWWzNOE9kAT7-8IHa-z0*mnwlh zGRXl}^Dn^IA?JuFQp>RvtB04TuoAZ*RIdCo^IHNnRpOZKUrusNu%`TqZHfx*+vhGM zI>*ge=?5Xq^k{OLNFu)h*|{}XqP>}!;P5H+Ix3b9Y_?TYwUsS}sftd>JAEL=L5Z7U z1X#R6Jp(Dy+MsbA#e}}yt#kc7LxbfPMMB#lw7)<`&vW~y*K<}$i*P`zVDR`xZkKH79!0={VdMPqcODZT&lRqPkPByVeIk1Rs@d!Q9p15e< z_PkL-8B-~PDgJK~g8y}(j(2yix-2qDFf8l1Yh!)(8H0@{^0(~Qp&V;cr69Yy?iwY` z+Akv%nBS+|?A#7D?0y{B*m<^-E^lALX1sJ3kli029e~-1nI4;|XUldcfafDy*sIjw zoz}JFmm`4Ev_I^yfwPSiXSfgvL5;wf8xDPy5>uHXvxWRV7KHQihf?FBhW2?x8ZLRY z@Gp6;M(pQJLTv`x4Pyy$FkQcSz%ghUAaQY@I$O~S zh$vi1f7N>I;(14<{!XO0bDix@8EjP-i+*^YG7BQO;1E!Aj&my$D$Q1~wJ4QQ2Rd(f zpo@BUqWl+9MO6c6>3g_ePSww_8yI2Mx32Bc%X(x$1;cZk zKG@kES47C9v^}s9#7r9>e>q{SrGkat#|IF6T`yZvTqqHGAN%db{P#}4n3Bc{**i!h zJ$S>1ORiWyLt6Fl6?9(?p-s1)1V(s7>3`KV4m1K?W?*yPh8DxtdPx`EkUcccr;bPbl!xn)=V{pGh?`HNX=~ScvC_8n{ED_lBCLT*98A~MnFOf+)mPtI8sk7FZGi^>Zi}CpK6<8L?S5HJ_5Ex92_Y8|7=RY zi}yvKl!Ouy#N%+YG0@qWXsRy{R+Tly7%DqZ^ZhO+Xh8 z{|hkfi;xQqB}(}>23nvC6#$S20HnV;P{aWisQ&>D0e~6+U<52^17oNIy08Q+%m9D_ zpbNP$0H6T?%4q=rV4(~cq!s|E1psD%h0%Xqr~?3cdOH&hH2?r~p#|K<6#&@%2RH%% zUjYC!0MProJlI;&6ypw9xB_l-7wCcku%HEup{5AvLK(0C1_0vn4isU)zaN(~0fpf* zj7V!Xp7lIYcX?39!GXfwxi6v>2Z#Go0~nBw7Qhe(7{DMdHGo^t0c;14Zc3nW&V3-p z3?p(^rp^~Na-cwm>~|Mh8m>}-fRK|Z#FOlZ#pn(W7eur zLnm3$_$84|9wYF-2%G629oJ^OvJj3A=ZNWAd4d>ZgF)$Gi6FWBuh>k$HD0csu3hS8 zSx!FQUI2uWK5x_zhk(l?y_{PalEAYX1692JbF9EtgCO7dFt8U^xF53Bx*sy#Oc!xE ztkpl#G0L07>@T9lBs95*Zu96j(VjV+Rm3oy<>|)z<(J@Xk>{m-VVr>Kb8mIk{m^1@ z@ZQqRazOUPdVpZ-pVg|GnN*_0?A?sJ|bQx|HB^LP@k&eEU(X=XXR`TmN<%;gjrw-JJdVXXdYo zg>R47bt$8FbLxTZy6WD29fw<$_HVPbunpz3gXm+FVy0q8VH?P-=kzagKO28Q9BZ7E zUWR=F=bQ6eZ8>uc{qczzN_dT6t^*Ta6Mi;2LAo#dT#SrCKv9R+n@S(Am)Db-LiD%6 zUX91puMlIt1}vk4iH|lNra$W;{2d0~1KyU6w(ecGnJ<%eTaPLoXN&8{4R*|$Yt=}9 zZ6W%X{4;K?CY}?SMwK_rJk4uW(tmAt_66+hb_vHP2Vj@Nlk?NzcD-);hd2qqa{} zS$;D(PxHz*_Y}wzc&;9ZNWNrLXl;F&k7yjq5kB#Q>FEzfm-u?Ow&$4GxUlMWad}9> zR4L%(-Xb*oHA`SPN;KiJhYw%SC;AGZt@ZcCm2A{j*G9y^#@2=Dzy-yqx1;Bf!?V=Y znY;JLnW*b$)}@^nnH^-bhzD7g%*K?5X}L`8QQo%@`L&6kp~fyBRrQhN$dW33f+9Nq zXERr?trAP0gjrt^HSYQlUt@ry&5)NEa0TbPoJ3;?(e+775B3&@wXoeMe3G%8(sAi0 zN*zusb>>pCBrV#4CHg?|v$*=3eqr))5q&7C|J=|l&t|^MtyjHK8rfT<;-N1QcOa|s ztbXggmwsuotsUqC7c4wAyr_G%WJ`NNRXL97r~bV>-%em1_-qt>Yin*3MP+TfFT=$} zi8+U-vvg-0+IS-0$4VlO(I29!q=)uY!K_N$fQN-jnyC8$;WE1t8_O#lhwiMUj^|cS z%L}3nhDP6-WiPA37{=8v)_iqaoW8rsXnAV49S#r_QUb5h$8VV_(6~_P%lNxB`4a4?+9X^G4FHSNGY_3Fo`@luN~m?z>gZns1@p zUqznYH}L(Nk1!^+A5~B_`83~#uc%9XslJULQ@4;Pz71$o*L?eO64s`^mQU4sH%&-1 zBNV@3*rZ-)XpbQ_X)|+LQhGP#AygOAz^dLez&T5*8B7wCOlSXBkBW*#yyq8OfyK2y zC5!kL8Koa>>hlLAxt?;nJ-7lp<_NIXuxzeH=I!+U1lj7_-hXx#eXOw=ht~+-@qd+h zXwb3?E`(yHv^>s)c72LiSmip)oOVfTPo=E!iCwaNvH}mTTADYSx|?O=v}GYrKIq7H zj+72<7>x>E9baAa5u~r_yl{=;4RE!)JGaR*BL+u85`8+-O;==EaB(_XeeU9orx&Qn z$k0iCx<#{Tdfgpt-H*K8Wl=9q0qzEYAF6LhGgUbr5*#=moWaF2cW-X@VC4xELz{mY zpC~JO5?w0LUxr!!I?EhC-P=A~mk%^R*_YMbT=qkK-q3=yYkwmmqRZM zeb8IwKlL;5bVd;7j+NyC!gZHkh||v+5Wx2mj(hjpawHmoO zd&Fh?%eMN(3~|@L?Jd))dGJ)rykV>8S8n20feI;--xgenlanN5fW~Ym(Ct0xlsl<~jzI52OTzJVcm6x;`#23O`c3C=D@wSM+5M@j~?oOC7KdJkQlHV>I;^Py=$ zg~+8=9nFkInwm8(Jclp%JU0%ky{`I5+B!o1l}i(fr(5C%3Z@x80R_|c?*3CStr{qp zX1$>lU@@@W`1Jf!AAHQ^`;(?=1=nINzTxQ^Pv*XKKwqf!byg^^4U{J!lqc{xPk=8^ zKp>Cea~=g>9>sqM<9`Lyh{dOfAEtsoT#^) zsH2>yi=3#3oUx;vv5TDXe~2xrg11?r)M`*Ft57QI=Tug{R91mh+Rv%9e5thmAuRv+ zdqafMi}PGolij#hKDWMhsGgGG-cX{cs#?K}8k}pgU)j*ILYr0LIO$j-u}n3Mq3%$1 zq9htjdATF8_|vAR$;iqQpiFfa%EKkGT+Rtu_8VxEvNnVzW z?7qg9bnF3&w7#k|X7CrZ2eafIU=0~{2U zSEFi1*MCNjP5LX2TF=-h7HrLE*^@m_l?!r`iH5@$Er5|?5EV9m5;B3sOH?uDvaq9P zwea5yV$0<+nes|8B;w^xz*jIt&SGPH=vJ}X?q62Z+yBC6`$@vw(HKv`=q9XqbUiQ# z+1PywIRZBkvj>lm`6mmjcg|4v{96JKob!Qt0j*A|42q#edsPBK4^U4n>39w=``_r8 zJO7OiW*itD)8xO=;klX7vL*}flA01uH|LBdzf04S3D-QQMc%fRz(f>|->!vf&{{o) z#P@0?!=;ueDiyG_P?>19Ak(Mr6MyZiDiiL?8%ov+W=%W$pJkZ zI?3Tr3j!oTOsc(Ek2IgUiLp~ZPsta@zooASV1ITP%6le5QqYXSYKO};{Wt|ruN+&7 z7MwmbtLtn4ocakC4KgvR;3a0GV0W6^h{i}s0;C*+y?|7H9FR^M>s9ccvzD!`LK%Ms z*H;8xrrS07uhg&jj=B%_G(Qsg+Ms{GT)!K`VQ@*$sv%idjVN&?bB$jIJRCzV!gy%M zMpkE<^LZ9Af)|Jb_3qD8IYo-8isE-C9w=Ai&Y?k9<6u6Pd$mepiRR_+WfXR==R=X} z4?X5Wo`Rm?Gw4P2Bj`n44+yj0Z#l;VuXfO1gtJI+u6z6x-o*^=MG!1*3`0_!fL~h~h4IA7nlhFAh`sO99 z^~?enk+}=L`QD~(?UEW0$tuI3z{w-GX6jIqW2mc_ZpE_H!r%8@rY)ZzR!iBoB**W{ zxmKSwZKKy4i#^j%w&Vl_H9Sq}LXhd>gLpAa*@~v~ry}t5_@r=C;QKRdD$d%V+ZD}F z!74EJ4FmT%4T-o7frqV#bx(5U9OdG!V6RM|Nx6LTi}nsAhzkO*1y zxkP#b?e{AS+2NSNqN4VU(AX;4r6v}%H+l&wGB~KHJ48t|P4?;uIXjoO7_D~?0oHTY zGL7K7`BQObT7eS1XvrhJVq+d!lk!BrHI3q}t-Z#m8BF&ViI@3d0#W4RDy0E~)6b!v z9s;pl6|;Ye?@A@vG&{7h1vj}Ay^u=_Y z;CGrJKAe>>0Z0?hQX~iS3n&x6=^#K!_rrJgfnSN|A`T)Q@+3%l;BCneLMkCE`W)Wu zFCmd+^}k8|Xs&I6O66aVA#$=RJ-K~U_gqdKYJT?0wGS9YoV?g|p5AcUQ*HiKR}_;) z97qTeVX@yQL)S4ZwBrK&&BUd7EHVcvh3QifTX$HICd1622KcF=d2v2>y_18vPTl*J z`Jy`+mxb(c=_E4Y&4mA1Mm4<<3BF6^uaqy|5NOl{+&Q!0s1e?+l_2xiY)SdN*5$`& zt^OfyTgC*eH^xl_?aa&q&BcE5_0NYo70E{#k^^h{YW~RlxF%k*it*smtBpfX9wGgl zT}tpLI;2;qXX55NWAk;7}Yosi{(tRSFW!Oz6zWXgnSNnMv)o zq}}%RTx`xPcBbb$uTI>us(s_^lPR5EjSb~u&Ys8cPWWY~`h{B^ZaHffY zrh7h07^?|2Y^TJj&Lyj+i+!PVeAP9pq&h*EffU&8t!Oa{{cwww(5}oZeqSbY?Ah$J zoX6KRG(pELOR9=7{ES4gx#O@71Oz&L5g<;_{6q5Aw}-&Wm(3-_wNUmNYk}R4IJQ;0(Bb)r*obi) zS=!U#^Lk#maF#j0dk#Nz-}pDToa0Z`xb6Y4Ot=vXopmzK8PYxqp1el_(1!`Z@Ke2i* z@Q4~6Dn=iMuv6}y5t{S-5QkwdAsdg@Y*FO4X6dm!j>~-Hcy;$VV|;Q zXd;g~|CL9SFiUx_ERk+4hIvh>aHZCB`za-xp0KODqC9rO*mxkX+qZc-4^;emffFkzxRdMT+N-Pj?EA zmAzD&KF%?5&lYm5BoL3`4+ZZ;f_;~jv4_<4XhC?_l3i33w7{tz%S)-6?U?OF3fdYG zpJnYn&CM0&P8Xui+3Ma1l>todaT3{OO7!aid25Ln(vGcjHs{BJZLscY+CMpGV3 zgb=TVPOaxO7)f};Geq!MNnosuIIgqe$&cGK<%C5T8DY9Ya*88+z;b=;se_-IYP8nM zv77&>L2Wzh99j(#n^%o~ibjtfId zJci@S-D1uraKx1}toUre!J*Yfgks$(qS8^jBA|M-*x*3zZH11X1An}MN`!T0=enTw zlj|>U`%v@4BtA)yYq}*nbN!Pwmhk&%-;r#U!t4U6k%X4~S`mf6|A z^RETR8X2`D(Sfj9E$YmFy7+d?Z-ZXW`8nC+ZD9Q9`%<{emznUbOq1LDv4XTyn6h>Y z4N}%cU}V*rCj+IK_;ZHE3o4m?9jiwQsYcR%yc1qX!0DS~WsKA^DE*A$bIldw zj14<;)>8qZSehJT5)2SW6FeB_W%Zbw5PX_{M+Mquo4ljE z*`36y)X5d#Hd4$X50rQ!WzKP@QjQqg9phiV35X`=E08y0{K>`N&oFc4lfwrXPygjfALH`BJLAxqi(d)~rCi~>-Zr;}zf zQWAB<=)sH)!%v9T?QII$Ca314#A9V7Z~m=?IwU@7EyZM{Ear$|PeqC6Q1q$!w=vR? zc)E-f)21$#<%0o&xK0OSIINYxR>hQVRS=u%bz=0pHaS%Poef!pBn1nQ0b6Y1|QjE3@A@8N?$(ZSeuJo~HLJCE1joI~ecjQTzbZ?{oJW7Cxr9K^5 zj%ZOB%D4aiBRpf!k+s_mOjci9V_{s!4=<#nN@js1wN}nUsuO!wP z$3l=v87iag&VF&;CRrEUA>s5UvA^Tuc%&cfeK&6@%KjZ8BcGBML?n+ZR#QFz`YNM7vqAyMApBt@ zIIT)&t<=-j zB|D2a%Mrr0Yk{6Pnc>2H6Ltb>@NNj5MbHV*5~wn6-ta^GLjJm$St3jm z6CYFd%s&kID)(S!XBo0hPO#wZnu1S0r#x{&Zc~FM! z;<1ganYj)dAEah+Q6do)zn;*o!L+BAks#A{=-g%`$Q%MUaf<%`%T|C2Po16Ql>11; zV)ZM*R~f4WIz06|lEJK)3{)<)HY`48HDPB_2p+VAJQ$wEYRL*Jw?GLFpR*6Mvxs&M zNU?O%2!#n98lB-6lbjgh%yX5r!~Ok>uQ;S&Nb5n?BtSn77;8!Nu2baDIkO| zg{)}=j#Y&k27H%6FICU}@f*gL;gXTOoI?PJ6_lK-8-}j8=BQiqlV46nndIOe!%P(px zaRxg+DztX@x1@o*aHls7!n?48fOgi5a~e-59GE_d+&y_k@In^a-%-|{^Uk?YM9YZZ zsaO<-+Ax2(mq8=mPCTlqnOls5;vAiRfX<1NOYWqEXN+a{r z{CFALFdon z*uS)#8=RcG7?!y|is}3^g2fn$J<3p>iRz1wah~)>Z^+zTII9DwjlrR%=$|thg%0S>gt(@ z|J~2Y^%o`%H=jiKjx>#0bHs(*5aN?k1;NO|`w^jOo(*pVv{s=JKeG0FemNyRi#NX3 zJdHCd0eU)*N0y4lt$NSro2%fpEIU{NIdyVbl?P(9)$K%CLV5HWBk>l&}!MwU@(`ApxOIAwW?rYT)nITtiR`$1eX~k5O!gO~ zr%B24E3;kfsf~z|SPo1&L$W`A&1SJBK0t+`CN1U#dF|H_*d7G!)O+Z^k+VhsoSCl*rt)T$_T<)w!?N7R?egxKE-73p=e*JI+!L*wGgC+(M%R9QvN z`oA16?80z{qA z+vHe{#z@5SRq1n&CtJ3TS}gPmgk;F~R7ny3$AAo5HXjbaX^uwOXG$;;c5S04m|Qs( zhUc$}3LEr2RfeX&uxPHrM3)Loa5JDQ>-Bduq#{k1gTIbW&B;(a=*8G2n(iX{2UiZUT!!2Xg7c!ouDV%8blR%=Z8zCs_&}g)tQ| z{%X)S2UsOqkrJ@XhNhph70Fx7-kX%eSYcf~cd5Bnq2S_ca6sc1!qE0m;zszD$Zi6$vhbIs!p+A{N? zfRDYHJot6ee%$|kY22=^fC<&YqC;#sX$5~=CzyMNMIyEN@1%>xb4CqO&ralV|2_F# zP0$Ly-JJn<(38O5hz$ok7vo+h%XRy=RWFJU(XBIx>C#3)PXCv_2q~>?aP_#)q4sXC z(3MQprPOc{?Y`TuY{e>mdA&;WqAkeX( zU5~pMef<`v*pJ(P7cNLZhK zlDma)s!IE2Vq@8zhYX?qW`TijVYe!kOZyd5so#t`ZmVStffYDw0&yWSJ z)ulYV>g=B@rT*G4OH0!Cwqo(XF`02aKi!V7jszt(u9){Bpj-j(T`f1>2U8A)zR1Iu zzs$Mr^uZnB8g0?9Y)fIh&m#trIwWtV90-9>$y21OaZv1BzK0krxmp!Qo#Fj-gCw~b zx<3XiJ|(QM5=sTShQm7^kodo|Y^F?}f}2GFbsa-f#q(ze#395>J^D^_kdC^!&=bmL z3MP`fGg!)!%D!JTmS#nAKCQ$&45-S;R zc=?-cm{hsnG9dZlSX{?Jb}dxrR%5xQaWktC9fKK19!_2IRCL0+k%X*XcNhU9kb1(51*bd!pI!SGrpc%Ul65j`E^Uc#e|S(+ z03o|}?0cJ03n}_0*4$6@&;#L#t-pxb2}3b|pwx9~yyG+DfWtXYp8AkDX)GbD_A82j z(E(M+jDv~_DrG7*@q>wktcHIyfxJ7Ds2PVc%Ti%pCO{)OU49 zbYE<$J17fffKaEp>qLQn<}%(^mq!BXLb7cwmhQsza)5z9R*9p3X)@dQ+0r?;{C8?8 zQ<3VQx7Br1rZnf&gr%pIvhz8vKMuBncx?-yIFqGCQO)0k@dS!4t{vRLVe^+CVUtVQ z(1*^GYB|$WEPvPfG$mUO&PaaC8kyJkG-TA!SJLr@-V^%Ff%jYEO|JFz%e?;nBeG7~ zWPZtY?1zlF_ox9>XEf`+=Hs41&nQ>&aMaik;9s=?~sU_;zpl`Dz6Hx?`4@ zmK=RFV>p`;)Wz<(DYLB?Ht_3Vv#qS->Vx+Bs9`5Sav4mgZ+;aT&d)tX0iQv~G(BpKQo~7e=+dM(TtawPcJP{BjoNZ|Zz5B@P7BkYMW%| z@4BUL(DDW!^E3XLiO+{%uLv;nSvy6(r#ZO2=lZKlLu!YmDecCW`9!1dThI(m2DS5`=9_0h35=lf9ycd23xmfmhOd@QGqrQ3x_hc)l^VW=`+PD16J5uSHHbknzvZaFy_msy z3nN~~P6pvlvfa{6(S-zkMvyasd;DX^f;Dd&Qm2R-W~on6H3J8gL!BkKj%|_u#uEmW z=6EI*gG8wgL!|njz6D{I|5F3g?Gvb-!aPdNs!y^NXnhZgOl!cojwLM4H!1QmnLIOn zQp0?d>J^w|Q%8ToV#o=MN*xuJl(!R|V`#fh+nxfl`bp#6}Q(lz_S?h}LpS_usS zFcHuiVHFzmIR+-2FciagCfY{hoihr3a@WkXUmp}bo zl9g{_r;R6>i}YB`7{;%JbOk@jrd2<3(9cRPr3$Qj;p80P%B%HpGZ=p$L+x~-j15+x z&{~i@Dg(o7xdzKC2VA|fCFt>=a;a#I4!M@bF~o{M-+l9i&-oa-kDPTm6Y|VY`h{{HhLq~XPjNj&JVrPq&x58*__|G?kjU3uC89zAfJaB6t7|Otn4ISOrCtV4*3&r z^)}rCY5C0sjFI(9n&O$tfYd}6T|D_qxZQ+ZrT^2K*Eg83qRr4$A`W%l@`~Oc+8vEJ zEjX|y z+xNfu7Go6na(9}>vUltlq_*dKa--|(%=~}Empkr?=6<9!;hKf1_y3(L1ZTdcHKym= zzqdT{<3tNJE%v>-e|qB0TMyFE2olac5W%3cd%GkVNz`lLWAV`fe>r`g?%&G@)Zymj>F*Xy}h{FX`9wC?nS1FUh7jYe_uri?AU*qLFwb=vAiJ zYe~%?7JZq&9N-i7DRMNW+uz4?nUyq$HZlL$f(f*<;SP}DSRI`p($*t|g`xfXRVqNH zVGK=0M-t8TuNA#os5kXhm@QopR_7<*-lC&A&>)P+AUk2tiqb^q1y$!Kek;m~!GjX5 zf!K@q?Vq`io6~{V!}4CPClDf<;+EFcc4oQH>q$H*`@FR(dLNm|T39s6?smVZH*Mmc ze`~-!@2_~Zo5~Tko{wGujt}RUthK2 zpKk)99qx#!R+#i7WU9Hs`BX{%ga7RQ;)vhsiYt;S$PSq!^ZPUZrgq2t2(l5>d-S{ zr+)I6A_2RXI? zI2!`$t~v?YyTmR#c^CO@vId+``O5RZ&uuq(VDJ zq~UNUHx~|%6qWL*#Yv_33S>%VQk5a-BL5>v{YRBW!$j#7zUa?uIVud*j=LJ)(T;xg zBl%w=wX@}^6FKZ@v_}j@J&Vt@a{g8)a-!3$Q04osfyBP{QI#Q%=N)4)e`|PF<(Ht^ z0D0R072)E5B&c40X=;f#R71Y8fH6}Z>`B7vnERedYz_=-x<;8hPN#rw@|817^|ILQ}|o@*}iv+?Xk zZ=GfzvQxQqWAFy&in>xs!pMh3H2f|5`Ph-LVUJ&*xmK;-HV7h0RQSepQ!LGt(xX8j z?ncjl56qB_D>oXL>7ZRU$0)-z>DNoB3M7Gl*+bga_w7N0u|x_BqM;Z|u?jmwHMklL`#qUD^URZ& zm6w*>xs^@qY5X(G_n=C4aKtnf;mgjs5d(|(2@hT;zM6g*h1l~N_6$|nODXBntt?E$ z4bpx{4pkC5HvP^|{NG`E8O>wuWEc5Lnvun-k;0Se%CV~1vxb8~NC5N5`Stg`8Xrq< z^^;rbb!rAwrl$$X{0xEdh@W*PA;uPacj*V7Y5A}&_Iv@rFagYM#Sc8FYRSir(auOnHXcwGB*hhCSBgbNS$>l2 zPsXM)8$wEgTCw?yDkX>Ld^DGf{hM5zKr;bE#Jk73a0rOvqu#RVx8I=LTs+6Ru<(g$ zwMd{-B3DU|FT}npz)p+9N|Ke1lBND6N!@@=g_9apm_)x6BlD;&2)K$#U3dxC)jpE6 z@zMrK9x}v5TQ*ImKr4yypf*je=<(7yvl})|w%7pkAL5G#l*5JE;OYYiY=sLKif(A3 zT0Rv?9NfZ&4Q|nUnZkT2J|cw5o+)}Cpa`X%3s+1vfFc2?6m#zsy*i*FDHcH0!wP|I zxk%y)EVpcMV=X9Sk`fBlD%u+}p<(VWT=Kd(D}|C;LqhU~sVjxlQUIf$wo=G>>GJo4 zAMgrsqxpz-D%!qLV#^f%&~j1*u4H9Y|FHV^LbZ9u$SMq(LPKsmmt-4FO9mp(Onafg z5_HepXlZK>6`^6l1oD&1&*^m8(M;hE4AZzVa-oBcw8|ElFYk=|qZMZc(l#`77l4<5 z`dUcT4uRk62R^c)z@~ggRF<;AZO~wqyOb4<@`c{rP?ZVD=vCje<|N?BF0=Q)??f`i z$`&{!-q=z6)Z0EXn&1b0`JY2)!kIHTs+wf49XxccRjW6)ZCNI$^K^1{Ch~knHnhSB zmh$TqNi(oydb9nvj3gZzNkKwO_hn9q%)MP_aWz9o&J4?bnQioSSK--#>;Rg6nP9}) zU^Xo^A9w$0@_ZxmD_I5~MH}GG9gZ(wEt!D(0}>RT4ZZx|<}^L)r}&vu`*02iR#8~u zl}9SmS?}yd-q(C3==o`p&pp8F2~TZ*_H)XDu3c1klvAf&+^HJP$Hrg{!K}dYtzgHKgZ0LI?~<&DFVrO7* z>?ki7{NU0EemYO6%o%{2ds_JR7ZFWp4ZI zXI=$=mvd0X?(=`x$kT4AUCmieUWISaw=%2OYM{ouDktHI!|e1lI->UCy(`u(QoCR**oeFenm6tHa{XcFu)K=m*ZftUWisuMf%2vU{Khv`%0R_ zeiIfox>q~&FBdukFG5$B8X)|CE55A$LHt1#^SV`K+Qxt?t?vkPG!Nzaj<7)$+L$|~ zjK#7+73%TZrHpB+0ArM%S0Slzu93zUpI3n!O0OyY2_>yNs(1Im{I}AujpT1P;NGQ~ z6NV4lNdM-@R4W_Z$DldKC>9N>Xh683;rgYDph%|)JA=^>tm0`wP)*$`UiBGuQ6 zhmNYl$87iq`mBjw5YF@yzs5$twZImNQW|~~g8%xVfDNH-)8&6qOv(T95%u}L=T+c` z!K+oe1XU1)Uuw+pMdek{ety>Ej)Rs~=wXRyjfLKqA2P(`RpkE1&;Z%Sg#d%wr=qn- z5meFMf37jd4fNYd>{-(@0a~gr4=@V+5qWmyK$c@s+SWsPI(<~0T{KWFof=?1)sal7 zfUtGRx>Z2iHbE6T6vO#DKlV!XS=FXB*+u5u&Y^?peHb#$B%XW?J7s-IERm$~4vR_8 znoMf6zbz<4=HydZ=Bo@5=LpG7X7Ei6%Tcg=icmzY*^=;(O+v#(`K8)3?2BZ$5@cM z&ETIpTYFPnL9&(ea;<(j#MJ`U?S@-dy8{Mu?*9B28wll<*_po2=`c$i;b7$Eo`k@M%J&d9_Ino6kIxW6qrkSe!AidSRSVVAd+izq zI-W=6WD>F22WTtt&KYJIX5t3^%|83P2jo%GM!oMJJ`-Ob7a``4=0fUKZ??#hT5_Q~ z+wyoXlyqNvJflI3rBd2)&)YbQ2|Ji@%y-*VAKgAqdnV0I>@i=~{Ch-vmwtp=73?Qq z1-cy&+&E4vC2=kkN;AK%I@QH2>h?qqvF$1QH$%2=5DGXdXGA`aWjJ#Y148GX$oSl=NLO!i}H@$T~60g6t&yGJaK4jf_241nh zO=l3qyMSXl>Gmr3ab8yNJ;5<-8HGFCEF3EHond=gBRGu~Mt|2Un6vzN8JTuN_*r(g<$ONTEa>B?e|tK^rZ%OvzUKbz zxn`~$jmG3;^sFWP+4R(Xd&NXrpnqDZFN{AozgVh|5pDNiBn9dW3mqJh26b9!GL1-r z8e}z@VgaJ4$)q3!YLL`qLX`$JgiR$&73yb6gPsK|(pW3fg#VXHXfj2XX+M@}$4h}c zgq{p5DNU=vm33axtHd=U5ukPp-O7PJk!BZSMCPz6haIpe?z`>F}=$HvRhr8P#@IEAXyGywAi*3cAC1!e`wq2 zjc3>uFGRChPAsrI*Tr=|S)!h$1DwO>QxigG0gYNF?Pzgt=@{GnWQ3GVVH{+MoY#;lwYQ{B@Y5cZg<}EV*sO-7q2JKJBdHBIzq_Lz z6;=)E`(97vLM;OHF#BJlpkl!sdsNbr+1^z{gQ6$VyAKZhVIUBu{ZW0Lc2IU;O*N&f zW1xxYGDDpwX3oP}u)fZ#1m;{b#ZAkwk;arU-E3-f!fjwhS? zhgUBk*o6%a1Y{ACAjR0|=+duf~ju`2V1pY6LtV_omhzvMt zK$d_>QP+T^076>>Dh3Eu%?-kqzDcjmLxF3x%9cJbtD{e_pill^x4Cd02}~}goAvet3U9w ze4O9qLbreM)jf)=<0)mWas+PwSMvE?P0S1<-R10?9nGAXV}(I}DL@0Hw2o&FL9qWP z0lK}rF?-b*a5;JQXnL1^W*`9oH30nnuSD;XVLGb)6^;R&n;u8im?d!HXXdK02dw$s zQ{5O-Bro#gzNMdcrjD%tJHG60?GUdLKA?JgHzW7GKhTAnK7D z^>Chfzs^c*KDgAqx7E9s?~WId&0)}By~8-?__q8=Yd83JH$K$AYo)rr=#0iT#EI2c zZCznF8N6_y!PyPYn8X2RoKt}_206eP`vCus3cSGd#FP)@qvOl2D_n_#7vT2vn#7OX zzzaAz%$HM2_@>~6y0L<*u82ZQT5tvlesP#Ug53Rvj^lXhM>fz~yyyDGX=u=u_c|-Qb=gBB+0P7u~u-h7Y!bt=jt0HTcIj+v#DdnW8xwlG+(!j>MEA zmaWq)W-eYfmscsK+4P*8jDM*~2~NXEIXRJzA6Hi#I)28EUEA!ix9Okk&N%IfubmqH zGbW=wFjeUd%3gIa%v5glyw#gm=x08<5gKa%hjAWs?lb%QDM)uS`#*Z1?=v4Y_X9H9 zdzW;U(iSrc>&0aJm~RUD6mYDzZAh)m_2h*`G@mw-OR($QMMm1mXf@8(nLKjv<(GcB za$L{$SrUwyPwBb~((z*hzuXvhH#9lFgP%Xso@fOuxUsNSyIyq!^he2f^B zhJ!tlewk~wsGjbEI#N*Yz<~OF(1ZchFk&`nk3%UYGh6hFva}~3na`-N8WkRyPtHxtWnf?wC(&hSG%O1S;b86 z6!@9{m-6>FxJ6kOCs^)SGTS#!G~nQj40ps>S|YcoX2e-~4(V!VL|b|$>1q=IBnyyY zEP-xo6a28u_(!PbFr_cV6-00)*ki)B2l#&M>)1 z^#WUaLl?qNUWt0^l%ikoB-oBzh;8tLeDl^HQYob86UCVe%YFL7 z50C>cHnMexe{*}aDhnd3K`M3UCvMqUk2jCEM}GDNES65N{qyW^m!{3?^s+>23KGdW zE8Eat%o6#W2K+eG38y>tT4S2rI@&zNsikY{k&!v2i}E0fg8()o2Dvg{+)6IIqXX#f zh~l5Q9vNh;N{sk%`t*;#oi;xgf<6)oKGD| zAN1XFu(|Vd>+8eg(aFr5G58{uGmTjc$BxaEMQJ;YJK;sj@aEp*h27vcKJ`jZD$)UC zTPK#iG^(C^BE!%_j@g(krF$a(5Tg6E*^pKc!`u%Z4n)1gfI5oeOB(@NjxlRI_r$Tm zUt?u#$EIv6RkWWG_2Q0yb!2My$^UsJk1JRcYL2kS?)j-*51*Cb#!e1O4Lm}pT3sJ! zQcK*S|MjV0-XRj-(^@W9HxKmh=X(hJ$E4m`(7!4igsjAZb-VhT)tS5g!RN`I=jRPai)@94Lo4m@1(9t*JU6RP3SzWT7_|F{#+L3lPW3pp zZfQ4|Lnb^s0oqaDtFTC`5@+n#>&Lq7w0HK5Jgqnt#L^=%(jyg;@ERL*$c@3Xdl7pS z`&AK<-_bB1_(^ZWJKdM{FdD=IO7QeWo-cthqK?v=zSWzP721r@AK2c1%c?qy9L#Jp zH3G1B7F|uPdAdj}((b>e1r0JW4Dr*^sIZ_^Hkd$#mzuA#=rK6dReH?N9z=CF>N6lWs3%Vx4$~pzEej|l_9Szn&A$SDE#Yf%fV77f>@Y`ntbOlT6D2xr1E$W(wD77=ZRvf6uZTc^~nebYCx+!I!V%8OW_ud{C!BVDvIZc&C4b0+1% zYdwwbN+0taclzBk*3~vuK%yxxlc5ZyBJZma zFV2<7r<(~8lb5_JkpJl5UEkmYc(Y&I+R67s--_E}>|(_+nD8!K`&54~_g4qkve5rO{oNCo*`4{zx+qrGD=!%N)pHZQD+`Wa zr*IEn9W4Hy8_jj8c}FK#D~)cmAylPb81oh z|AjCcp}MNc`R=k#W`)cn>W8@B!5pCyrmIwrts>CI!fI!GyR@S|KRFoX_v?nRuHQuN zDrm8mk1iw19~jqgDQL)ApTZkO9AS>}>dH-Lk%}{Rk#5YclmxVYc+Pkb5c@$&kN8E^ zO;0PY4bdiJcU^ppM|STN)<{y-L91-H?TaV`OEo8EJ1zelv(fV#kvYPn;hgU>IQ<~S z+Toh@CtojA7=r{ElwF!*4HWBW_>bmFBu5;+`^9Y)r>HN#U6%KRv5)f*eU5KvvdQ zYRF&fz(J2Kkl=fdz`K!0sMJM_pShnh)H-xocvZwmXf5D*+Xgf7}P0{<$oV%7w2WFSoPqnvY>Lbl{TDF_`6vu82r`> z4(!x_dpUsm-R!(NA4OK0@EDer<~()GiG|Hg0O5Fp)R{a213UcGip{rnX}a%nCLyS6 zgKvH>b(}xnd|wLI-2zjxNXXhhnS)Bn(kd1k@|<6Vu?T~~;6Mj;Az>rTX5Y?b$l!Kw zUqO0>+|(HV_ZAUux|6%N>zh)R3cEMq6P3pKgoz6Bk9%6C6S+T<(NHf-EAF;BZ&Df$ zGxWNoU_tb@%AW4V_vI+YUymlr^K-R&mc&!FlC)c9vojG@Zf#y3bruOU-7;n_8?2Xe z1Q!H^;X~0&W)P%iUq+Pje9?bpfL{q- zN>Ko>(9w_n;92O<-tmuxUpUz&d9#Kaxv&jR(O|XS)`Vc$z z7QPry%YtKDpc#E56IEYQF@XMgfDnWBhNxx2&dncvjV6w}a{g)s!*@Qzp|IngQ z3C2UoJFz|~9*evW;%|Oe_fWg>i>kT{hdq|f+87OcJJVG(yW$f{73@z-6IH)cZ}aq$ znJZYh{Hr6b;twekZhvZR@nmSwU^As>7I$j*`67CaThC9*yVew^&JWqwcs0aCItdRD zj#|FD{yJ(iTFy>$jMLTcu({EZ${n5ezRGjzd)RK?Kz;vOJh1E%*+zX_!R*{v5hR(e+FjXT*h~p*@^ix$)y#@J zJO9JUKBNWIyS!8~PG%-R5AOF+)!6q?bwBn{RRE5J5Gim#dt3WMFf31j7tdy1q_Nv# zNGt(n=vX}1NGwWP{OPV?_pHk4&`1LDuAAx;b@3g0Ux9+T@>b^_HV(>I&0a`qA37MV@fDQxpmzFp{IO%Teq!0#X*^)fcku+CPlhnKdv@gXfsVe)R@3=YLepxST$o?EdNb{6nn7#n=iByC~bG=};XyjG=j zfJeAB*4O8((be*}C0Qm;^LR(0S7dizoG{wo9^qF>`_VyVvj zys=`zN2_AYw_tC?`g{L1(td$A){paj2D2xkq%>=5BtAuje`1%g`%!%SEB3mCs0!10m6GLZH*Wco)c z=D=MtU@ZTmqZ3B@PWOXPg4S$21y88A7Un6mo`_0Z^ z?@6lmm$W;D-gH{;;@~e|J6f|}E^9&p-_X|sCDhkU=3cbkl*N<1 zy=#Q^wp+Nm##Xc6bRRAlp2_B)X%@gxi>uu&$?E2#gS^_DF>o8W>#^Lkvjg*J;K3bd z$0O!Z1d|k6&=jlSey}ZD@~C^5msmVpt{xnQUs)Q{Ma{i+X_io2i&-1B=d(u<2!1>u zV9ThLRgl{|tt9;>Bh9qK_0#d?kh(p~{aa{xC#>GxD!O63W%=<|C$NH~&J)>`!6KeT zkb4gN%iNOlSL%gjb=WwWREbu$;%Ty_-*VSwy2GjxLv5FV(<5nD^eV|U^!3&p9#$iU zRkl0T>;isNq{>+&xE&JsNKUuzHgZ7vZm(3?g1-?^L=x^CT1)1>IHdaY@Qj-Ab9`q< zU601PLQ=2or}RhYS_^8Q5==(hRc07d{@i$9Cz5;K(6t~O{qnw5%1+7*SC8#Df_HZi z48Oa`H#9mhtsOR2v3kQv!<)WEs>a87vhhC(u@WAYhzg8Ae3PmS+UhFj(cAW-kshU~ zR;i5zsOCeQH3mK0spa5EV=8$q>`Y^~7SBV3 zIBM^HW0idAiEI|eq)@FDq`SA@W}0Amdwc^wFx7eN`K?L<5rE5He2F1+C>IpygR>h4&kjwPtz`Cb|K1=Q1#BYB_% z^&`&sAY#NVLf)Vvfp&^~zmF`q8RpU&d}cX~lbD7T`E;+GQqnC8dv_KXpjUU1xQ722 zG!x}BYj}3vw&v~r@(9fcHe6j1swO|JaZa+0B1+q=L>AhzXB+?_qS03u>g11 zCOoZ4hp-_wEuUMI1)-+?glHquRrQk_`dYDHEAU$*StoxrCekT0m$ zCt~B>52o)?be-gIC%Q9DlZRcB^9IXso@hw}tAgqg2d$x(4_6ZBs`cg4;a4b_d!Xw9 z$sSyMyiq2>Omf#8;_w%Q(z>!cAC%yPQXb1-ibbW0myXV!{rsW^T$!Tj+&|H2c9-eF z=QZz3;c2zwaAMhY5kL&uzts_G%cj?LF%9!)10}a$-xf7hpvjDfO|+!$e>Go zQAJ;5MS1pLE^MiUcx-|bLv0fFGR92NJ4}A;B&=_}uwg(zatJaJQ@2)<_$R_SqOk$u zyf~!?C(@|P3hPF8*@7w>cY;b>FF&3pJRbEBe@qINNA9i!Yv1|JDz1V&7M6^>d+p_3 zluYK-pK`zjQjb8K%;I2=U&H!OGPC7Xo-&2%!$t&ZhmxO8YdkNjb5)90jw1XiTWewM zgB#gQXm=EZJUG%$qA_!h7;fZGv~nYfPV{IR^QO)ngTk{rMSuiM5EQOIoBSfX9e%}x zi?K8JN!56;#w%RH_l7@}V3zv4_*>F2>aGqw$#7*2_A^Sj29S|PFinv@8M-P>$d+zm z>Oxf;Cus}=>BZ?`nsC2jLW5ZYarShaeK#>3+NjKM3Dt>9qQ!pJ&nP1<8mS-0YU`L?D7nH+Og}oAH%L6-X>VXi4^cj&Fu4$zE5b^j zGgWmXdYKABdQk#w2;!hRy2!(~E#Jp)Te8LP@w7vyU#jt2hwTU~(*xdn zm3Pgb(FuoY*?k!6;>x>agTh^B4JXdqa%r+nOi8%6I0OD#WA5o>N{&6lUxUI+(K3FAT`&o1wQ}JO z)SmadxWW(Bo)@{mq7B!c!;^3EQ$FD3Lf;7z&_jAT15~Zyu9yV-WZdwX{}Y+5QMYt_ zA`*_0CXoRqB;i;c?g7u(j(xoc72%SpQ{=OdtT6JXjt_4C3=~U+oHAE8C|u^^3+edT zwLaWE9+}jc2Vd8WjGr|Uq?Zm&g#xFi^6v#x0NiDm{7%R-N}k0n|pJ?cH z1^45^n}OfOWg09<36e@)u^?J>mJGF6xGfy~bw6~L50-ctt9i!XxSn7n)&8Tfc*PVj zync=zyhRP^MWi1HGpWzh39?&zS&h7Di>Tm_N>IUE;PqDdB5||z%ElJqD(>}hT1O^biN z7x*{S)$&x1zc}f~pS%6Eyb#}X7PLM?&myjCBKnWA?Jm6TN@eutQ}kkaUXao7TEz2f z9tMsf=xtT#HQ?>s*N0p%IBmE|{zKylam<`;k zyCmX7DDJxZ!Pa)p9%rwBrgst6k!c+Mz6{i=yk$zc4AJ+DbSihxQAckc&b-XbZH*0> z;;z)>)%-W=Rv7=-+xKM7zufahhGj1cGEIwa43bp`{o&QeQK=GN(_jgLRPN^OR@3Hb zDcSX`RMcU@_OW}t7=WH#ckObm&2xM&v~KiMxk|IEgDP_~T5tAdH6}>VSSzWjW6D8a zbOhAK#(eh2DD1fY8N~Gs>A4P)i_^XW z9*ADGc~E(qJV4iFI~OaymD=R239ki(*%XY{Mhozk9@s&q-j}@3HbLLhGboSNjxNHL zFSfYi1y($LdS61BWg-zHE%ED;EjyCG(h2SOYuOtu37P@~8L{uuxv!@VXZ!1@AW7A@ z6XUTUW{1Asg;iHs*5BSy0v|$mrjR|I-k#5Etmkn8|JII6=T;0x8dqc5{wzHFX+eUR zISJh#`<>$seh}Q%9j&68xT-A67m77!@&*<`1(D*sp2Ac<858KP-kH}{#Mdl{N$t@{ zW_&6L?&|PeVx8JD-nz#*t6CYiwGkbUf(!{7XMUb8dGpYe^G`QP=<{yo-nMkpnd7tZ~XI^wqg>mik>0leMhOKsfRCQjNlxdJ0Nn z{CHwb=d?%5QHM#c@R&N@`zUW^B)N9^>zF8VXRC6Q?y7C~QTfJ=8&J>P^}%kR$?3fH zS&?6tG|ZFww6A)JpW!eYuL`-a(TjO{1q_-Z!(Q}Wt=!$6o*f)JdpKC3J>gDAg6@}p zhh`;#Pl^eXX~*xq)6$z&nN%zkg5Fzx`7K)59~ANU7DaC4@V?JY;4XyJ6lij4DD@Ep zO!;#e-$fw1l5WA66>A?D`(Ww#VRdqN@OroZ>bQ)AKvt~WPN|F?Ueo1259zEy{v zZ3VarLc%hcPli<`+=f&!=35}FpTYXYym2-%DBg`)j`8@ zKKH$NpE0x8;Yf6UGyPtu3)or0a-MVMnubm}Z{{&G~Q{fz(5CjbmVY-BIU`vii4Fio_<;DMm71LHWtSbA9 zAAdyrLazf6y6^Pf7>nVYgI4)X|BTjCk$)Mee6toR+@NRjw&Dr;kWLT8bXm0;YMN&H z{`O!h-J^DUGTQ&pF#N~f>GxlkR)_M-?2X`O0iZ$$?cO3tz5yqBSHDGX?21?VZh0OD z{9vaW5TeuP=a91-#1~3EM`Qfmo}cl6FGwwUo`$-(FggAmJ`DpKQf>D4mM%j0QzMNHZxkvm13S}0w+7|*TB zaXz^kQ{C{BD+LNyDTzFN*Jj%IJ62&%g3za$@_`J(6o z0k&6EUuk)D_h5`Q0-0cj)*Df~u;aKUGAzsZ5xcatV~(rqWDff4y&Dl_ls~SiI~uvN za+Dl}!ki;6D)He54#cS?o{ulpkeKt*K{`qPhCLsdzESpw_YCN$e>F7DjxGlX68Rtpj1FS%J z&Num#AxnI8&iuJ;#msj~Lw3&j0>?fSjhY6q6?MG7MUIvB6V8?%-p0U)Epknc(KtJP}!RG{XoI3)k^0 znN!Jno83?D?j^zRo|kK@jzTr6Db9feUU=WZe`PgCdZR^)R*g}kb=YBZ5v>qmVMb8a zF?rH1MNmkBq=J`0&9Bm>YifJNt!jx+-VshGM|nbi0Pw4?cWt^3T5IkPDjpu93PTOB zT~tJ6R5q~b;a4C!*-h{ka*|Nt*VZAg1zbXgjn}StXLKI2>1FYCXCmyl>?3sH1%uOs zq0TmceUTNTb*B=xROIHekLw$p;3?M=N(rLa><4t=s~qJQ_sn77l{{4CF*o;Nm;Tp{ zg<08nXSb(zX%N4nC2lcCM5SWx!#4Xb+thKin#Pmp8FDbim&Nyc6*e`O->Mu877!5yv*?tyJ$beTX~?PMM%TI{TBp5(7dfk>>F1 z4I-|n3%1W;%sY9kRy04mG-TEEp5lv?O5rO4?GO4tvpZT5&VBAFYC#E~U?w6HE|&g} zAMG=@Ht}ANT)3=KMMHg;Eo9?U)@45`0xk^sh$dz!USR91+Y1y}da8rj=ga!7VPh-% ze&fR{iY?atV9Cj#u*2;VSnnNw%WNL)Q^#BD!_yh7p#HTPTSoI%&{qA{&K52U`QF~3 zlcvM48dR{a&vz~23bG~`)C$MQ%$RBI!!A-X=8Stw@Uxd$-gN)YM{3%}OaI(u=6mFc zFOlO9VYusgcWqv2L|UyywvUGEK@W(!6+|?1+bnMzM(E1Oip=pi3hZdn(~Zi!2FYJ0 zMNiA$(U2k`_T5gO779>(eBZC@^v=XTQH(4fF^B1PMd-VXMgKjEyuYG&Ndv$5XGiBU zrf7!%?cHfprps?>|K18p<+ov}KO3I}GkusAPhSZ%IlOKJd;EeSzLd53x4H!Q+#><4 zKZPeA_ZAxwZQim}gpZPld{N>Djh`m&^9L}5l3L)SFP82WXgqr}G#`l%om(MOuO&y+ zG^MX4!5+DTOQ{RNJV~I{1oSz$u9{dbh2S!;snhl|+2Y+HqtYDwwmaTHbh}74+oZ*s zfb3M2fPIUxxwY$uF_7X?p+gkog!dJCpjHd{2p@{qbG(R1RV0?(3zm2Tz1dlUg_`kn zLuqdsPeyJ>2kGgfi(w=9pfBr`b=k_q|P=9co>~-9!NLp|sssE7Y-@map2x z`OVf%M03N{AZ?5JO*|G~y<{m@xU%mP8sRkhG&Ey^B(s}4t4Yi;eU8aY*%oRfr%pez zdTf%Vlx)m3G$N9j?HFBHXO=M=&OC6uo3r*7i8t#VmT<8{3 zS@j>RkvdLT!--6xr#Vj_{?X8sOst^{2lSr)oV)w82BE@#0v!E0o+uP4St_mUo9G5? zh%W9>fxIR~{<)~AJD|-j^{UooFStMWJJ2G!Z&WF=M@Vo|Da>}5@BW}zd`*_p;(CDS z_X3kjmaRw#iVbDjP!3hXp#q}5;v~LgDemxCbD(?N_Y~v@x%A0Wp7(@z->LO9BQag* z=!Xgf0#rM`0mJ9ePmAb4YvRd9Qq>8EzN<$lXw*@o%Hy%ZAtW=?yRsjIB*P~&mx<5| z%L=1X>8aw5r)==45V_{+CL;jRfRU9iixgq0QDZiJaDHydeH!2lvk?1`O@|dPy0|5a z&n4zZRm{krXd#v|DqNE0H+>&Y3>DC|haX)Uny_cd;uMgm!DLTy|@3JSwWhAVjZOj^Bo} z(;3FJ{|{4N9adGay-jzwfPi!yy1N_c7U@Rd&?()Gba#k!cS?6FeWawj>)YOYf6w#% z0kig+I1@W&*88rRpP~9k*V-QUQTq1&^7H#@Z$gS2s1V$dYg%wiw9T>pL^awk)l4?XoHLQkL>v~=`c7i};I#TP%nlqd>b>mEl8*vB5V;@mAj0UHR>2&E{2 zboeY0@T#Eleni0%s3>@B-(n4MH4t!kRhG2_a5;?uogcX7gE2@+_mOF;jesT7mIYN6 zh^Gzs0>mdyZ`#84+{I|)(gMrG*Ufr7)IVsd()^0}xxckjaTI~Wa-UD>34VgJ8n=w!^^o=(eI}xDCSnMhtnY$Rs+e=C^(`lXN3Y%kvaleE{8FHoT)fL z3cvCBL?Amikz5^xrwm){yFRff_`a(En+aGMbr4c6nvxj@+c#73^AKZV+@M4})XVa= z4TwvZ3)f(fknNDieasnwavcR`<^z9$m7g+yh-u$u!S)x0Ueyp{m)*Vj;IQ1g{y*c7O#PFW&paM z1yI8+6UnN9TIG_L@T$2{3v|Je&aX^s59G6X#!>Kh*DB^X4Dnd1Kz)3$=(Q;jG(fF| z-`@=I73;Qa!Pulqb;c5Aeh+vjxU-a+TXPG1QSi8ZgC^92LC7K_vh{RPrhR~!Y)38% zp3^tLB}^TZ4hha=N;mC8BOjg6{ig-RKcoRwvAl03f=Bf=SHvjRtxYx_gH=Qa z1l3kwQmMKv`eeERwOpY>p*lR&xI#~k>_4NKu=E6^gXiXa14*)BR>0WMQL9i81#11F zClKoMk|?PMI$MR~DZw;0WcoJ)!CI0q@Rh_|1$?$%!vx^q7adkbu|F~p%zu1o42F@b zSf?`osS&gJ2R1bTVXU8waK?z3&)5xa#yFD;tGv-FE|5%ukoUDV65gyk(r-jPScHmvmIGyU__* z9XLK#>?xP66$!T{zn0cm9*}=7t6zG>)*wY%e(w!+Vd9frIM zsC{42TW@)vF1^%6Jiz#=on^Y`$^CsKD8uqm@R-(d41=a%D}UQuz(nRk_h*kpL`2wN zb4~c<%R>B9PbU#%*V%cHY4_xKv7oo;wn7>8B$h)}Q(r<;gz|9lRco|e`26s8d~x7$ zAJttuuCRMef0WiS@vvz{1%BVyJk&Romoi3DiU#-ax{0y68c41>! z=t_H$he&3a_rSWeQKu307npOwNXi)VWP|B5Acb;J5Y_tr-C86-e@&pvzz_tcrx}1} zfDVylIPWv04*=7{i_AsmBZaGP4frTI;_)NL4AnicQn<(j0j~DM@XAxNg>PQD^fU&?EP58IXn&q{L~q~!iNyaKwRHYlw>eH zIHm?G6bmDCs~Z6ss56+YMhNyQs2$hW+9m1(DGH)}KB0_bewqk8xf~x}DSZmNfd!5X zAKnsu(>nuuGFd)6LxpejKd*1-5bQfYA&);n-@Ih2TwtKwy6ON=3 ze0b5B*XSY#S%X*@gF(%kkwq<=k^5Nv1)h=WdZ9mJOp(I>{P&Fq3rGYdY+N!L8c`Ia zz_G=!3z}QRKY-5s_`f$EQh4Tn5V~|(Yz%Hhc$m!DzyM$l#kXKkq$vYVae{-WHvFVc zv|R#ZE=5Y_13l3Bj~0)pV^ZJ<%wz{EnY zjsBlNRD& zB(+na9)|I>`h>($^sl#kiLb;}Kupe7l?Arue$Sk!0gNllI;*!q&asnQfB5D~anM@e znbhSD=Yirfa*0Z5zSQr4lV)z!O{0}-FTgxpiph2=n#DLPu$Heh8}+B{?O2QzuMC)2 z*qu}hLbyv_ORssGdLXYdk0eKqkFxubl`Fyc+(*}(n{MfIl59<+QuEBhPMu4mEsqW* z!t!c%tWqa-s!ct=(^Qf!5x@PZPGY#o1^)sa6u*+7?aTL@kc>?ug(E7=POisr5vTnA z{n6ffx{Lh=iXl_aGt0;mb8W%1_k7|9VNT9^apu5n7shBcb}QlHDu9cAc9;I{_X)T)A_hQZ#?o=ARJH&=Gz(*|@(|sQ5 zpSn1!2+VqT4mt61Sc~?~$Vn~O|Kp6hT2U-Dmp%Svs2%E5`n>~8_Wn>;IcommbxVYg z8gBsORCLTpQ*p{7BX?caaeu$ZPoKIF9)(nn%sbQXy`kkFItdlw(n1P=047aL(vvk6 zjU{pb2q3V6Rzhck9KP23!~;Hcq>XNU9NtGkvG*EWXM^=Jz$sRYS8N*qApHfA=`Zj{ z6L)7?B6ASC<-HB4@gvo<`WG#oItiJ?SJSHsTi93A_t18_h=k^U4=GtuoDFXMp5n0- zr1D}#nD%V`Jak2+jsiTDdqRLlM$JXIZ{M47wv(`^{9WD_r-&2Z*&w~`9^L(f3PHaQ zJ235kCvxBt2k9b8qtDT5ouUu9Go4Ul#BCkp3cEA?q9!1@t*E39bv8&HVQ8wph4KTt zlQ5~ATP&~!ItuRGPzgZg;Jaby$@+ZQV^NUs$gpCL=b$#CZT>s!=Lbq7-hBq996Hfk zUFqIR1mE>gAYJLZ^nobpccx*ML|NFWccw#NY`6&@c8yjvf*~JvNzSoJ4brngp@BgL zxs7Ok--LLuI^NkJsmRdhgib=2dnk|KOT&rT;1vy+D?=fRRy6o=p9@V0r7F?cAnrg3 zHt1|Hsb9KQY$KWubFaWtIk1!PES?SXTMgWWp-`0cA(-I16~rE6sD=B5Dkornpy|A-RwX*EZ7GBbc=&5_yOT0874LVUJO|={Lsha>E zNTpbNHty9QFOK6OeWoR_S-Jq)_Vs{@)%;E`XT&DiBZ08U8CZnJKkm;qAiCD#Z6izm zJx zh*bX`%c}E8ssWa4#Qi?&qFU+Hd)<>Y#Dn{s%yrx5zw`YEvF6`y94gKGU7i_@;h10d zfIAXVXfou^+2?8*DA&Qaz*_5Fx#TgtY7SI!-Nqmx zIV=7Gw^SFn{=yWELQQQ5V-Z$}G*d*8D=j#Ofy`u9p^iS3U*CiVo&u!L&M#+H(#x%V zffTKcBFzv3K}muF63Y~ES%PD|u=)#2iSdy%JtfM?CF(3%2PBUP*-2;) z;({@m9jl`cB#o{ukL(?J)0POM1nEP=vq%gA;XkrU5f(ueC{VG;1jqw$Rh%gL3u(hJ zFR_o1C3GA22Zs4{0F5x2NN+|WQuM9weZJ*?aspfx3~60}6j2A_M*)5#DE_dO3mWqFiAyN_Nd{VChNihormZWUwgh{|8U3n66=P9TIM$` z`Wwy!GXMU?;1&t>1e;(=m^=Ve35FaC)kj-wTK7D#xVCF<;RDD(@ecJw46VBJZ4lDJ z^W9kG5S+Eey!JTvHAo*^c2ITFihn9%h~dS&o)$)({Bjjm9QzL%FP)#Rd;*n?TJhiI zE#{Dg6At{BisEy({S6?XRFvHEewB{C=Kad8`1V&IrRg@lTtn~2nE=|ZB;h-PWsJp* zLa`yc9N+OL!Be+^F08fXfPddf)}+f_G3|E-C-3`BYm1W}9kEEuum}cJ{laQnS6F{w zw)x%}?=wKe@vHptWC9WX+bfItKj8Xn4X#Fc}q2(#=Qq8TNG!pu+XJRDb!YA9F zV5I!_Dh+m4BM|fzBp)IHSVT*Q#pDMqjs5lIuS9%E4>o=e{LW_QCR-GZoINIP=p=lr zl^5)}58oH}PY2q>0W_gwxGek#aB|6U_gj104V7}|=Q>Eabnm__=r!xE7p3Apf!_!h zU<>3W6L0MGIv0#X={$QA3mnIRS*C))G$Y+CaVeyM+rx#Cb+yrxFc$s*mP%`;f%CIz zY@Y4&CK_om+6Ze|Rp$2BH4=SU-4yk0?|!m)@tqreC?53QeLsjcxaTtJmUjw(*p4E8 zI$D{hd1R-KZ&$CkNBeG%%Txh9+C@R?KlMtMU2dGVkPO$?z7pP?Z)OQz0Io19?3kZQ z{ywFL1E6gSSMTg%PBB7yfkSEZL5{m;Bl@2maV9O``yj5ezcH4lF2j`~(tZ+xr0 ztyoQ?qdyW&-TZt$lk>q^MVN8XYh$xEe~9U(!gdmxWniK9B34$#@oewqHP7#^Oz+5Q zAHHkIOY2tyT@iIKr+bCB=+vj4tDs8)%KHlMXpmeMRbo|c^%nd)A1lq;Y{Z+2MGLLs zMdl{jJ&5XE(M?ub$5}LE8od5Bwng>{e!~oZ!wg-D+dkgiRi`8*oV7)r z!yt~R(SxbHU%J312@1)#3hVw@xZkf2)TbTSPxB7*)UMh0euy>{Mis@k(go#rS1P|X zodelLcWvkD#ChKoUYbHmMiH@$Wf*#k?BR1AL0${X#XxP4IMXtto2M+ZwsN<&v?Q== zCA46@km99XytnSAgEoZ4Xmq2-GFO)`?Kup8;f$e%)JvYtC(7V7vTHJ9>GZtVy+zd9 z2FdM7DBoacJ}E50!9$DpyS*8X+LNQRPRExb1Ftud-$nbhEYx!JH=t1`mJ#||XVZj|`gZr=6)8_j2^c`ki_{-51 zFX;_>T1j^G;u~>S)63lB%QD^ZO8a?-!6!mJ2m8->P0cK~-OEdZn|CYir5@eQ)eoO* zs_Zg0&t@NAmzPqYob%EoW%!$_MD;Zup+KFruTOx!sv@WmcDj9{%{KcdMkyl3i?xUu;Z zjxZEl^VCZv~d(cowC z0ycfY`m3zHhvte{27}Idpt@a<* zG5%T2W6lW8olm4!{bc8Q>VbWWTE-{x_bVfp3D=Z!)9Pyp_*>I{ygAEB_%J9|448xOi8mI-2)&3b0?l#I<0SO#63# zk=#GBo8O(F{!3oDKq=8lNgn4~ezU08xOo#w^s!{mcIR*v^c^!ID2wiDvs^^hHvM9L@oPu1 zwz^a<;Ptp1V;-$e=bbv{y$+Awt(NSa`Sh&!jBIpo0L6eR^dD`rK3TJe$2ByfpHi?WH4EXPnHwdm{7M zTvdFIeg)t6<{5fhmyh6c;|XU0<@EOFXE2TJB#=USD@vOfnIW-{=%dfNfT-A z=7&pobV*&K_(--!J4$Ba_I5s`5!|B(x3->;_Gz802KuV8H#Ror;=fd46-iT`HhcgB zHT@q3dh?q{Th2rMer5^4Ko37#;U#tVW?WmC&pEm_3ok%EQk}0dMtk>Rmdz119gy7c z=!1ost$Xy@uc7A$FB>G=61^MBrO5w*px4F@<^KagMFg`+DtM#kNFF;6{%p7ZDMP;| zt`jZdTf;q{#r1?k0rw9L?YI8LqcXB;*tF?is&jo}sq63hepf-~OO2*k-7?t=Zt z%**dZN@}#NG9|Z5nvj*EB-ye*3&U!MxUG*|)Z0z8(dzHK=W6(cuO`(5#>K%|nWzR< zZii_DnlfsPX02m887dg_88QbGTLMRzxnT^Ia299FK_aR3sdMD6vGcnB!90i7`&Rfu z|BHAYVO|c|fEX#t&jXBi=0yDTFukhojGX9>m;N^oV=(_@UZpnWA1e5!Md!ttPd%s4 zOdHv#oo6|i4_AmsjV1hFz?0@W^;JP*nOqgBPkQS+69&Eb7RTT3TC`$%2x&tq)sGWK zL`5yvI#Zw5U_6C<6I@QVk$SHnX4yVHWB>pPMLxeLBT91qZ#I@!T0CJC)GJ%B1R)K8 z*#g|k{l*U$!;e^($-^2Bc-NH0^v<1_V?v`f1LMDVVa%-l2kM-Qz4Cuu_g{N{@gO`+ z@BTHOlGw@ZdF=VXB|TpDDeL?i@XKzKhezAzX3W;{7O2Y%x;yu}k zJsA`KJ_gXCaBlzRwqB-$Xu?FP?SJURy~T`9)D9b$d?-Wj~Pny~GtAN57QH~~J!c9pDg zXTr(JKWW;eGoLn)6+VW`kZq)}-=uR<7{**2Ow1}=b|FC=q8>P|1}jDYM|UwN_Xj=z zM33BgDZo1t1l9W);JQDth!G@1XesvF#0ir3MWe!M~APjSHZfi^^Y;R1c_ZyX5R5A#}*N6CkbSDK| z4-9*<0ByCphnj|i*8_)P9)f^OR`+sKVgD}UcfSFd4YszurQH4_P<5zMj0B+~29veQ z0m2j2eDF>KMFPC+tk65DND_oXr5X>aev3YaZh$>k$W#azKcPS`nBPbS z!Wia#xP^4;jAMZmsJZ`4ixor(@OR+p$K|0{yOC^VmP&41JYK)U?zFn3<1}=+ zTg#^#QLkn`_f&l7|0fkEBS~~q#eo$*6GB|EVq3%#F7#

    tCx81HddV=r_D`o5$n8 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

    QQlOUCG-AtbMV#ue}uhdR2@s#HHwD>hv4q+ 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%0D* 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�y+(GY>$1cf{Z{JA~D)5DG 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

    3}CS8J&$TtPGy0E!`{C?Goko&X7U4|S2aZA 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 b%GV#n&GuiXeE)Uo|NZ{}

    \n", "\n", - "Now that we have fixed the scaling issues, we can go back to the ``DiagnosticsToolbox`` and see if we still have any warnings. Note however that we need to look at the scaled model now rather than the original model, so we need to create a new instance of the ``DiagnositcsToolbox`` with the scaled model as the ``model`` argument.\n", + "Now that we have fixed the scaling issues, we can go back to the ``DiagnosticsToolbox`` and see if we still have any warnings. Note however that we need to look at the scaled model now rather than the original model, so we need to create a new instance of the ``DiagnosticsToolbox`` with the scaled model as the ``model`` argument.\n", "\n", "\n", "
    \n", @@ -1833,4 +1833,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/diagnostics/diagnostics_toolbox_exercise.ipynb b/idaes_examples/notebooks/docs/diagnostics/diagnostics_toolbox_exercise.ipynb index dd680878..af574b64 100644 --- a/idaes_examples/notebooks/docs/diagnostics/diagnostics_toolbox_exercise.ipynb +++ b/idaes_examples/notebooks/docs/diagnostics/diagnostics_toolbox_exercise.ipynb @@ -169,7 +169,7 @@ }, "outputs": [], "source": [ - "# Call the report_strucutral_issues() method" + "# Call the report_structural_issues() method" ] }, { @@ -571,7 +571,7 @@ }, "outputs": [], "source": [ - "# Check for new strucutral issues" + "# Check for new structural issues" ] }, { @@ -722,7 +722,7 @@ "Normally in these cases we would need to map the solution from the scaled model back to the unscaled model so we can view the results. In this case, we are not actually interested in the solution so we move on with the model diagnosis.\n", "
    \n", "\n", - "Now that we have fixed the scaling issues, we can go back to the ``DiagnosticsToolbox`` and see if we still have any warnings. Note however that we need to look at the scaled model now rather than the original model, so we need to create a new instance of the ``DiagnositcsToolbox`` with the scaled model as the ``model`` argument.\n", + "Now that we have fixed the scaling issues, we can go back to the ``DiagnosticsToolbox`` and see if we still have any warnings. Note however that we need to look at the scaled model now rather than the original model, so we need to create a new instance of the ``DiagnosticsToolbox`` with the scaled model as the ``model`` argument.\n", "\n", "\n", "
    \n", @@ -783,4 +783,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/diagnostics/diagnostics_toolbox_solution.ipynb b/idaes_examples/notebooks/docs/diagnostics/diagnostics_toolbox_solution.ipynb index 9ea0c9bc..e2092d01 100644 --- a/idaes_examples/notebooks/docs/diagnostics/diagnostics_toolbox_solution.ipynb +++ b/idaes_examples/notebooks/docs/diagnostics/diagnostics_toolbox_solution.ipynb @@ -591,7 +591,7 @@ }, "outputs": [], "source": [ - "# Call the report_strucutral_issues() method" + "# Call the report_structural_issues() method" ] }, { @@ -1535,7 +1535,7 @@ }, "outputs": [], "source": [ - "# Check for new strucutral issues" + "# Check for new structural issues" ] }, { @@ -1994,7 +1994,7 @@ "Normally in these cases we would need to map the solution from the scaled model back to the unscaled model so we can view the results. In this case, we are not actually interested in the solution so we move on with the model diagnosis.\n", "
    \n", "\n", - "Now that we have fixed the scaling issues, we can go back to the ``DiagnosticsToolbox`` and see if we still have any warnings. Note however that we need to look at the scaled model now rather than the original model, so we need to create a new instance of the ``DiagnositcsToolbox`` with the scaled model as the ``model`` argument.\n", + "Now that we have fixed the scaling issues, we can go back to the ``DiagnosticsToolbox`` and see if we still have any warnings. Note however that we need to look at the scaled model now rather than the original model, so we need to create a new instance of the ``DiagnosticsToolbox`` with the scaled model as the ``model`` argument.\n", "\n", "\n", "
    \n", @@ -2101,4 +2101,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/diagnostics/diagnostics_toolbox_test.ipynb b/idaes_examples/notebooks/docs/diagnostics/diagnostics_toolbox_test.ipynb index e69345be..067ad085 100644 --- a/idaes_examples/notebooks/docs/diagnostics/diagnostics_toolbox_test.ipynb +++ b/idaes_examples/notebooks/docs/diagnostics/diagnostics_toolbox_test.ipynb @@ -1756,7 +1756,7 @@ "Normally in these cases we would need to map the solution from the scaled model back to the unscaled model so we can view the results. In this case, we are not actually interested in the solution so we move on with the model diagnosis.\n", "
    \n", "\n", - "Now that we have fixed the scaling issues, we can go back to the ``DiagnosticsToolbox`` and see if we still have any warnings. Note however that we need to look at the scaled model now rather than the original model, so we need to create a new instance of the ``DiagnositcsToolbox`` with the scaled model as the ``model`` argument.\n", + "Now that we have fixed the scaling issues, we can go back to the ``DiagnosticsToolbox`` and see if we still have any warnings. Note however that we need to look at the scaled model now rather than the original model, so we need to create a new instance of the ``DiagnosticsToolbox`` with the scaled model as the ``model`` argument.\n", "\n", "\n", "
    \n", @@ -1862,4 +1862,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/diagnostics/diagnostics_toolbox_usr.ipynb b/idaes_examples/notebooks/docs/diagnostics/diagnostics_toolbox_usr.ipynb index 9ea0c9bc..e2092d01 100644 --- a/idaes_examples/notebooks/docs/diagnostics/diagnostics_toolbox_usr.ipynb +++ b/idaes_examples/notebooks/docs/diagnostics/diagnostics_toolbox_usr.ipynb @@ -591,7 +591,7 @@ }, "outputs": [], "source": [ - "# Call the report_strucutral_issues() method" + "# Call the report_structural_issues() method" ] }, { @@ -1535,7 +1535,7 @@ }, "outputs": [], "source": [ - "# Check for new strucutral issues" + "# Check for new structural issues" ] }, { @@ -1994,7 +1994,7 @@ "Normally in these cases we would need to map the solution from the scaled model back to the unscaled model so we can view the results. In this case, we are not actually interested in the solution so we move on with the model diagnosis.\n", "
    \n", "\n", - "Now that we have fixed the scaling issues, we can go back to the ``DiagnosticsToolbox`` and see if we still have any warnings. Note however that we need to look at the scaled model now rather than the original model, so we need to create a new instance of the ``DiagnositcsToolbox`` with the scaled model as the ``model`` argument.\n", + "Now that we have fixed the scaling issues, we can go back to the ``DiagnosticsToolbox`` and see if we still have any warnings. Note however that we need to look at the scaled model now rather than the original model, so we need to create a new instance of the ``DiagnosticsToolbox`` with the scaled model as the ``model`` argument.\n", "\n", "\n", "
    \n", @@ -2101,4 +2101,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_costing.ipynb b/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_costing.ipynb index 0b9c4081..cf4f631c 100644 --- a/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_costing.ipynb +++ b/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_costing.ipynb @@ -232,7 +232,7 @@ "source": [ "The costing module provides a `unit_mapping` dictionary linking generic unit model classes with recommended costing methods. In this example, StoichiometricReactor and Flash vessels utilize different vessel costing methods with similar arguments. The diameter and length attributes need to exist in order to cost vessel sizing and material requirements, and we add them if they don't exist already. The `unit_mapping` method provides an opportunity to automatically select the correct vessel orientation (vertical or horizontal) based on the unit type; passing a `StoichiometricReactor` or `PFR` class object will call the `cost_horizontal_vessel` method, while passing a `Flash` or `CSTR` class object will call the `cost_vertical_vessel` method.\n", "\n", - "All vessels are assigned costing succintly via a loop below - users may define each block individually if desired:" + "All vessels are assigned costing succinctly via a loop below - users may define each block individually if desired:" ] }, { diff --git a/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_costing_doc.ipynb b/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_costing_doc.ipynb index 9339ebf2..438d7945 100644 --- a/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_costing_doc.ipynb +++ b/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_costing_doc.ipynb @@ -838,7 +838,7 @@ "source": [ "The costing module provides a `unit_mapping` dictionary linking generic unit model classes with recommended costing methods. In this example, StoichiometricReactor and Flash vessels utilize different vessel costing methods with similar arguments. The diameter and length attributes need to exist in order to cost vessel sizing and material requirements, and we add them if they don't exist already. The `unit_mapping` method provides an opportunity to automatically select the correct vessel orientation (vertical or horizontal) based on the unit type; passing a `StoichiometricReactor` or `PFR` class object will call the `cost_horizontal_vessel` method, while passing a `Flash` or `CSTR` class object will call the `cost_vertical_vessel` method.\n", "\n", - "All vessels are assigned costing succintly via a loop below - users may define each block individually if desired:" + "All vessels are assigned costing succinctly via a loop below - users may define each block individually if desired:" ] }, { @@ -1866,4 +1866,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_costing_test.ipynb b/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_costing_test.ipynb index 054f1c48..59b5e0d2 100644 --- a/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_costing_test.ipynb +++ b/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_costing_test.ipynb @@ -59,7 +59,7 @@ "example, toluene will be reacted with hydrogen gas at high temperatures\n", " to form benzene via the following reaction:\n", "\n", - "**C6H5CH3 + H2 \u2192 C6H6 + CH4**\n", + "**C6H5CH3 + H2 → C6H6 + CH4**\n", "\n", "\n", "This reaction is often accompanied by an equilibrium side reaction\n", @@ -232,7 +232,7 @@ "source": [ "The costing module provides a `unit_mapping` dictionary linking generic unit model classes with recommended costing methods. In this example, StoichiometricReactor and Flash vessels utilize different vessel costing methods with similar arguments. The diameter and length attributes need to exist in order to cost vessel sizing and material requirements, and we add them if they don't exist already. The `unit_mapping` method provides an opportunity to automatically select the correct vessel orientation (vertical or horizontal) based on the unit type; passing a `StoichiometricReactor` or `PFR` class object will call the `cost_horizontal_vessel` method, while passing a `Flash` or `CSTR` class object will call the `cost_vertical_vessel` method.\n", "\n", - "All vessels are assigned costing succintly via a loop below - users may define each block individually if desired:" + "All vessels are assigned costing succinctly via a loop below - users may define each block individually if desired:" ] }, { @@ -560,4 +560,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_costing_usr.ipynb b/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_costing_usr.ipynb index 5d73b18b..dfce578b 100644 --- a/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_costing_usr.ipynb +++ b/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_costing_usr.ipynb @@ -59,7 +59,7 @@ "example, toluene will be reacted with hydrogen gas at high temperatures\n", " to form benzene via the following reaction:\n", "\n", - "**C6H5CH3 + H2 \u2192 C6H6 + CH4**\n", + "**C6H5CH3 + H2 → C6H6 + CH4**\n", "\n", "\n", "This reaction is often accompanied by an equilibrium side reaction\n", @@ -232,7 +232,7 @@ "source": [ "The costing module provides a `unit_mapping` dictionary linking generic unit model classes with recommended costing methods. In this example, StoichiometricReactor and Flash vessels utilize different vessel costing methods with similar arguments. The diameter and length attributes need to exist in order to cost vessel sizing and material requirements, and we add them if they don't exist already. The `unit_mapping` method provides an opportunity to automatically select the correct vessel orientation (vertical or horizontal) based on the unit type; passing a `StoichiometricReactor` or `PFR` class object will call the `cost_horizontal_vessel` method, while passing a `Flash` or `CSTR` class object will call the `cost_vertical_vessel` method.\n", "\n", - "All vessels are assigned costing succintly via a loop below - users may define each block individually if desired:" + "All vessels are assigned costing succinctly via a loop below - users may define each block individually if desired:" ] }, { @@ -560,4 +560,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation.ipynb b/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation.ipynb index 0179081c..ea0e1dd1 100644 --- a/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation.ipynb +++ b/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation.ipynb @@ -80,8 +80,7 @@ "We will be using two thermodynamic packages: one (first in the list above) containing all four components (i.e., toluene, hydrogen, benzene, and methane) and the other (second in the list above) containing benzene and toluene only. The latter is needed to simplify the VLE calculations in the distillation column model. \n", "\n", "![](HDA_flowsheet_distillation.png)\n", - "\n", - "" + "\n" ] }, { @@ -602,7 +601,7 @@ "source": [ "## Connecting Unit Models using Arcs\n", "\n", - "We have now added the initial set of unit models to the flowsheet. However, we have not yet specifed how the units are connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the mixer (M101) to the inlet of the heater (H101). " + "We have now added the initial set of unit models to the flowsheet. However, we have not yet specified how the units are connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the mixer (M101) to the inlet of the heater (H101). " ] }, { @@ -1205,7 +1204,7 @@ "- Add the distillation column \n", "- Connect it to the heater \n", "- Add the necessary equality constraints\n", - "- Propogate the state variable information from the outlet of the heater to the inlet of the distillation column \n", + "- Propagate the state variable information from the outlet of the heater to the inlet of the distillation column \n", "- Fix the degrees of freedom of the distillation block (reflux ratio, boilup ratio, and condenser pressure)\n", "- Scale the control volume heat variables to help convergence\n", "- Initialize the distillation block.\n", @@ -1466,7 +1465,7 @@ "source": [ "
    \n", "Inline Exercise:\n", - "You can querry additional variables here if you like. \n", + "You can query additional variables here if you like. \n", "\n", "Use Shift+Enter to run the cell once you have typed in your code. \n", "
    " diff --git a/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_doc.ipynb b/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_doc.ipynb index b719e1e8..ff03b6e7 100644 --- a/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_doc.ipynb +++ b/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_doc.ipynb @@ -549,7 +549,7 @@ "source": [ "## Connecting Unit Models using Arcs\n", "\n", - "We have now added the initial set of unit models to the flowsheet. However, we have not yet specifed how the units are connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the mixer (M101) to the inlet of the heater (H101). " + "We have now added the initial set of unit models to the flowsheet. However, we have not yet specified how the units are connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the mixer (M101) to the inlet of the heater (H101). " ] }, { @@ -2247,7 +2247,7 @@ "- Add the distillation column \n", "- Connect it to the heater \n", "- Add the necessary equality constraints\n", - "- Propogate the state variable information from the outlet of the heater to the inlet of the distillation column \n", + "- Propagate the state variable information from the outlet of the heater to the inlet of the distillation column \n", "- Fix the degrees of freedom of the distillation block (reflux ratio, boilup ratio, and condenser pressure)\n", "- Scale the control volume heat variables to help convergence\n", "- Initialize the distillation block.\n", @@ -6977,7 +6977,7 @@ "source": [ "
    \n", "Inline Exercise:\n", - "You can querry additional variables here if you like. \n", + "You can query additional variables here if you like. \n", "\n", "Use Shift+Enter to run the cell once you have typed in your code. \n", "
    " @@ -7589,4 +7589,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_exercise.ipynb b/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_exercise.ipynb index 1a4834ff..410b7c88 100644 --- a/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_exercise.ipynb +++ b/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_exercise.ipynb @@ -61,7 +61,7 @@ "example, toluene will be reacted with hydrogen gas at high temperatures\n", " to form benzene via the following reaction:\n", "\n", - "**C6H5CH3 + H2 \u2192 C6H6 + CH4**\n", + "**C6H5CH3 + H2 → C6H6 + CH4**\n", "\n", "\n", "This reaction is often accompanied by an equilibrium side reaction\n", @@ -80,8 +80,7 @@ "We will be using two thermodynamic packages: one (first in the list above) containing all four components (i.e., toluene, hydrogen, benzene, and methane) and the other (second in the list above) containing benzene and toluene only. The latter is needed to simplify the VLE calculations in the distillation column model. \n", "\n", "![](HDA_flowsheet_distillation.png)\n", - "\n", - "" + "\n" ] }, { @@ -535,7 +534,7 @@ "source": [ "## Connecting Unit Models using Arcs\n", "\n", - "We have now added the initial set of unit models to the flowsheet. However, we have not yet specifed how the units are connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the mixer (M101) to the inlet of the heater (H101). " + "We have now added the initial set of unit models to the flowsheet. However, we have not yet specified how the units are connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the mixer (M101) to the inlet of the heater (H101). " ] }, { @@ -1049,7 +1048,7 @@ "- Add the distillation column \n", "- Connect it to the heater \n", "- Add the necessary equality constraints\n", - "- Propogate the state variable information from the outlet of the heater to the inlet of the distillation column \n", + "- Propagate the state variable information from the outlet of the heater to the inlet of the distillation column \n", "- Fix the degrees of freedom of the distillation block (reflux ratio, boilup ratio, and condenser pressure)\n", "- Scale the control volume heat variables to help convergence\n", "- Initialize the distillation block.\n", @@ -1262,7 +1261,7 @@ "source": [ "
    \n", "Inline Exercise:\n", - "You can querry additional variables here if you like. \n", + "You can query additional variables here if you like. \n", "\n", "Use Shift+Enter to run the cell once you have typed in your code. \n", "
    " @@ -1629,4 +1628,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_solution.ipynb b/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_solution.ipynb index ecabdf9c..1412322e 100644 --- a/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_solution.ipynb +++ b/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_solution.ipynb @@ -61,7 +61,7 @@ "example, toluene will be reacted with hydrogen gas at high temperatures\n", " to form benzene via the following reaction:\n", "\n", - "**C6H5CH3 + H2 \u2192 C6H6 + CH4**\n", + "**C6H5CH3 + H2 → C6H6 + CH4**\n", "\n", "\n", "This reaction is often accompanied by an equilibrium side reaction\n", @@ -80,8 +80,7 @@ "We will be using two thermodynamic packages: one (first in the list above) containing all four components (i.e., toluene, hydrogen, benzene, and methane) and the other (second in the list above) containing benzene and toluene only. The latter is needed to simplify the VLE calculations in the distillation column model. \n", "\n", "![](HDA_flowsheet_distillation.png)\n", - "\n", - "" + "\n" ] }, { @@ -602,7 +601,7 @@ "source": [ "## Connecting Unit Models using Arcs\n", "\n", - "We have now added the initial set of unit models to the flowsheet. However, we have not yet specifed how the units are connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the mixer (M101) to the inlet of the heater (H101). " + "We have now added the initial set of unit models to the flowsheet. However, we have not yet specified how the units are connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the mixer (M101) to the inlet of the heater (H101). " ] }, { @@ -1161,7 +1160,7 @@ "- Add the distillation column \n", "- Connect it to the heater \n", "- Add the necessary equality constraints\n", - "- Propogate the state variable information from the outlet of the heater to the inlet of the distillation column \n", + "- Propagate the state variable information from the outlet of the heater to the inlet of the distillation column \n", "- Fix the degrees of freedom of the distillation block (reflux ratio, boilup ratio, and condenser pressure)\n", "- Scale the control volume heat variables to help convergence\n", "- Initialize the distillation block.\n", @@ -1374,7 +1373,7 @@ "source": [ "
    \n", "Inline Exercise:\n", - "You can querry additional variables here if you like. \n", + "You can query additional variables here if you like. \n", "\n", "Use Shift+Enter to run the cell once you have typed in your code. \n", "
    " @@ -1788,4 +1787,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_test.ipynb b/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_test.ipynb index 05b005f1..1468da16 100644 --- a/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_test.ipynb +++ b/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_test.ipynb @@ -61,7 +61,7 @@ "example, toluene will be reacted with hydrogen gas at high temperatures\n", " to form benzene via the following reaction:\n", "\n", - "**C6H5CH3 + H2 \u2192 C6H6 + CH4**\n", + "**C6H5CH3 + H2 → C6H6 + CH4**\n", "\n", "\n", "This reaction is often accompanied by an equilibrium side reaction\n", @@ -80,8 +80,7 @@ "We will be using two thermodynamic packages: one (first in the list above) containing all four components (i.e., toluene, hydrogen, benzene, and methane) and the other (second in the list above) containing benzene and toluene only. The latter is needed to simplify the VLE calculations in the distillation column model. \n", "\n", "![](HDA_flowsheet_distillation.png)\n", - "\n", - "" + "\n" ] }, { @@ -550,7 +549,7 @@ "source": [ "## Connecting Unit Models using Arcs\n", "\n", - "We have now added the initial set of unit models to the flowsheet. However, we have not yet specifed how the units are connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the mixer (M101) to the inlet of the heater (H101). " + "We have now added the initial set of unit models to the flowsheet. However, we have not yet specified how the units are connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the mixer (M101) to the inlet of the heater (H101). " ] }, { @@ -1111,7 +1110,7 @@ "- Add the distillation column \n", "- Connect it to the heater \n", "- Add the necessary equality constraints\n", - "- Propogate the state variable information from the outlet of the heater to the inlet of the distillation column \n", + "- Propagate the state variable information from the outlet of the heater to the inlet of the distillation column \n", "- Fix the degrees of freedom of the distillation block (reflux ratio, boilup ratio, and condenser pressure)\n", "- Scale the control volume heat variables to help convergence\n", "- Initialize the distillation block.\n", @@ -1372,7 +1371,7 @@ "source": [ "
    \n", "Inline Exercise:\n", - "You can querry additional variables here if you like. \n", + "You can query additional variables here if you like. \n", "\n", "Use Shift+Enter to run the cell once you have typed in your code. \n", "
    " @@ -1779,4 +1778,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_usr.ipynb b/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_usr.ipynb index ecabdf9c..1412322e 100644 --- a/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_usr.ipynb +++ b/idaes_examples/notebooks/docs/flowsheets/hda_flowsheet_with_distillation_usr.ipynb @@ -61,7 +61,7 @@ "example, toluene will be reacted with hydrogen gas at high temperatures\n", " to form benzene via the following reaction:\n", "\n", - "**C6H5CH3 + H2 \u2192 C6H6 + CH4**\n", + "**C6H5CH3 + H2 → C6H6 + CH4**\n", "\n", "\n", "This reaction is often accompanied by an equilibrium side reaction\n", @@ -80,8 +80,7 @@ "We will be using two thermodynamic packages: one (first in the list above) containing all four components (i.e., toluene, hydrogen, benzene, and methane) and the other (second in the list above) containing benzene and toluene only. The latter is needed to simplify the VLE calculations in the distillation column model. \n", "\n", "![](HDA_flowsheet_distillation.png)\n", - "\n", - "" + "\n" ] }, { @@ -602,7 +601,7 @@ "source": [ "## Connecting Unit Models using Arcs\n", "\n", - "We have now added the initial set of unit models to the flowsheet. However, we have not yet specifed how the units are connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the mixer (M101) to the inlet of the heater (H101). " + "We have now added the initial set of unit models to the flowsheet. However, we have not yet specified how the units are connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the mixer (M101) to the inlet of the heater (H101). " ] }, { @@ -1161,7 +1160,7 @@ "- Add the distillation column \n", "- Connect it to the heater \n", "- Add the necessary equality constraints\n", - "- Propogate the state variable information from the outlet of the heater to the inlet of the distillation column \n", + "- Propagate the state variable information from the outlet of the heater to the inlet of the distillation column \n", "- Fix the degrees of freedom of the distillation block (reflux ratio, boilup ratio, and condenser pressure)\n", "- Scale the control volume heat variables to help convergence\n", "- Initialize the distillation block.\n", @@ -1374,7 +1373,7 @@ "source": [ "
    \n", "Inline Exercise:\n", - "You can querry additional variables here if you like. \n", + "You can query additional variables here if you like. \n", "\n", "Use Shift+Enter to run the cell once you have typed in your code. \n", "
    " @@ -1788,4 +1787,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/flowsheets/methanol_synthesis.ipynb b/idaes_examples/notebooks/docs/flowsheets/methanol_synthesis.ipynb index 24e4ccb3..44462419 100644 --- a/idaes_examples/notebooks/docs/flowsheets/methanol_synthesis.ipynb +++ b/idaes_examples/notebooks/docs/flowsheets/methanol_synthesis.ipynb @@ -51,7 +51,7 @@ "source": [ "## 1. Introduction\n", "\n", - "This example demonstrates a simulation of methanol synthesis from hydrogen and carbon monoxide. Each methanol flowsheet module includes several built-in methods. This notebook demonstrates building the flowsheet, implementing model scaling, initialization and solving a square problem, costing and final constrainted optimization.\n", + "This example demonstrates a simulation of methanol synthesis from hydrogen and carbon monoxide. Each methanol flowsheet module includes several built-in methods. This notebook demonstrates building the flowsheet, implementing model scaling, initialization and solving a square problem, costing and final constrained optimization.\n", "\n", "The ```build_model()``` method creates the Pyomo concrete model and builds the flowsheet by importing thermophysical and reaction properties and unit models and defining stream connections between these units. This method also implements appropriate default scaling on state and property variables.\n", "\n", @@ -357,7 +357,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "As expected, the process achieves a much greater revenue as a result of increasing conversion and lowering the inlet temperature to the Flash unit to encourage methanol recovery in the liquid phase. The results show a slight increase in equipment and operating costs from these changes, as well as a small loss of methanol in the exhuast." + "As expected, the process achieves a much greater revenue as a result of increasing conversion and lowering the inlet temperature to the Flash unit to encourage methanol recovery in the liquid phase. The results show a slight increase in equipment and operating costs from these changes, as well as a small loss of methanol in the exhaust." ] }, { @@ -556,7 +556,7 @@ "metadata": {}, "source": [ "## 5.3 Flowsheet Costing and Optimization\n", - "Now that we have a well-initialized and solved flowsheet, we can add process economics and optimize the revenue. We utilize IDAES costing tools to calculate reactor and flash vessel capital cost, and implement surrogate models to account for heat exchanger capital costs, reactor operating costs and utility costs for heating, cooling and electricity. As before, revenue is determined from total liquid methanol sales, operating costs, annualized capital costs and feed raw material costs. The flowsheet report method returns key process results, which are updated for new results with the prescence of a recycle stream:" + "Now that we have a well-initialized and solved flowsheet, we can add process economics and optimize the revenue. We utilize IDAES costing tools to calculate reactor and flash vessel capital cost, and implement surrogate models to account for heat exchanger capital costs, reactor operating costs and utility costs for heating, cooling and electricity. As before, revenue is determined from total liquid methanol sales, operating costs, annualized capital costs and feed raw material costs. The flowsheet report method returns key process results, which are updated for new results with the presence of a recycle stream:" ] }, { diff --git a/idaes_examples/notebooks/docs/flowsheets/methanol_synthesis_doc.ipynb b/idaes_examples/notebooks/docs/flowsheets/methanol_synthesis_doc.ipynb index 0c126bb1..6e83e8ed 100644 --- a/idaes_examples/notebooks/docs/flowsheets/methanol_synthesis_doc.ipynb +++ b/idaes_examples/notebooks/docs/flowsheets/methanol_synthesis_doc.ipynb @@ -51,7 +51,7 @@ "source": [ "## 1. Introduction\n", "\n", - "This example demonstrates a simulation of methanol synthesis from hydrogen and carbon monoxide. Each methanol flowsheet module includes several built-in methods. This notebook demonstrates building the flowsheet, implementing model scaling, initialization and solving a square problem, costing and final constrainted optimization.\n", + "This example demonstrates a simulation of methanol synthesis from hydrogen and carbon monoxide. Each methanol flowsheet module includes several built-in methods. This notebook demonstrates building the flowsheet, implementing model scaling, initialization and solving a square problem, costing and final constrained optimization.\n", "\n", "The ```build_model()``` method creates the Pyomo concrete model and builds the flowsheet by importing thermophysical and reaction properties and unit models and defining stream connections between these units. This method also implements appropriate default scaling on state and property variables.\n", "\n", @@ -2164,7 +2164,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "As expected, the process achieves a much greater revenue as a result of increasing conversion and lowering the inlet temperature to the Flash unit to encourage methanol recovery in the liquid phase. The results show a slight increase in equipment and operating costs from these changes, as well as a small loss of methanol in the exhuast." + "As expected, the process achieves a much greater revenue as a result of increasing conversion and lowering the inlet temperature to the Flash unit to encourage methanol recovery in the liquid phase. The results show a slight increase in equipment and operating costs from these changes, as well as a small loss of methanol in the exhaust." ] }, { @@ -2880,7 +2880,7 @@ "metadata": {}, "source": [ "## 5.3 Flowsheet Costing and Optimization\n", - "Now that we have a well-initialized and solved flowsheet, we can add process economics and optimize the revenue. We utilize IDAES costing tools to calculate reactor and flash vessel capital cost, and implement surrogate models to account for heat exchanger capital costs, reactor operating costs and utility costs for heating, cooling and electricity. As before, revenue is determined from total liquid methanol sales, operating costs, annualized capital costs and feed raw material costs. The flowsheet report method returns key process results, which are updated for new results with the prescence of a recycle stream:" + "Now that we have a well-initialized and solved flowsheet, we can add process economics and optimize the revenue. We utilize IDAES costing tools to calculate reactor and flash vessel capital cost, and implement surrogate models to account for heat exchanger capital costs, reactor operating costs and utility costs for heating, cooling and electricity. As before, revenue is determined from total liquid methanol sales, operating costs, annualized capital costs and feed raw material costs. The flowsheet report method returns key process results, which are updated for new results with the presence of a recycle stream:" ] }, { @@ -4123,4 +4123,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/flowsheets/methanol_synthesis_test.ipynb b/idaes_examples/notebooks/docs/flowsheets/methanol_synthesis_test.ipynb index da4c6fec..a7ec0962 100644 --- a/idaes_examples/notebooks/docs/flowsheets/methanol_synthesis_test.ipynb +++ b/idaes_examples/notebooks/docs/flowsheets/methanol_synthesis_test.ipynb @@ -51,7 +51,7 @@ "source": [ "## 1. Introduction\n", "\n", - "This example demonstrates a simulation of methanol synthesis from hydrogen and carbon monoxide. Each methanol flowsheet module includes several built-in methods. This notebook demonstrates building the flowsheet, implementing model scaling, initialization and solving a square problem, costing and final constrainted optimization.\n", + "This example demonstrates a simulation of methanol synthesis from hydrogen and carbon monoxide. Each methanol flowsheet module includes several built-in methods. This notebook demonstrates building the flowsheet, implementing model scaling, initialization and solving a square problem, costing and final constrained optimization.\n", "\n", "The ```build_model()``` method creates the Pyomo concrete model and builds the flowsheet by importing thermophysical and reaction properties and unit models and defining stream connections between these units. This method also implements appropriate default scaling on state and property variables.\n", "\n", @@ -357,7 +357,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "As expected, the process achieves a much greater revenue as a result of increasing conversion and lowering the inlet temperature to the Flash unit to encourage methanol recovery in the liquid phase. The results show a slight increase in equipment and operating costs from these changes, as well as a small loss of methanol in the exhuast." + "As expected, the process achieves a much greater revenue as a result of increasing conversion and lowering the inlet temperature to the Flash unit to encourage methanol recovery in the liquid phase. The results show a slight increase in equipment and operating costs from these changes, as well as a small loss of methanol in the exhaust." ] }, { @@ -556,7 +556,7 @@ "metadata": {}, "source": [ "## 5.3 Flowsheet Costing and Optimization\n", - "Now that we have a well-initialized and solved flowsheet, we can add process economics and optimize the revenue. We utilize IDAES costing tools to calculate reactor and flash vessel capital cost, and implement surrogate models to account for heat exchanger capital costs, reactor operating costs and utility costs for heating, cooling and electricity. As before, revenue is determined from total liquid methanol sales, operating costs, annualized capital costs and feed raw material costs. The flowsheet report method returns key process results, which are updated for new results with the prescence of a recycle stream:" + "Now that we have a well-initialized and solved flowsheet, we can add process economics and optimize the revenue. We utilize IDAES costing tools to calculate reactor and flash vessel capital cost, and implement surrogate models to account for heat exchanger capital costs, reactor operating costs and utility costs for heating, cooling and electricity. As before, revenue is determined from total liquid methanol sales, operating costs, annualized capital costs and feed raw material costs. The flowsheet report method returns key process results, which are updated for new results with the presence of a recycle stream:" ] }, { @@ -730,4 +730,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/flowsheets/methanol_synthesis_usr.ipynb b/idaes_examples/notebooks/docs/flowsheets/methanol_synthesis_usr.ipynb index 6dc05f0e..86592750 100644 --- a/idaes_examples/notebooks/docs/flowsheets/methanol_synthesis_usr.ipynb +++ b/idaes_examples/notebooks/docs/flowsheets/methanol_synthesis_usr.ipynb @@ -51,7 +51,7 @@ "source": [ "## 1. Introduction\n", "\n", - "This example demonstrates a simulation of methanol synthesis from hydrogen and carbon monoxide. Each methanol flowsheet module includes several built-in methods. This notebook demonstrates building the flowsheet, implementing model scaling, initialization and solving a square problem, costing and final constrainted optimization.\n", + "This example demonstrates a simulation of methanol synthesis from hydrogen and carbon monoxide. Each methanol flowsheet module includes several built-in methods. This notebook demonstrates building the flowsheet, implementing model scaling, initialization and solving a square problem, costing and final constrained optimization.\n", "\n", "The ```build_model()``` method creates the Pyomo concrete model and builds the flowsheet by importing thermophysical and reaction properties and unit models and defining stream connections between these units. This method also implements appropriate default scaling on state and property variables.\n", "\n", @@ -329,7 +329,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "As expected, the process achieves a much greater revenue as a result of increasing conversion and lowering the inlet temperature to the Flash unit to encourage methanol recovery in the liquid phase. The results show a slight increase in equipment and operating costs from these changes, as well as a small loss of methanol in the exhuast." + "As expected, the process achieves a much greater revenue as a result of increasing conversion and lowering the inlet temperature to the Flash unit to encourage methanol recovery in the liquid phase. The results show a slight increase in equipment and operating costs from these changes, as well as a small loss of methanol in the exhaust." ] }, { @@ -492,7 +492,7 @@ "metadata": {}, "source": [ "## 5.3 Flowsheet Costing and Optimization\n", - "Now that we have a well-initialized and solved flowsheet, we can add process economics and optimize the revenue. We utilize IDAES costing tools to calculate reactor and flash vessel capital cost, and implement surrogate models to account for heat exchanger capital costs, reactor operating costs and utility costs for heating, cooling and electricity. As before, revenue is determined from total liquid methanol sales, operating costs, annualized capital costs and feed raw material costs. The flowsheet report method returns key process results, which are updated for new results with the prescence of a recycle stream:" + "Now that we have a well-initialized and solved flowsheet, we can add process economics and optimize the revenue. We utilize IDAES costing tools to calculate reactor and flash vessel capital cost, and implement surrogate models to account for heat exchanger capital costs, reactor operating costs and utility costs for heating, cooling and electricity. As before, revenue is determined from total liquid methanol sales, operating costs, annualized capital costs and feed raw material costs. The flowsheet report method returns key process results, which are updated for new results with the presence of a recycle stream:" ] }, { @@ -626,4 +626,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/flowsheets/solver_captured.py b/idaes_examples/notebooks/docs/flowsheets/solver_captured.py index e0330b40..9c342a70 100644 --- a/idaes_examples/notebooks/docs/flowsheets/solver_captured.py +++ b/idaes_examples/notebooks/docs/flowsheets/solver_captured.py @@ -11,7 +11,7 @@ # for full copyright and license information. ################################################################################# """ -Captured sover +Captured solver """ import json @@ -35,7 +35,7 @@ def __init__(self, model, report=None): def solve(self, solver): solver = CapturedSolver(solver) self._result = solver.solve(self._model) - self._text = solver.ouput_text + self._text = solver.output_text return self._result def report(self): @@ -63,7 +63,7 @@ def solve(self, model, **kwargs): return self._solve_captured(model) @property - def ouput_text(self): + def output_text(self): p = self._output.index(self._outsep) output = self._output if p == -1 else self._output[:p] return "\n".join(output) diff --git a/idaes_examples/notebooks/docs/flowsheets/temperature_swing_adsorption/temperature_swing_adsorption.ipynb b/idaes_examples/notebooks/docs/flowsheets/temperature_swing_adsorption/temperature_swing_adsorption.ipynb index afb85e8e..5f335183 100644 --- a/idaes_examples/notebooks/docs/flowsheets/temperature_swing_adsorption/temperature_swing_adsorption.ipynb +++ b/idaes_examples/notebooks/docs/flowsheets/temperature_swing_adsorption/temperature_swing_adsorption.ipynb @@ -67,7 +67,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Import Pyomo pakages \n", + "### Import Pyomo packages \n", "\n", "We will need the following components from the pyomo libraries.\n", "\n", @@ -162,7 +162,7 @@ "metadata": {}, "outputs": [], "source": [ - "# create concret model\n", + "# create concrete model\n", "m = ConcreteModel()\n", "\n", "# create flowsheet\n", diff --git a/idaes_examples/notebooks/docs/flowsheets/temperature_swing_adsorption/temperature_swing_adsorption_doc.ipynb b/idaes_examples/notebooks/docs/flowsheets/temperature_swing_adsorption/temperature_swing_adsorption_doc.ipynb index 01e1d2a4..7b5c1930 100644 --- a/idaes_examples/notebooks/docs/flowsheets/temperature_swing_adsorption/temperature_swing_adsorption_doc.ipynb +++ b/idaes_examples/notebooks/docs/flowsheets/temperature_swing_adsorption/temperature_swing_adsorption_doc.ipynb @@ -67,7 +67,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Import Pyomo pakages \n", + "### Import Pyomo packages \n", "\n", "We will need the following components from the pyomo libraries.\n", "\n", @@ -162,7 +162,7 @@ "metadata": {}, "outputs": [], "source": [ - "# create concret model\n", + "# create concrete model\n", "m = ConcreteModel()\n", "\n", "# create flowsheet\n", @@ -607,4 +607,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/flowsheets/temperature_swing_adsorption/temperature_swing_adsorption_test.ipynb b/idaes_examples/notebooks/docs/flowsheets/temperature_swing_adsorption/temperature_swing_adsorption_test.ipynb index 0205b289..7fc0adf4 100644 --- a/idaes_examples/notebooks/docs/flowsheets/temperature_swing_adsorption/temperature_swing_adsorption_test.ipynb +++ b/idaes_examples/notebooks/docs/flowsheets/temperature_swing_adsorption/temperature_swing_adsorption_test.ipynb @@ -67,7 +67,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Import Pyomo pakages \n", + "### Import Pyomo packages \n", "\n", "We will need the following components from the pyomo libraries.\n", "\n", @@ -162,7 +162,7 @@ "metadata": {}, "outputs": [], "source": [ - "# create concret model\n", + "# create concrete model\n", "m = ConcreteModel()\n", "\n", "# create flowsheet\n", @@ -640,4 +640,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/flowsheets/temperature_swing_adsorption/temperature_swing_adsorption_usr.ipynb b/idaes_examples/notebooks/docs/flowsheets/temperature_swing_adsorption/temperature_swing_adsorption_usr.ipynb index 01e1d2a4..7b5c1930 100644 --- a/idaes_examples/notebooks/docs/flowsheets/temperature_swing_adsorption/temperature_swing_adsorption_usr.ipynb +++ b/idaes_examples/notebooks/docs/flowsheets/temperature_swing_adsorption/temperature_swing_adsorption_usr.ipynb @@ -67,7 +67,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Import Pyomo pakages \n", + "### Import Pyomo packages \n", "\n", "We will need the following components from the pyomo libraries.\n", "\n", @@ -162,7 +162,7 @@ "metadata": {}, "outputs": [], "source": [ - "# create concret model\n", + "# create concrete model\n", "m = ConcreteModel()\n", "\n", "# create flowsheet\n", @@ -607,4 +607,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/param_est/parameter_estimation_nrtl_using_unit_model.ipynb b/idaes_examples/notebooks/docs/param_est/parameter_estimation_nrtl_using_unit_model.ipynb index 81a9f371..d1648edd 100644 --- a/idaes_examples/notebooks/docs/param_est/parameter_estimation_nrtl_using_unit_model.ipynb +++ b/idaes_examples/notebooks/docs/param_est/parameter_estimation_nrtl_using_unit_model.ipynb @@ -35,7 +35,7 @@ "Maintainer: Andrew Lee \n", "Updated: 2023-06-01 \n", "\n", - "In this module, we will be using Pyomo's `parmest` tool in conjuction with IDAES models for parameter estimation. We demonstrate these tools by estimating the parameters associated with the NRTL property model for a benzene-toluene mixture. The NRTL model has 2 sets of parameters: the non-randomness parameter (`alpha_ij`) and the binary interaction parameter (`tau_ij`), where `i` and `j` is the pure component species. In this example, we will be only estimate the binary interaction parameter (`tau_ij`) for a given dataset. When estimating parameters associated with the property package, IDAES provides the flexibility of doing the parameter estimation by just using the state block or by using a unit model with a specified property package. This module will demonstrate parameter estimation by using the flash unit model with the NRTL property package. \n", + "In this module, we will be using Pyomo's `parmest` tool in conjunction with IDAES models for parameter estimation. We demonstrate these tools by estimating the parameters associated with the NRTL property model for a benzene-toluene mixture. The NRTL model has 2 sets of parameters: the non-randomness parameter (`alpha_ij`) and the binary interaction parameter (`tau_ij`), where `i` and `j` is the pure component species. In this example, we will be only estimate the binary interaction parameter (`tau_ij`) for a given dataset. When estimating parameters associated with the property package, IDAES provides the flexibility of doing the parameter estimation by just using the state block or by using a unit model with a specified property package. This module will demonstrate parameter estimation by using the flash unit model with the NRTL property package. \n", "\n", "We will complete the following tasks:\n", "* Set up a method to return an initialized model\n", @@ -45,8 +45,7 @@ "\n", "## Key links to documentation:\n", "* NRTL Model - https://idaes-pse.readthedocs.io/en/stable/reference_guides/model_libraries/generic/property_models/activity_coefficient.html\n", - "* parmest - https://pyomo.readthedocs.io/en/stable/contributed_packages/parmest/index.html\n", - "" + "* parmest - https://pyomo.readthedocs.io/en/stable/contributed_packages/parmest/index.html\n" ] }, { diff --git a/idaes_examples/notebooks/docs/param_est/parameter_estimation_nrtl_using_unit_model_doc.ipynb b/idaes_examples/notebooks/docs/param_est/parameter_estimation_nrtl_using_unit_model_doc.ipynb index ac7d083d..edb05ee6 100644 --- a/idaes_examples/notebooks/docs/param_est/parameter_estimation_nrtl_using_unit_model_doc.ipynb +++ b/idaes_examples/notebooks/docs/param_est/parameter_estimation_nrtl_using_unit_model_doc.ipynb @@ -35,7 +35,7 @@ "Maintainer: Andrew Lee \n", "Updated: 2023-06-01 \n", "\n", - "In this module, we will be using Pyomo's `parmest` tool in conjuction with IDAES models for parameter estimation. We demonstrate these tools by estimating the parameters associated with the NRTL property model for a benzene-toluene mixture. The NRTL model has 2 sets of parameters: the non-randomness parameter (`alpha_ij`) and the binary interaction parameter (`tau_ij`), where `i` and `j` is the pure component species. In this example, we will be only estimate the binary interaction parameter (`tau_ij`) for a given dataset. When estimating parameters associated with the property package, IDAES provides the flexibility of doing the parameter estimation by just using the state block or by using a unit model with a specified property package. This module will demonstrate parameter estimation by using the flash unit model with the NRTL property package. \n", + "In this module, we will be using Pyomo's `parmest` tool in conjunction with IDAES models for parameter estimation. We demonstrate these tools by estimating the parameters associated with the NRTL property model for a benzene-toluene mixture. The NRTL model has 2 sets of parameters: the non-randomness parameter (`alpha_ij`) and the binary interaction parameter (`tau_ij`), where `i` and `j` is the pure component species. In this example, we will be only estimate the binary interaction parameter (`tau_ij`) for a given dataset. When estimating parameters associated with the property package, IDAES provides the flexibility of doing the parameter estimation by just using the state block or by using a unit model with a specified property package. This module will demonstrate parameter estimation by using the flash unit model with the NRTL property package. \n", "\n", "We will complete the following tasks:\n", "* Set up a method to return an initialized model\n", @@ -920,4 +920,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/param_est/parameter_estimation_nrtl_using_unit_model_exercise.ipynb b/idaes_examples/notebooks/docs/param_est/parameter_estimation_nrtl_using_unit_model_exercise.ipynb index 98e12ba1..9ebb2bbd 100644 --- a/idaes_examples/notebooks/docs/param_est/parameter_estimation_nrtl_using_unit_model_exercise.ipynb +++ b/idaes_examples/notebooks/docs/param_est/parameter_estimation_nrtl_using_unit_model_exercise.ipynb @@ -35,7 +35,7 @@ "Maintainer: Andrew Lee \n", "Updated: 2023-06-01 \n", "\n", - "In this module, we will be using Pyomo's `parmest` tool in conjuction with IDAES models for parameter estimation. We demonstrate these tools by estimating the parameters associated with the NRTL property model for a benzene-toluene mixture. The NRTL model has 2 sets of parameters: the non-randomness parameter (`alpha_ij`) and the binary interaction parameter (`tau_ij`), where `i` and `j` is the pure component species. In this example, we will be only estimate the binary interaction parameter (`tau_ij`) for a given dataset. When estimating parameters associated with the property package, IDAES provides the flexibility of doing the parameter estimation by just using the state block or by using a unit model with a specified property package. This module will demonstrate parameter estimation by using the flash unit model with the NRTL property package. \n", + "In this module, we will be using Pyomo's `parmest` tool in conjunction with IDAES models for parameter estimation. We demonstrate these tools by estimating the parameters associated with the NRTL property model for a benzene-toluene mixture. The NRTL model has 2 sets of parameters: the non-randomness parameter (`alpha_ij`) and the binary interaction parameter (`tau_ij`), where `i` and `j` is the pure component species. In this example, we will be only estimate the binary interaction parameter (`tau_ij`) for a given dataset. When estimating parameters associated with the property package, IDAES provides the flexibility of doing the parameter estimation by just using the state block or by using a unit model with a specified property package. This module will demonstrate parameter estimation by using the flash unit model with the NRTL property package. \n", "\n", "We will complete the following tasks:\n", "* Set up a method to return an initialized model\n", @@ -45,8 +45,7 @@ "\n", "## Key links to documentation:\n", "* NRTL Model - https://idaes-pse.readthedocs.io/en/stable/reference_guides/model_libraries/generic/property_models/activity_coefficient.html\n", - "* parmest - https://pyomo.readthedocs.io/en/stable/contributed_packages/parmest/index.html\n", - "" + "* parmest - https://pyomo.readthedocs.io/en/stable/contributed_packages/parmest/index.html\n" ] }, { @@ -413,4 +412,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/param_est/parameter_estimation_nrtl_using_unit_model_solution.ipynb b/idaes_examples/notebooks/docs/param_est/parameter_estimation_nrtl_using_unit_model_solution.ipynb index 7fd57e58..d70ff27d 100644 --- a/idaes_examples/notebooks/docs/param_est/parameter_estimation_nrtl_using_unit_model_solution.ipynb +++ b/idaes_examples/notebooks/docs/param_est/parameter_estimation_nrtl_using_unit_model_solution.ipynb @@ -35,7 +35,7 @@ "Maintainer: Andrew Lee \n", "Updated: 2023-06-01 \n", "\n", - "In this module, we will be using Pyomo's `parmest` tool in conjuction with IDAES models for parameter estimation. We demonstrate these tools by estimating the parameters associated with the NRTL property model for a benzene-toluene mixture. The NRTL model has 2 sets of parameters: the non-randomness parameter (`alpha_ij`) and the binary interaction parameter (`tau_ij`), where `i` and `j` is the pure component species. In this example, we will be only estimate the binary interaction parameter (`tau_ij`) for a given dataset. When estimating parameters associated with the property package, IDAES provides the flexibility of doing the parameter estimation by just using the state block or by using a unit model with a specified property package. This module will demonstrate parameter estimation by using the flash unit model with the NRTL property package. \n", + "In this module, we will be using Pyomo's `parmest` tool in conjunction with IDAES models for parameter estimation. We demonstrate these tools by estimating the parameters associated with the NRTL property model for a benzene-toluene mixture. The NRTL model has 2 sets of parameters: the non-randomness parameter (`alpha_ij`) and the binary interaction parameter (`tau_ij`), where `i` and `j` is the pure component species. In this example, we will be only estimate the binary interaction parameter (`tau_ij`) for a given dataset. When estimating parameters associated with the property package, IDAES provides the flexibility of doing the parameter estimation by just using the state block or by using a unit model with a specified property package. This module will demonstrate parameter estimation by using the flash unit model with the NRTL property package. \n", "\n", "We will complete the following tasks:\n", "* Set up a method to return an initialized model\n", @@ -45,8 +45,7 @@ "\n", "## Key links to documentation:\n", "* NRTL Model - https://idaes-pse.readthedocs.io/en/stable/reference_guides/model_libraries/generic/property_models/activity_coefficient.html\n", - "* parmest - https://pyomo.readthedocs.io/en/stable/contributed_packages/parmest/index.html\n", - "" + "* parmest - https://pyomo.readthedocs.io/en/stable/contributed_packages/parmest/index.html\n" ] }, { @@ -540,4 +539,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/param_est/parameter_estimation_nrtl_using_unit_model_test.ipynb b/idaes_examples/notebooks/docs/param_est/parameter_estimation_nrtl_using_unit_model_test.ipynb index 614fa796..7add77ff 100644 --- a/idaes_examples/notebooks/docs/param_est/parameter_estimation_nrtl_using_unit_model_test.ipynb +++ b/idaes_examples/notebooks/docs/param_est/parameter_estimation_nrtl_using_unit_model_test.ipynb @@ -35,7 +35,7 @@ "Maintainer: Andrew Lee \n", "Updated: 2023-06-01 \n", "\n", - "In this module, we will be using Pyomo's `parmest` tool in conjuction with IDAES models for parameter estimation. We demonstrate these tools by estimating the parameters associated with the NRTL property model for a benzene-toluene mixture. The NRTL model has 2 sets of parameters: the non-randomness parameter (`alpha_ij`) and the binary interaction parameter (`tau_ij`), where `i` and `j` is the pure component species. In this example, we will be only estimate the binary interaction parameter (`tau_ij`) for a given dataset. When estimating parameters associated with the property package, IDAES provides the flexibility of doing the parameter estimation by just using the state block or by using a unit model with a specified property package. This module will demonstrate parameter estimation by using the flash unit model with the NRTL property package. \n", + "In this module, we will be using Pyomo's `parmest` tool in conjunction with IDAES models for parameter estimation. We demonstrate these tools by estimating the parameters associated with the NRTL property model for a benzene-toluene mixture. The NRTL model has 2 sets of parameters: the non-randomness parameter (`alpha_ij`) and the binary interaction parameter (`tau_ij`), where `i` and `j` is the pure component species. In this example, we will be only estimate the binary interaction parameter (`tau_ij`) for a given dataset. When estimating parameters associated with the property package, IDAES provides the flexibility of doing the parameter estimation by just using the state block or by using a unit model with a specified property package. This module will demonstrate parameter estimation by using the flash unit model with the NRTL property package. \n", "\n", "We will complete the following tasks:\n", "* Set up a method to return an initialized model\n", @@ -45,8 +45,7 @@ "\n", "## Key links to documentation:\n", "* NRTL Model - https://idaes-pse.readthedocs.io/en/stable/reference_guides/model_libraries/generic/property_models/activity_coefficient.html\n", - "* parmest - https://pyomo.readthedocs.io/en/stable/contributed_packages/parmest/index.html\n", - "" + "* parmest - https://pyomo.readthedocs.io/en/stable/contributed_packages/parmest/index.html\n" ] }, { @@ -481,4 +480,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/param_est/parameter_estimation_nrtl_using_unit_model_usr.ipynb b/idaes_examples/notebooks/docs/param_est/parameter_estimation_nrtl_using_unit_model_usr.ipynb index 7fd57e58..d70ff27d 100644 --- a/idaes_examples/notebooks/docs/param_est/parameter_estimation_nrtl_using_unit_model_usr.ipynb +++ b/idaes_examples/notebooks/docs/param_est/parameter_estimation_nrtl_using_unit_model_usr.ipynb @@ -35,7 +35,7 @@ "Maintainer: Andrew Lee \n", "Updated: 2023-06-01 \n", "\n", - "In this module, we will be using Pyomo's `parmest` tool in conjuction with IDAES models for parameter estimation. We demonstrate these tools by estimating the parameters associated with the NRTL property model for a benzene-toluene mixture. The NRTL model has 2 sets of parameters: the non-randomness parameter (`alpha_ij`) and the binary interaction parameter (`tau_ij`), where `i` and `j` is the pure component species. In this example, we will be only estimate the binary interaction parameter (`tau_ij`) for a given dataset. When estimating parameters associated with the property package, IDAES provides the flexibility of doing the parameter estimation by just using the state block or by using a unit model with a specified property package. This module will demonstrate parameter estimation by using the flash unit model with the NRTL property package. \n", + "In this module, we will be using Pyomo's `parmest` tool in conjunction with IDAES models for parameter estimation. We demonstrate these tools by estimating the parameters associated with the NRTL property model for a benzene-toluene mixture. The NRTL model has 2 sets of parameters: the non-randomness parameter (`alpha_ij`) and the binary interaction parameter (`tau_ij`), where `i` and `j` is the pure component species. In this example, we will be only estimate the binary interaction parameter (`tau_ij`) for a given dataset. When estimating parameters associated with the property package, IDAES provides the flexibility of doing the parameter estimation by just using the state block or by using a unit model with a specified property package. This module will demonstrate parameter estimation by using the flash unit model with the NRTL property package. \n", "\n", "We will complete the following tasks:\n", "* Set up a method to return an initialized model\n", @@ -45,8 +45,7 @@ "\n", "## Key links to documentation:\n", "* NRTL Model - https://idaes-pse.readthedocs.io/en/stable/reference_guides/model_libraries/generic/property_models/activity_coefficient.html\n", - "* parmest - https://pyomo.readthedocs.io/en/stable/contributed_packages/parmest/index.html\n", - "" + "* parmest - https://pyomo.readthedocs.io/en/stable/contributed_packages/parmest/index.html\n" ] }, { @@ -540,4 +539,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/power_gen/solid_oxide_cell/soc_pid_control.ipynb b/idaes_examples/notebooks/docs/power_gen/solid_oxide_cell/soc_pid_control.ipynb index 0ad4e768..3d104476 100644 --- a/idaes_examples/notebooks/docs/power_gen/solid_oxide_cell/soc_pid_control.ipynb +++ b/idaes_examples/notebooks/docs/power_gen/solid_oxide_cell/soc_pid_control.ipynb @@ -150,7 +150,7 @@ "# The names here correspond to the row names in \n", "# soec_flowsheet_operating_conditions.csv\n", "# There should be len(time_set) entries here.\n", - "# We start simulating a period at maxmimum production\n", + "# We start simulating a period at maximum production\n", "# in order to confirm the system is at steady state.\n", "if operating_scenario == OperatingScenario.maximum_production:\n", " setpoints = [\n", @@ -1021,7 +1021,7 @@ "id": "43d530dc", "metadata": {}, "source": [ - "Here we run PETSc to integrate the flowsheet with the TS integrator. Because we are loading from a solved flowsheet, in principle we could set `skip_initial=True`. However, due to user error there is sometimes a discrepency between the setpoints loaded and the initial conditions loaded, so we leave it in. There are many options for PETSc-TS that can be read about in the PETSc documentation." + "Here we run PETSc to integrate the flowsheet with the TS integrator. Because we are loading from a solved flowsheet, in principle we could set `skip_initial=True`. However, due to user error there is sometimes a discrepancy between the setpoints loaded and the initial conditions loaded, so we leave it in. There are many options for PETSc-TS that can be read about in the PETSc documentation." ] }, { diff --git a/idaes_examples/notebooks/docs/power_gen/solid_oxide_cell/soc_pid_control_doc.ipynb b/idaes_examples/notebooks/docs/power_gen/solid_oxide_cell/soc_pid_control_doc.ipynb index df06f52a..8518590d 100644 --- a/idaes_examples/notebooks/docs/power_gen/solid_oxide_cell/soc_pid_control_doc.ipynb +++ b/idaes_examples/notebooks/docs/power_gen/solid_oxide_cell/soc_pid_control_doc.ipynb @@ -144,7 +144,7 @@ "# The names here correspond to the row names in \n", "# soec_flowsheet_operating_conditions.csv\n", "# There should be len(time_set) entries here.\n", - "# We start simulating a period at maxmimum production\n", + "# We start simulating a period at maximum production\n", "# in order to confirm the system is at steady state.\n", "if operating_scenario == OperatingScenario.maximum_production:\n", " setpoints = [\n", @@ -977,7 +977,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Here we run PETSc to integrate the flowsheet with the TS integrator. Because we are loading from a solved flowsheet, in principle we could set `skip_initial=True`. However, due to user error there is sometimes a discrepency between the setpoints loaded and the initial conditions loaded, so we leave it in. There are many options for PETSc-TS that can be read about in the PETSc documentation." + "Here we run PETSc to integrate the flowsheet with the TS integrator. Because we are loading from a solved flowsheet, in principle we could set `skip_initial=True`. However, due to user error there is sometimes a discrepancy between the setpoints loaded and the initial conditions loaded, so we leave it in. There are many options for PETSc-TS that can be read about in the PETSc documentation." ] }, { diff --git a/idaes_examples/notebooks/docs/power_gen/solid_oxide_cell/soc_pid_control_test.ipynb b/idaes_examples/notebooks/docs/power_gen/solid_oxide_cell/soc_pid_control_test.ipynb index 4f2fb244..9f392d6e 100644 --- a/idaes_examples/notebooks/docs/power_gen/solid_oxide_cell/soc_pid_control_test.ipynb +++ b/idaes_examples/notebooks/docs/power_gen/solid_oxide_cell/soc_pid_control_test.ipynb @@ -144,7 +144,7 @@ "# The names here correspond to the row names in \n", "# soec_flowsheet_operating_conditions.csv\n", "# There should be len(time_set) entries here.\n", - "# We start simulating a period at maxmimum production\n", + "# We start simulating a period at maximum production\n", "# in order to confirm the system is at steady state.\n", "if operating_scenario == OperatingScenario.maximum_production:\n", " setpoints = [\n", @@ -991,7 +991,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Here we run PETSc to integrate the flowsheet with the TS integrator. Because we are loading from a solved flowsheet, in principle we could set `skip_initial=True`. However, due to user error there is sometimes a discrepency between the setpoints loaded and the initial conditions loaded, so we leave it in. There are many options for PETSc-TS that can be read about in the PETSc documentation." + "Here we run PETSc to integrate the flowsheet with the TS integrator. Because we are loading from a solved flowsheet, in principle we could set `skip_initial=True`. However, due to user error there is sometimes a discrepancy between the setpoints loaded and the initial conditions loaded, so we leave it in. There are many options for PETSc-TS that can be read about in the PETSc documentation." ] }, { diff --git a/idaes_examples/notebooks/docs/power_gen/solid_oxide_cell/soc_pid_control_usr.ipynb b/idaes_examples/notebooks/docs/power_gen/solid_oxide_cell/soc_pid_control_usr.ipynb index df06f52a..8518590d 100644 --- a/idaes_examples/notebooks/docs/power_gen/solid_oxide_cell/soc_pid_control_usr.ipynb +++ b/idaes_examples/notebooks/docs/power_gen/solid_oxide_cell/soc_pid_control_usr.ipynb @@ -144,7 +144,7 @@ "# The names here correspond to the row names in \n", "# soec_flowsheet_operating_conditions.csv\n", "# There should be len(time_set) entries here.\n", - "# We start simulating a period at maxmimum production\n", + "# We start simulating a period at maximum production\n", "# in order to confirm the system is at steady state.\n", "if operating_scenario == OperatingScenario.maximum_production:\n", " setpoints = [\n", @@ -977,7 +977,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Here we run PETSc to integrate the flowsheet with the TS integrator. Because we are loading from a solved flowsheet, in principle we could set `skip_initial=True`. However, due to user error there is sometimes a discrepency between the setpoints loaded and the initial conditions loaded, so we leave it in. There are many options for PETSc-TS that can be read about in the PETSc documentation." + "Here we run PETSc to integrate the flowsheet with the TS integrator. Because we are loading from a solved flowsheet, in principle we could set `skip_initial=True`. However, due to user error there is sometimes a discrepancy between the setpoints loaded and the initial conditions loaded, so we leave it in. There are many options for PETSc-TS that can be read about in the PETSc documentation." ] }, { diff --git a/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages.ipynb b/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages.ipynb index d6462ef7..70fc2e64 100644 --- a/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages.ipynb +++ b/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages.ipynb @@ -291,7 +291,7 @@ "source": [ "## Step 3: Define Component and Phase Lists\n", "\n", - "The next step in writing the Physical Parameter Block class is to define the phases and components present in the mixture. These are defined using `Phase` and `Component` objects which are imported from `idaes.core`. As `Phase` and `Component` objects are added to the proeprty package, the `phase_list` and `component_list` `Sets` required by the modeling framework are automatically populated. Even for systems where there is only a single phase or component, it is necessary to define phase and component objects as these are used to construct the necessary indexing sets used when building unit models.\n", + "The next step in writing the Physical Parameter Block class is to define the phases and components present in the mixture. These are defined using `Phase` and `Component` objects which are imported from `idaes.core`. As `Phase` and `Component` objects are added to the property package, the `phase_list` and `component_list` `Sets` required by the modeling framework are automatically populated. Even for systems where there is only a single phase or component, it is necessary to define phase and component objects as these are used to construct the necessary indexing sets used when building unit models.\n", "\n", "For this example, we have 5 components of interest; benzene, toluene, hydrogen, methane and diphenyl. We define these in the property package by adding a generic `Component` object to the Physical Parameter Block; for example `self.benzene = Component()`. For more complex systems, IDAES supports a number of different component types and components can be assigned a number of arguments at constructions but these will not be discussed here.\n", "\n", @@ -1055,9 +1055,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Next, we create `ConcreteModel` and a steady-state `FlowsheetBlock` to contain our example, ot which we attach an instance of our new `HDAPhysicalParameterBlock`.\n", + "Next, we create `ConcreteModel` and a steady-state `FlowsheetBlock` to contain our example, to which we attach an instance of our new `HDAPhysicalParameterBlock`.\n", "\n", - "We can then create an instance of the `HDAStateBlock` directly from the parameter block using the `build_state_block` method. This uses the reference to the State Block class that we attached ot the Physical Parameter Block earlier in the example to automatically create an instance of the correct class. Note that we index the State Block by the time domain, so that it looks like a typical state block in a flowsheet, and we set `defined_state = True` so that we can set values for all the component mole fractions later." + "We can then create an instance of the `HDAStateBlock` directly from the parameter block using the `build_state_block` method. This uses the reference to the State Block class that we attached to the Physical Parameter Block earlier in the example to automatically create an instance of the correct class. Note that we index the State Block by the time domain, so that it looks like a typical state block in a flowsheet, and we set `defined_state = True` so that we can set values for all the component mole fractions later." ] }, { diff --git a/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages_doc.ipynb b/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages_doc.ipynb index e4cce63e..fa2a58ca 100644 --- a/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages_doc.ipynb +++ b/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages_doc.ipynb @@ -299,7 +299,7 @@ "source": [ "## Step 3: Define Component and Phase Lists\n", "\n", - "The next step in writing the Physical Parameter Block class is to define the phases and components present in the mixture. These are defined using `Phase` and `Component` objects which are imported from `idaes.core`. As `Phase` and `Component` objects are added to the proeprty package, the `phase_list` and `component_list` `Sets` required by the modeling framework are automatically populated. Even for systems where there is only a single phase or component, it is necessary to define phase and component objects as these are used to construct the necessary indexing sets used when building unit models.\n", + "The next step in writing the Physical Parameter Block class is to define the phases and components present in the mixture. These are defined using `Phase` and `Component` objects which are imported from `idaes.core`. As `Phase` and `Component` objects are added to the property package, the `phase_list` and `component_list` `Sets` required by the modeling framework are automatically populated. Even for systems where there is only a single phase or component, it is necessary to define phase and component objects as these are used to construct the necessary indexing sets used when building unit models.\n", "\n", "For this example, we have 5 components of interest; benzene, toluene, hydrogen, methane and diphenyl. We define these in the property package by adding a generic `Component` object to the Physical Parameter Block; for example `self.benzene = Component()`. For more complex systems, IDAES supports a number of different component types and components can be assigned a number of arguments at constructions but these will not be discussed here.\n", "\n", @@ -1063,9 +1063,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Next, we create `ConcreteModel` and a steady-state `FlowsheetBlock` to contain our example, ot which we attach an instance of our new `HDAPhysicalParameterBlock`.\n", + "Next, we create `ConcreteModel` and a steady-state `FlowsheetBlock` to contain our example, to which we attach an instance of our new `HDAPhysicalParameterBlock`.\n", "\n", - "We can then create an instance of the `HDAStateBlock` directly from the parameter block using the `build_state_block` method. This uses the reference to the State Block class that we attached ot the Physical Parameter Block earlier in the example to automatically create an instance of the correct class. Note that we index the State Block by the time domain, so that it looks like a typical state block in a flowsheet, and we set `defined_state = True` so that we can set values for all the component mole fractions later." + "We can then create an instance of the `HDAStateBlock` directly from the parameter block using the `build_state_block` method. This uses the reference to the State Block class that we attached to the Physical Parameter Block earlier in the example to automatically create an instance of the correct class. Note that we index the State Block by the time domain, so that it looks like a typical state block in a flowsheet, and we set `defined_state = True` so that we can set values for all the component mole fractions later." ] }, { @@ -1465,4 +1465,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages_test.ipynb b/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages_test.ipynb index e85c9801..41a3b535 100644 --- a/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages_test.ipynb +++ b/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages_test.ipynb @@ -34,7 +34,7 @@ "Maintainer: Andrew Lee \n", "Updated: 2023-06-01 \n", "\n", - "Calculation of thermophysical, transport and reaction properties form a key part of any process model, and it is important that these calculations are both accurate and tractable in order for the overall problem to be solved correctly. One of the features of the IDAES Integrated Platform is the ability for modelers to create their own property \u201cpackages\u201d to calculate these properties, allowing them to customize the level of complexity and rigor to suit each application. This tutorial will introduce you to the basics of creating property packages for calculating thermophysical and transport properties within the IDAES Core Modeling Framework.\n", + "Calculation of thermophysical, transport and reaction properties form a key part of any process model, and it is important that these calculations are both accurate and tractable in order for the overall problem to be solved correctly. One of the features of the IDAES Integrated Platform is the ability for modelers to create their own property “packages” to calculate these properties, allowing them to customize the level of complexity and rigor to suit each application. This tutorial will introduce you to the basics of creating property packages for calculating thermophysical and transport properties within the IDAES Core Modeling Framework.\n", "\n", "## What is a Property?\n", "\n", @@ -50,7 +50,7 @@ "* transport properties such as viscosity and thermal conductivity\n", "* rates of reaction and chemical equilibria\n", "\n", - "The definition and calculation of all of these is defined via \u201cproperty packages\u201d, which contain all the variables and constraints associated with calculating these properties.\n", + "The definition and calculation of all of these is defined via “property packages”, which contain all the variables and constraints associated with calculating these properties.\n", "\n", "
    \n", "Note:\n", @@ -67,19 +67,19 @@ "\n", "## What Properties do I Need?\n", "\n", - "An important aspect of the IDAES Core Modeling Framework is that a modeler only needs to provide calculations for those properties that they will use within their process. Put another way, modelers do not need to include calculations for a property that they are not going to use in their model \u2013 this allows modelers to avoid introducing unnecessary complexity into their models to calculate a property they do not actually need. When combined with flexibility elsewhere in the modeling framework to control which equations are written in the unit models, this can even allow users to avoid calculating properties that would normally be considered mandatory \u2013 for example, a property package for a conceptual design flowsheet which does not include energy or momentum balances would not need to define specific enthalpy or even temperature and pressure as these will not be required by the unit models.\n", + "An important aspect of the IDAES Core Modeling Framework is that a modeler only needs to provide calculations for those properties that they will use within their process. Put another way, modelers do not need to include calculations for a property that they are not going to use in their model – this allows modelers to avoid introducing unnecessary complexity into their models to calculate a property they do not actually need. When combined with flexibility elsewhere in the modeling framework to control which equations are written in the unit models, this can even allow users to avoid calculating properties that would normally be considered mandatory – for example, a property package for a conceptual design flowsheet which does not include energy or momentum balances would not need to define specific enthalpy or even temperature and pressure as these will not be required by the unit models.\n", "\n", "This then raises the question of how do you know what properties you will need, especially if you are using models from a library you did not write yourself. To answer this, you should refer to the model documentation, and you can also use the [IDAES Properties Interrogator tool](https://idaes-pse.readthedocs.io/en/stable/reference_guides/model_libraries/generic/property_models/interrogator.html) to analyze your flowsheet and determine what properties are required.\n", "\n", "## Thermophysical Properties and Reaction Properties\n", "\n", - "Within the IDAES Core Modeling Framework, properties are divided into two classifications; thermophysical properties and reaction properties. Reaction properties are those properties related to chemical reactions (both equilibrium and rate-based, but not phase equilibrium) that occur within the system , whilst thermophysical properties include those properties related to thermodynamic relationships (including phase equilibrium) and transport properties. The reason for this separation is that thermophysical properties are required by all unit operations in a process (and need to be consistent with each other), whilst reaction properties are generally only required in specific unit operations identified as \u201creactors\u201d (and each reactor may have a different set of chemical reactions occurring in it). Thus, reaction properties are separated from the thermophysical property calculations to allow for modular implementation in only specific reactor units. This tutorial only deals with thermophysical properties, and reaction properties will be dealt with in a later tutorial.\n", + "Within the IDAES Core Modeling Framework, properties are divided into two classifications; thermophysical properties and reaction properties. Reaction properties are those properties related to chemical reactions (both equilibrium and rate-based, but not phase equilibrium) that occur within the system , whilst thermophysical properties include those properties related to thermodynamic relationships (including phase equilibrium) and transport properties. The reason for this separation is that thermophysical properties are required by all unit operations in a process (and need to be consistent with each other), whilst reaction properties are generally only required in specific unit operations identified as “reactors” (and each reactor may have a different set of chemical reactions occurring in it). Thus, reaction properties are separated from the thermophysical property calculations to allow for modular implementation in only specific reactor units. This tutorial only deals with thermophysical properties, and reaction properties will be dealt with in a later tutorial.\n", "\n", - "## What is a Property \u201cPackage\u201d?\n", + "## What is a Property “Package”?\n", "\n", - "Generally, properties (both thermophysical and reaction) are calculated using correlations that depend on some set of parameters (be they physical constants or empirical parameters). These parameters are constant across all instances of a property calculation in a flowsheet (i.e. each StateBlock uses the same parameters), it makes sense to store these parameters in a single, central location that all StateBlocks can refer to as necessary. Thus, the IDAES modeling framework has \u201cParameter Blocks\u201d which are attached to the flowsheet to contain all the global parameters associated with a given set of property calculations.\n", + "Generally, properties (both thermophysical and reaction) are calculated using correlations that depend on some set of parameters (be they physical constants or empirical parameters). These parameters are constant across all instances of a property calculation in a flowsheet (i.e. each StateBlock uses the same parameters), it makes sense to store these parameters in a single, central location that all StateBlocks can refer to as necessary. Thus, the IDAES modeling framework has “Parameter Blocks” which are attached to the flowsheet to contain all the global parameters associated with a given set of property calculations.\n", "\n", - "Thus, the calculations of thermophysical properties within the IDAES modeling framework is achieved using a \u201cpackage\u201d of three related modeling components (or classes); the Physical Parameter Block, the State Block and the State Block Data classes. Each of these will be discussed further in the next section as we develop an example property package.\n", + "Thus, the calculations of thermophysical properties within the IDAES modeling framework is achieved using a “package” of three related modeling components (or classes); the Physical Parameter Block, the State Block and the State Block Data classes. Each of these will be discussed further in the next section as we develop an example property package.\n", "\n", "At a deeper level, the calculation for many thermophysical properties is a self-contained correlation that is more or less independent of the other properties around it. Thus, each set of thermophysical property calculations is a package of user-chosen sub-models for each property of interest to the user.\n", "\n", @@ -232,7 +232,7 @@ "\n", "The first step is to define the units of measurement for the property package, which will in turn be inherited by any unit model using this property package. Units of measurement for the property package are defined by setting units for the 7 base measurement quantities; time, length, mass, amount, temperature, current and luminous intensity (as current and luminous intensity are generally of lesser importance in process systems engineering, specifying units for these base quantities is optional). Within IDAES, units are specified using Pyomo's units of measurement features, which can be imported from `pyomo.environ`. For this example, the units of measurement features were given the name `pyunits` for clarity.\n", "\n", - "The units of measurement for all other quantities in the model can then be derived from these base quantities; for example the units of energy are `mass*length^2/time^2`. The framework expects all quantities in the property package to use these base units \u2013 the Pyomo units of measurement conversion tools can be used if conversion between different sets of units are required.\n", + "The units of measurement for all other quantities in the model can then be derived from these base quantities; for example the units of energy are `mass*length^2/time^2`. The framework expects all quantities in the property package to use these base units – the Pyomo units of measurement conversion tools can be used if conversion between different sets of units are required.\n", "\n", "In order to set the base units, we need to create a dictionary which has each of the base quantities as a key, and provide a Pyomo recognized unit as the value as shown below." ] @@ -258,7 +258,7 @@ "source": [ "## Step 2: Define Supported Properties\n", "\n", - "The next step is to provide some metadata defining what properties are supported by the property package (including state variables). The first purpose of this metadata is to record a summary of what properties are supported to help user identify whether a given property package is suitable for their needs. The second purpose of the metadata is to allow us to simplify our property calculations by only construction those properties that are actually required by a given unit operation \u2013 a property package needs to support all the properties required by a process flowsheet, but not all of those properties are required in every unit operation. Thus, the IDAES modeling framework supports a \u201cbuild-on-demand\u201d approach for properties, such that only those properties that are required are constructed at any given point.\n", + "The next step is to provide some metadata defining what properties are supported by the property package (including state variables). The first purpose of this metadata is to record a summary of what properties are supported to help user identify whether a given property package is suitable for their needs. The second purpose of the metadata is to allow us to simplify our property calculations by only construction those properties that are actually required by a given unit operation – a property package needs to support all the properties required by a process flowsheet, but not all of those properties are required in every unit operation. Thus, the IDAES modeling framework supports a “build-on-demand” approach for properties, such that only those properties that are required are constructed at any given point.\n", "\n", "This is achieved through the use of the properties metadata, where for each property supported by the property package the user needs to define a `method` argument. This argument can take one of two forms:\n", "\n", @@ -291,7 +291,7 @@ "source": [ "## Step 3: Define Component and Phase Lists\n", "\n", - "The next step in writing the Physical Parameter Block class is to define the phases and components present in the mixture. These are defined using `Phase` and `Component` objects which are imported from `idaes.core`. As `Phase` and `Component` objects are added to the proeprty package, the `phase_list` and `component_list` `Sets` required by the modeling framework are automatically populated. Even for systems where there is only a single phase or component, it is necessary to define phase and component objects as these are used to construct the necessary indexing sets used when building unit models.\n", + "The next step in writing the Physical Parameter Block class is to define the phases and components present in the mixture. These are defined using `Phase` and `Component` objects which are imported from `idaes.core`. As `Phase` and `Component` objects are added to the property package, the `phase_list` and `component_list` `Sets` required by the modeling framework are automatically populated. Even for systems where there is only a single phase or component, it is necessary to define phase and component objects as these are used to construct the necessary indexing sets used when building unit models.\n", "\n", "For this example, we have 5 components of interest; benzene, toluene, hydrogen, methane and diphenyl. We define these in the property package by adding a generic `Component` object to the Physical Parameter Block; for example `self.benzene = Component()`. For more complex systems, IDAES supports a number of different component types and components can be assigned a number of arguments at constructions but these will not be discussed here.\n", "\n", @@ -327,9 +327,9 @@ "
    \n", "Param or Var:\n", "\n", - "The most obvious way to declare a \"parameter\" in a model would appear to be to use the Pyomo `Param` object. However, modelers should be aware the `Param` objects are never seen by the solver (they are converted to fixed floating point numbers by the solver writer). This means that it is not possible to use a solver to find the value for a parameter \u2013 i.e., it is not possible to use `Param` objects in a parameter estimation problem.\n", + "The most obvious way to declare a \"parameter\" in a model would appear to be to use the Pyomo `Param` object. However, modelers should be aware the `Param` objects are never seen by the solver (they are converted to fixed floating point numbers by the solver writer). This means that it is not possible to use a solver to find the value for a parameter – i.e., it is not possible to use `Param` objects in a parameter estimation problem.\n", "\n", - "Instead, modelers should use fixed `Var` objects for any parameter that may need to be estimated at some point. Within IDAES, this means that most \u201cparameters\u201d are in fact declared as `Var` objects, with `Param` objects used only for parameters with well-known values (for example critical pressures and temperatures or molecular weights).\n", + "Instead, modelers should use fixed `Var` objects for any parameter that may need to be estimated at some point. Within IDAES, this means that most “parameters” are in fact declared as `Var` objects, with `Param` objects used only for parameters with well-known values (for example critical pressures and temperatures or molecular weights).\n", "
    \n", "\n", "For this example, the first parameters we need to define are the reference state for our property calculations along with the molecular weights of each of the components of interest. These are fixed parameters that should not be estimated by parameter estimation, so we create Pyomo `Param` objects to represent each of these, as shown below. When we declare a `Param`, we also need to define a default value and the units of measurement for each parameter. Note that the units of measurement for these parameters does not necessarily need to match those defined in the properties metadata, but if they are not consistent then a unit conversion will be required at some point when calculating property values.\n", @@ -371,15 +371,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "For this example, we also need to define the parameter associated with calculating the specific enthalpy of each component. As mentioned before, we will use the correlation proposed in \u201cThe Properties of Gases and Liquids, 4th Edition\u201d by Reid, Prausnitz and Polling (1987), which has the form:\n", + "For this example, we also need to define the parameter associated with calculating the specific enthalpy of each component. As mentioned before, we will use the correlation proposed in “The Properties of Gases and Liquids, 4th Edition” by Reid, Prausnitz and Polling (1987), which has the form:\n", "\n", "\\begin{equation*}\n", - "h_j \u2013 h_{j, ref}= A_j \\times (T-T_{ref}) + \\frac{B_j}{2}\\times (T^2-T_{ref}^2) + \\frac{C_j}{3}\\times (T^3-T_{ref}^3) + \\frac{D_j}{4}\\times (T^4-T_{ref}^4)\n", + "h_j – h_{j, ref}= A_j \\times (T-T_{ref}) + \\frac{B_j}{2}\\times (T^2-T_{ref}^2) + \\frac{C_j}{3}\\times (T^3-T_{ref}^3) + \\frac{D_j}{4}\\times (T^4-T_{ref}^4)\n", "\\end{equation*}\n", "\n", - "where $h_{j, ref}$ is the standard heat of formation of component $j$ in the vapor phase, and $A_j$, $B_j$, $C_j$, and $D_j$ are component-specific parameters in the correlation. At first glance, one might ask if we could declare a single object indexed by the list `[\u201cA\u201d, \u201cB\u201d, \u201cC\u201d, \u201cD\u201d]` and component to represent all the parameters as a single object; however it must be noted that the parameters $A$, $B$, $C$, and $D$ all have different units. Thus, we need to declare separate objects for each of $A$, $B$, $C$, and $D$ (along with $h_{ref}$) which are indexed by component so that we can assign the correct units to each.\n", + "where $h_{j, ref}$ is the standard heat of formation of component $j$ in the vapor phase, and $A_j$, $B_j$, $C_j$, and $D_j$ are component-specific parameters in the correlation. At first glance, one might ask if we could declare a single object indexed by the list `[“A”, “B”, “C”, “D”]` and component to represent all the parameters as a single object; however it must be noted that the parameters $A$, $B$, $C$, and $D$ all have different units. Thus, we need to declare separate objects for each of $A$, $B$, $C$, and $D$ (along with $h_{ref}$) which are indexed by component so that we can assign the correct units to each.\n", "\n", - "However, these parameters are mostly empirical and are values that we may wish to estimate at some point, thus we will declare these as Pyomo `Var` objects rather than `Param` objects, which also means that we must `fix` the value of these parameters when we construct the property package. This is shown in the code below \u2013 note that each parameters (`Var` object is fixed immediately after it is declared)." + "However, these parameters are mostly empirical and are values that we may wish to estimate at some point, thus we will declare these as Pyomo `Var` objects rather than `Param` objects, which also means that we must `fix` the value of these parameters when we construct the property package. This is shown in the code below – note that each parameters (`Var` object is fixed immediately after it is declared)." ] }, { @@ -478,9 +478,9 @@ "\n", "First, we need to declare our new class and give it a unique name. In this example, we will call our new class `HDAParameterBlock`. The first two lines of the example below show how we declare our new class using the `declare_process_block_decorator` and inheriting from the `PhysicalParameterBlock` base class from the IDAES Core model libraries. Inheriting from the `PhysicalParameterBlock` brings us access to all the necessary features required by the IDAES modeling framework, whilst the `declare_process_block_class` decorator performs some boilerplate operations to replicate the expected object structure of Pyomo. Further details on these components can be found in the IDAES documentation.\n", "\n", - "Next, we need to set up any configuration arguments we need for the property package. This is done using Pyomo \u201cConfig Blocks\u201d which provide a convenient way of declaring, organizing and documenting configuration arguments. To begin with, we can inherit from the `CONFIG` block declared in the `PhysicalParameterBlock` base class, which provides all the arguments that the IDAES modeling framework expects to be present. Modelers can then add additional configuration arguments to provide users with options when constructing their property packages, however we will not cover that in this tutorial.\n", + "Next, we need to set up any configuration arguments we need for the property package. This is done using Pyomo “Config Blocks” which provide a convenient way of declaring, organizing and documenting configuration arguments. To begin with, we can inherit from the `CONFIG` block declared in the `PhysicalParameterBlock` base class, which provides all the arguments that the IDAES modeling framework expects to be present. Modelers can then add additional configuration arguments to provide users with options when constructing their property packages, however we will not cover that in this tutorial.\n", "\n", - "The most significant part of any IDAES model class is the `build` method, which contains the instructions on how to construct an instance of the desired model and all IDAES models are expected to have a `build` method. The first step in any `build` method is to call `super().build()`, which will trigger the `build` method of the base class that the current class inherits from \u2013 this is important since this is how we automate construction of any underlying components required by the modeling framework and ensure that everything integrates smoothly. Next, a `PhysicalParameterBlock` needs to contain a pointer to the related `StateBlock` (which we will look at next) \u2013 this is used to allow us to build instances of the `StateBlock` by only knowing the `PhysicalParameterBlock` we wish to use. To do this, we create an attribute named `_state_block_class` attached to our class with a pointer to the `StateBlock` class; in this case `self._state_block_class = HDAStateBlock`, where `HDAStateBlock` is the name of the yet to be declared `StateBlock`. Finally, the `build` method needs to construct the actual parameters required for the property package, which we do here by calling the sub-methods written previously.\n", + "The most significant part of any IDAES model class is the `build` method, which contains the instructions on how to construct an instance of the desired model and all IDAES models are expected to have a `build` method. The first step in any `build` method is to call `super().build()`, which will trigger the `build` method of the base class that the current class inherits from – this is important since this is how we automate construction of any underlying components required by the modeling framework and ensure that everything integrates smoothly. Next, a `PhysicalParameterBlock` needs to contain a pointer to the related `StateBlock` (which we will look at next) – this is used to allow us to build instances of the `StateBlock` by only knowing the `PhysicalParameterBlock` we wish to use. To do this, we create an attribute named `_state_block_class` attached to our class with a pointer to the `StateBlock` class; in this case `self._state_block_class = HDAStateBlock`, where `HDAStateBlock` is the name of the yet to be declared `StateBlock`. Finally, the `build` method needs to construct the actual parameters required for the property package, which we do here by calling the sub-methods written previously.\n", "\n", "The final step in creating the `PhysicalParameterBlock` class is to declare a `classmethod` named `define_metadata` which takes two arguments; a class (`cls`) and an instance of that class (`obj`). This method in turn needs to call two pre-defined methods (inherited from the underlying base classes):\n", "\n", @@ -526,13 +526,13 @@ "\n", "After the `Physical Parameter Block` class has been created, the next step is to write the code necessary to create the State Blocks that will be used through out the flowsheet. Unlike other models however, creating a `State Block` actually required us to write two `classes`. In short, indexed Pyomo object components (e.g. `Vars` and `Blocks`) actually consist of two objects: an `IndexedComponent` object which serves as a container for multiple `ComponentData` objects which represent the component at each point in the indexing set. For example, a `Var` indexed by the `Set` `[1, 2, 3, 4]` actually consists of a single `IndexedVar` object which contains 4 `VarData` objects. Normally this behavior is hidden behind the `declare_process_block_data` decorator which handles the details of this structure (as a side note, unindexed components similarly involve two classes but this is hidden by the use of multiple inheritance.)\n", "\n", - "Normally, when we write models in IDAES, we are concerned only with the `ComponentData` object \u2013 i.e., the instructions on how to build an instance of the model at each indexed point (hence the naming convention used when declaring classes). However, State Blocks are slightly different in that we always expect State Blocks to be indexed (they will always be indexed by time, at a minimum). Due to this, we often want to perform actions on all the elements of the indexed `State Block` at once (rather than element by element), such as during initialization. Thus, we have a need to write methods that are attached to the `IndexedStateBlock` in addition to the normal methods for the `StateBlockData` object. Fortunately, the `declare_process_block_data` decorator facilitates this for us, but it does mean we need to declare two classes when creating State Blocks.\n", + "Normally, when we write models in IDAES, we are concerned only with the `ComponentData` object – i.e., the instructions on how to build an instance of the model at each indexed point (hence the naming convention used when declaring classes). However, State Blocks are slightly different in that we always expect State Blocks to be indexed (they will always be indexed by time, at a minimum). Due to this, we often want to perform actions on all the elements of the indexed `State Block` at once (rather than element by element), such as during initialization. Thus, we have a need to write methods that are attached to the `IndexedStateBlock` in addition to the normal methods for the `StateBlockData` object. Fortunately, the `declare_process_block_data` decorator facilitates this for us, but it does mean we need to declare two classes when creating State Blocks.\n", "\n", "For this example, we will begin by describing the content of the `StateBlockData` objects, as this is where we create the variables and constraints that describe how to calculate the thermophysical properties of the material. After that, we will discuss how to create the class that contains methods to be applied to the `IndexedStateBlock` as a whole.\n", "\n", "## Step 5: Declare State Variables\n", "\n", - "The first step in defining a `State Block` is to create the \u201cstate variables\u201d which will be used to define the \u201cstate\u201d of the material at any given point. The concept of a \u201cstate variable\u201d in IDAES is much the same as the concept in thermodynamics, with the exception that we include extensive flow information in the state definition in IDAES. In short, the \u201cstate variables\u201d should be sufficient to fully define the state of the material (both extensive and intensive), and should result in a `State Block` with zero degrees of freedom if all the state variables are fixed.\n", + "The first step in defining a `State Block` is to create the “state variables” which will be used to define the “state” of the material at any given point. The concept of a “state variable” in IDAES is much the same as the concept in thermodynamics, with the exception that we include extensive flow information in the state definition in IDAES. In short, the “state variables” should be sufficient to fully define the state of the material (both extensive and intensive), and should result in a `State Block` with zero degrees of freedom if all the state variables are fixed.\n", "\n", "For this example, our state variables will be:\n", "\n", @@ -614,7 +614,7 @@ "2. by using an `Expression`, or,\n", "3. by using a `Reference`.\n", "\n", - "The different between the first two options is that an `Expression` does not appear in the problem passed to the solver \u2013 the `Expression` can be evaluated by the user and included in constraints in the same way as a variable, but when the problem is passed to the solver the `Expression` object is substituted for the expression it represents wherever it appears in the model. This means that there are fewer variables and constraints in the problem the solver sees, but that the constraints that do appear are more complex. There is no simple answer to which approach is best, and different applications may see better results with one form or the other. The third option, using a `Reference` is for cases where a property already exists elsewhere in the model, and we just want to create a local copy of the same object. In terms of properties, this most often occurs with fixed quantities which are declared in the Physical Parameter Block such as molecular weights. For the purposes of this example, we will demonstrate all of these approaches. \n", + "The different between the first two options is that an `Expression` does not appear in the problem passed to the solver – the `Expression` can be evaluated by the user and included in constraints in the same way as a variable, but when the problem is passed to the solver the `Expression` object is substituted for the expression it represents wherever it appears in the model. This means that there are fewer variables and constraints in the problem the solver sees, but that the constraints that do appear are more complex. There is no simple answer to which approach is best, and different applications may see better results with one form or the other. The third option, using a `Reference` is for cases where a property already exists elsewhere in the model, and we just want to create a local copy of the same object. In terms of properties, this most often occurs with fixed quantities which are declared in the Physical Parameter Block such as molecular weights. For the purposes of this example, we will demonstrate all of these approaches. \n", "\n", "You may recall from the initial problem statement that we have three properties of interest in this example:\n", "\n", @@ -658,7 +658,7 @@ "where $x_j$ is the mole fraction of component $j$. Recall that for this example we are using the following correlation for the component specific enthalpies.\n", "\n", "\\begin{equation*}\n", - "h_j \u2013 h_{j, ref}= A_j \\times (T-T_{ref}) + \\frac{B_j}{2}\\times (T^2-T_{ref}^2) + \\frac{C_j}{3}\\times (T^3-T_{ref}^3) + \\frac{D_j}{4}\\times (T^4-T_{ref}^4)\n", + "h_j – h_{j, ref}= A_j \\times (T-T_{ref}) + \\frac{B_j}{2}\\times (T^2-T_{ref}^2) + \\frac{C_j}{3}\\times (T^3-T_{ref}^3) + \\frac{D_j}{4}\\times (T^4-T_{ref}^4)\n", "\\end{equation*}\n", "\n", "For the specific enthalpy, we will create a Pyomo `Expression` rather than a `Var` and `Constraint`. In practice, this is much like creating a `Constraint`. However, rather than returning an equality between two expressions, an `Expression` requires a single numerical expression that can be used to compute the quantity of interest.\n", @@ -736,16 +736,16 @@ "\n", "### Writing the Initialization Routine\n", "\n", - "For initializing State Blocks, the first step is to get our model to a state where it has no degrees of freedom. As mentioned earlier, fixing all of the state variables should be sufficient to fully define the state of the material \u2013 i.e. no degrees of freedom. Additionally, we want to initialize our State Block at a set of conditions that are good initial guesses for the final state of the model once it is finally solved. Of course, the State Block has no way of knowing what these initial values should be, so we depend on the unit model (or the end-user) to provide us with a set of initial values to use \u2013 this is done through a `dict` which we generally call `state_args` where the keys are the names of the state variables and the values are the initial guesses.\n", + "For initializing State Blocks, the first step is to get our model to a state where it has no degrees of freedom. As mentioned earlier, fixing all of the state variables should be sufficient to fully define the state of the material – i.e. no degrees of freedom. Additionally, we want to initialize our State Block at a set of conditions that are good initial guesses for the final state of the model once it is finally solved. Of course, the State Block has no way of knowing what these initial values should be, so we depend on the unit model (or the end-user) to provide us with a set of initial values to use – this is done through a `dict` which we generally call `state_args` where the keys are the names of the state variables and the values are the initial guesses.\n", "\n", - "Before we start fixing the state variables, there is the possibility that all the state variables have already been fixed (e.g. by a the unit model during its own initialization routine). To allow us to save some time, we include a `state_vars_fixed` argument in our State Block initialization methods that lets the unit model tell us if the state variables are already fixed \u2013 if this is `True` then we know we can skip the step of checking the state variables ourselves. If `state_vars_fixed is False` however, then we need to go and fix all the state variables as part of our initialization routine. To save us the effort of having to code all of this ourselves, the IDAES toolkit contains a utility method named `fix_state_vars` (which we imported earlier), which takes the `state_args` `dict` and then iterates through all the state variables as defined by the State Block (using the `dict` we declared earlier in the `return_state_var_dict` sub-method). This method iterates through all the defined state variables and does the following:\n", + "Before we start fixing the state variables, there is the possibility that all the state variables have already been fixed (e.g. by a the unit model during its own initialization routine). To allow us to save some time, we include a `state_vars_fixed` argument in our State Block initialization methods that lets the unit model tell us if the state variables are already fixed – if this is `True` then we know we can skip the step of checking the state variables ourselves. If `state_vars_fixed is False` however, then we need to go and fix all the state variables as part of our initialization routine. To save us the effort of having to code all of this ourselves, the IDAES toolkit contains a utility method named `fix_state_vars` (which we imported earlier), which takes the `state_args` `dict` and then iterates through all the state variables as defined by the State Block (using the `dict` we declared earlier in the `return_state_var_dict` sub-method). This method iterates through all the defined state variables and does the following:\n", "\n", "1. If the variable is already fixed, it records this and does nothing. If a variable is already fixed, we assume it was fixed for a reason and that we should not change its value.\n", "2. If the variable is not fixed, this is recorded and the method then checks the `state_args` dict for an initial guess for the variable. If a value is found, the variable is fixed to this value; otherwise, the variable is fixed to its current value.\n", "\n", "Finally, the `fix_state_vars` method returns a `dict` that records which variables were fixed by the method, so that we can later reverse these changes. In the example below, we refer to this `dict` as `flags`.\n", "\n", - "At this point, all the state variables should now be fixed, but once again we have a small catch \u2013 if we fix all the state variables then we have a situation similar to the inlet of a unit where we cannot write a constraint on the sum of mole fractions and still solve the model. Thus we need to deactivate this constraint if it exists (remembering that this constraint will not exist in all State Blocks). We know that this constraint will only exist if `defined_state is False`, so we start by writing an `IF` statement to check for this and then use the Pyomo `deactivate()` method to deactivate the constraint (remembering that we will need to reactivate it later).\n", + "At this point, all the state variables should now be fixed, but once again we have a small catch – if we fix all the state variables then we have a situation similar to the inlet of a unit where we cannot write a constraint on the sum of mole fractions and still solve the model. Thus we need to deactivate this constraint if it exists (remembering that this constraint will not exist in all State Blocks). We know that this constraint will only exist if `defined_state is False`, so we start by writing an `IF` statement to check for this and then use the Pyomo `deactivate()` method to deactivate the constraint (remembering that we will need to reactivate it later).\n", "\n", "Before we move on however, it is probably a good idea to check the degrees of freedom to be sure that they are zero (as expected). There are a number of ways things could go wrong (e.g., the unit model said the state variables were fixed when not all of them were, or we missed a constraint we need to deactivate), so a quick check now might save someone a lot of pain in the future. We can use the IDAES `degrees_of_freedom` method to check the degrees of freedom of our State Block, and if this is not zero raise an `Exception` to let the user know something went wrong." ] @@ -788,7 +788,7 @@ "\n", "Before we call the solver, we first need to make sure there is actually something to solve; depending on how the State Block is written (e.g. build-on-demand properties and use of `Expressions`), it is sometimes possible that there are actually no `Constraints` to be solved in the model. If we try to send a problem like that to a solver, we will likely get back an error message which is not what we want to see. Whilst we know that our State Block will always contain at least one constraint (for mixture density), we will add a check here anyway to show how it is done. First ,we create a counter to keep track of the number of unfixed variables in the system, `free_vars`. Then we iterate over all the elements of the `blk` (the `IndexedStateBlock`) and check how many free variables are in each. We use the `number_unfixed_variables()` method from the `idaes.core.util.model_statistics` module to do this, and add the result `free_vars` for each element. If the final value of `free_vars` is not zero, then we know there is something to solve for and we can proceed to call a solver; otherwise we know that we can skip this step.\n", "\n", - "In order to solve the entire `IndexedStateBlock`, we need to do things slightly differently than normal. The standard Pyomo `SolverFactory` cannot be applied to indexed blocks, so instead we use the IDAES `solve_indexed_block` method (imported from `idaes.core.initialization`) which puts a wrapper around the indexed block so that we can use Pyomo\u2019s solver interface. In order to use this method, we need to provide a Pyomo `SolverFactory` object (called `solver` here, which also includes any attached solver options) along with the `blk` we wish to solve and where to send the solver results (the `tee` argument). Additionally, we want the user to have the ability to control the output from the solver through the IDAES logger interface, which we do by wrapping the solver call with the following line of code:\n", + "In order to solve the entire `IndexedStateBlock`, we need to do things slightly differently than normal. The standard Pyomo `SolverFactory` cannot be applied to indexed blocks, so instead we use the IDAES `solve_indexed_block` method (imported from `idaes.core.initialization`) which puts a wrapper around the indexed block so that we can use Pyomo’s solver interface. In order to use this method, we need to provide a Pyomo `SolverFactory` object (called `solver` here, which also includes any attached solver options) along with the `blk` we wish to solve and where to send the solver results (the `tee` argument). Additionally, we want the user to have the ability to control the output from the solver through the IDAES logger interface, which we do by wrapping the solver call with the following line of code:\n", "\n", "```\n", "with idaeslog.solver_log(solve_log, idaeslog.DEBUG) as slc:\n", @@ -796,7 +796,7 @@ "\n", "where `idaeslog` is an instance of the IDAES logger. Note that we send the solver output to this logger by setting `tee=slc`. In this way, all the output from the solver is passed into the logger allowing users to easily control the output level without needing to send additional arguments to the initialization methods.\n", "\n", - "If all goes well, the solver will successfully initialize our model and we can move on. However, sometimes the solver will fail catastrophically, in which case we need to make sure that our initialization routine can attempt to recover. In order to do this, we wrap the solver call within a Python `try/except` statement. This way, if the solver fails badly and returns an `Exception`, we can capture this and decide how to process \u2013 otherwise the execution of our model would terminate with the exception from the solver. In the case we encounter an `Exception` here, we will record `results=None` and try to continue with initializing our model in the hope that we can recover.\n", + "If all goes well, the solver will successfully initialize our model and we can move on. However, sometimes the solver will fail catastrophically, in which case we need to make sure that our initialization routine can attempt to recover. In order to do this, we wrap the solver call within a Python `try/except` statement. This way, if the solver fails badly and returns an `Exception`, we can capture this and decide how to process – otherwise the execution of our model would terminate with the exception from the solver. In the case we encounter an `Exception` here, we will record `results=None` and try to continue with initializing our model in the hope that we can recover.\n", "\n", "Finally, it is useful to provide the user with some feedback on how the initialization is proceeding. In the last lines below, we send a message to the IDAES logger with a message saying that the initialization step has been completed and append the final solver status." ] @@ -900,7 +900,7 @@ "As the name suggests, the `initialize` method is used to run the initialization routine for the State Block, and this is where we will use the `prepare_state`, `initialize_state` and `restore_state` methods we wrote previously. The `initialize` method requires the following arguments to be declared:\n", "\n", "* `blk`: this will be a pointer to an instance of the State Block to be initialized.\n", - "* `state_args`: this is used to pass the \u2018dict\u2019 of initial guesses to the initialization routine. This should default to `None` if not provided. The `fix_state_vars` method will interpret a value of `None` as no guesses provided as use the current values instead.\n", + "* `state_args`: this is used to pass the ‘dict’ of initial guesses to the initialization routine. This should default to `None` if not provided. The `fix_state_vars` method will interpret a value of `None` as no guesses provided as use the current values instead.\n", "* `solver`: this argument is used to allow tell the State Block to use a specific solver during initialization, and should be a string recognized by the Pyomo `SolverFactory`. We generally set this to `None` in order to signify that IDAES Should use the default solver (which is IPOPT).\n", "* `optarg`: this argument is used to set any solver options the user desires. Again this is generally set to `None` to indicate that the default solver settings should be used.\n", "* `state_vars_fixed`: argument to allow the unit model to inform the State Block that the state variables are already fixed. This should default to `False`.\n", @@ -959,13 +959,13 @@ "source": [ "### The StateBlockData class\n", "\n", - "Finally, we can build the `StateBlockData` class, which we will call `HDAStateBlockData`. First, we use the `declare_process_block_class` decorator but this time we provide two arguments. The first argument is the name of the class that will be automatically constructed for us (`HDAStateBlock`) whilst the second argument is a reference to the class we wish to use as the base when building the `IndexedHDAStateBlock` class \u2013 i.e. the `_HDAStateBlock` class we just declared. Then, we declare our new `HDAStateBlockData` class and inherit from the IDAES `StateBlockData` base class.\n", + "Finally, we can build the `StateBlockData` class, which we will call `HDAStateBlockData`. First, we use the `declare_process_block_class` decorator but this time we provide two arguments. The first argument is the name of the class that will be automatically constructed for us (`HDAStateBlock`) whilst the second argument is a reference to the class we wish to use as the base when building the `IndexedHDAStateBlock` class – i.e. the `_HDAStateBlock` class we just declared. Then, we declare our new `HDAStateBlockData` class and inherit from the IDAES `StateBlockData` base class.\n", "\n", "As usual, the first thing we need to define in our new class is a `build` method, where we will provide the instructions for constructing our property model, and once again the first thing we should do is call `super().build()` to construct all the underlying components defined by the parent class. After this, we can call the methods we wrote earlier to construct the state variables and the add the calculations for the properties of interest.\n", "\n", - "However, if you recall from when we defined the properties metadata at the beginning of the example, we decided that the specific molar enthalpy of the mixture would be a \u201cbuild-on-demand\u201d property (i.e., we provided a specific method in the properties metadata rather than `None`). Thus, we do not want to call the method to construct the specific molar enthalpy as part of the `build` method, meaning that we only call the `add_state_variables`, `add_mole_fraction_constraint` and `add_molecular_weight_and_density` as in the `build` method.\n", + "However, if you recall from when we defined the properties metadata at the beginning of the example, we decided that the specific molar enthalpy of the mixture would be a “build-on-demand” property (i.e., we provided a specific method in the properties metadata rather than `None`). Thus, we do not want to call the method to construct the specific molar enthalpy as part of the `build` method, meaning that we only call the `add_state_variables`, `add_mole_fraction_constraint` and `add_molecular_weight_and_density` as in the `build` method.\n", "\n", - "To add the specific molar enthalpy calculation as a \u201cbuild-on-demand\u201d property, we instead declare a separate method with the name we provided in the properties metadata. Whenever the specific molar enthalpy is required by a unit model it will check to see if the property already exists, and if not it will look up the properties metadata and call the method listed there; i.e. `_enth_mol` in this case. Thus, we declare another method on our `HDAStateBlockData` class named `enth_mol` which takes only the class instance as an argument (`self`), and then call the `add_enth_mol` method we created earlier to construct the required `Expression`.\n", + "To add the specific molar enthalpy calculation as a “build-on-demand” property, we instead declare a separate method with the name we provided in the properties metadata. Whenever the specific molar enthalpy is required by a unit model it will check to see if the property already exists, and if not it will look up the properties metadata and call the method listed there; i.e. `_enth_mol` in this case. Thus, we declare another method on our `HDAStateBlockData` class named `enth_mol` which takes only the class instance as an argument (`self`), and then call the `add_enth_mol` method we created earlier to construct the required `Expression`.\n", "\n", "That is all we need to do in order to construct the variables and constraints we need for the property calculations. However, there are a number of other things we need to define in our State Block Data class. In order to provide much of the flexibility present in the IDAES modeling framework, we defer making decisions on much of the form of the overall model for as long as possible. However, these decisions need to be made at some point, and the State Block Data is where this finally occurs.\n", "\n", @@ -983,7 +983,7 @@ "* `default_material_balance_type` should return an instance of the IDAES `MaterialBalanceType` `Enum` (imported from `idaes.core`).\n", "* `default_energy_balance_type` should return an instance of the IDAES `EnergyBalanceType` `Enum` (imported from `idaes.core`).\n", "\n", - "Finally, we need to specify the basis of the material flow terms (mass, mole or other). This is used to automatically convert between different bases as required (e.g. a user can define a custom mass transfer term on a molar basis whilst using a mass basis for the actual material balance). Note that automatic conversion only works for mass and molar basis; the \u201cother\u201d basis is used to indicate forms which cannot be easily converted (i.e., the modeler needs to handle this manually). To define the material flow term basis we define a final method named `get_material_flow_basis` which returns an instance of the IDAES `MaterialFlowBasis` `Enum` (again imported from `idaes.core`)." + "Finally, we need to specify the basis of the material flow terms (mass, mole or other). This is used to automatically convert between different bases as required (e.g. a user can define a custom mass transfer term on a molar basis whilst using a mass basis for the actual material balance). Note that automatic conversion only works for mass and molar basis; the “other” basis is used to indicate forms which cannot be easily converted (i.e., the modeler needs to handle this manually). To define the material flow term basis we define a final method named `get_material_flow_basis` which returns an instance of the IDAES `MaterialFlowBasis` `Enum` (again imported from `idaes.core`)." ] }, { @@ -1055,9 +1055,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Next, we create `ConcreteModel` and a steady-state `FlowsheetBlock` to contain our example, ot which we attach an instance of our new `HDAPhysicalParameterBlock`.\n", + "Next, we create `ConcreteModel` and a steady-state `FlowsheetBlock` to contain our example, to which we attach an instance of our new `HDAPhysicalParameterBlock`.\n", "\n", - "We can then create an instance of the `HDAStateBlock` directly from the parameter block using the `build_state_block` method. This uses the reference to the State Block class that we attached ot the Physical Parameter Block earlier in the example to automatically create an instance of the correct class. Note that we index the State Block by the time domain, so that it looks like a typical state block in a flowsheet, and we set `defined_state = True` so that we can set values for all the component mole fractions later." + "We can then create an instance of the `HDAStateBlock` directly from the parameter block using the `build_state_block` method. This uses the reference to the State Block class that we attached to the Physical Parameter Block earlier in the example to automatically create an instance of the correct class. Note that we index the State Block by the time domain, so that it looks like a typical state block in a flowsheet, and we set `defined_state = True` so that we can set values for all the component mole fractions later." ] }, { @@ -1079,7 +1079,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We now have an instance of our new State Block in our flowsheet, so let\u2019s display it and see what it contains." + "We now have an instance of our new State Block in our flowsheet, so let’s display it and see what it contains." ] }, { @@ -1095,7 +1095,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We can see that our State Block contains a single point in time, which in turn contains the five variables. These are our four state variables (molar flow rate, component mole fraction, temperature and pressure) as well as the mixture density. We also have a single constraint, which is the ideal gas equation used to calculate density. Note that we don\u2019t see the component molecular weights as they are `Params` (`References` take on the appearance of the component being referenced) or the molar enthalpy as it is an `Expression`, not a variable (plus it hasn\u2019t been constructed yet as we haven\u2019t asked for it).\n", + "We can see that our State Block contains a single point in time, which in turn contains the five variables. These are our four state variables (molar flow rate, component mole fraction, temperature and pressure) as well as the mixture density. We also have a single constraint, which is the ideal gas equation used to calculate density. Note that we don’t see the component molecular weights as they are `Params` (`References` take on the appearance of the component being referenced) or the molar enthalpy as it is an `Expression`, not a variable (plus it hasn’t been constructed yet as we haven’t asked for it).\n", "\n", "Next, let us check the degrees of freedom in our State Block." ] @@ -1131,7 +1131,7 @@ "source": [ "This is unexpected: the `degrees_of_freedom` method is saying there are only 2 degrees of freedom in our State Block, but there are 8 state variables.\n", "\n", - "However, if we think about the constraints we have written, we are only actually using 2 of the state variables in any constraint (temperature and pressure appear in the ideal gas equation). The molar flowrate and component mole fractions are not actually used anywhere in our model, so they have been excluded from the degrees of freedom calculation. In Pyomo terminology, these variables are \u201cStale\u201d, and they will not be sent to the solver when it is called. Thus, the two degrees of freedom is in fact correct.\n", + "However, if we think about the constraints we have written, we are only actually using 2 of the state variables in any constraint (temperature and pressure appear in the ideal gas equation). The molar flowrate and component mole fractions are not actually used anywhere in our model, so they have been excluded from the degrees of freedom calculation. In Pyomo terminology, these variables are “Stale”, and they will not be sent to the solver when it is called. Thus, the two degrees of freedom is in fact correct.\n", "\n", "Note that this is only the case because our property package is so simple. Also, the specific enthalpy calculation depends on the component mole fractions, so whilst we could solve the State Block by only specifying temperature and pressure, the value of the specific molar enthalpy would be meaningless.\n", "\n", @@ -1158,7 +1158,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now that we have fixed the values for all the state variables, we would expect that the degrees of freedom should be zero (even though we fixed all 8 variables, only temperature and pressure actually contribute to the degrees of freedom). Let\u2019s check this to be sure." + "Now that we have fixed the values for all the state variables, we would expect that the degrees of freedom should be zero (even though we fixed all 8 variables, only temperature and pressure actually contribute to the degrees of freedom). Let’s check this to be sure." ] }, { @@ -1406,4 +1406,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages_usr.ipynb b/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages_usr.ipynb index ef902023..9196bb04 100644 --- a/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages_usr.ipynb +++ b/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages_usr.ipynb @@ -34,7 +34,7 @@ "Maintainer: Andrew Lee \n", "Updated: 2023-06-01 \n", "\n", - "Calculation of thermophysical, transport and reaction properties form a key part of any process model, and it is important that these calculations are both accurate and tractable in order for the overall problem to be solved correctly. One of the features of the IDAES Integrated Platform is the ability for modelers to create their own property \u201cpackages\u201d to calculate these properties, allowing them to customize the level of complexity and rigor to suit each application. This tutorial will introduce you to the basics of creating property packages for calculating thermophysical and transport properties within the IDAES Core Modeling Framework.\n", + "Calculation of thermophysical, transport and reaction properties form a key part of any process model, and it is important that these calculations are both accurate and tractable in order for the overall problem to be solved correctly. One of the features of the IDAES Integrated Platform is the ability for modelers to create their own property “packages” to calculate these properties, allowing them to customize the level of complexity and rigor to suit each application. This tutorial will introduce you to the basics of creating property packages for calculating thermophysical and transport properties within the IDAES Core Modeling Framework.\n", "\n", "## What is a Property?\n", "\n", @@ -50,7 +50,7 @@ "* transport properties such as viscosity and thermal conductivity\n", "* rates of reaction and chemical equilibria\n", "\n", - "The definition and calculation of all of these is defined via \u201cproperty packages\u201d, which contain all the variables and constraints associated with calculating these properties.\n", + "The definition and calculation of all of these is defined via “property packages”, which contain all the variables and constraints associated with calculating these properties.\n", "\n", "
    \n", "Note:\n", @@ -67,19 +67,19 @@ "\n", "## What Properties do I Need?\n", "\n", - "An important aspect of the IDAES Core Modeling Framework is that a modeler only needs to provide calculations for those properties that they will use within their process. Put another way, modelers do not need to include calculations for a property that they are not going to use in their model \u2013 this allows modelers to avoid introducing unnecessary complexity into their models to calculate a property they do not actually need. When combined with flexibility elsewhere in the modeling framework to control which equations are written in the unit models, this can even allow users to avoid calculating properties that would normally be considered mandatory \u2013 for example, a property package for a conceptual design flowsheet which does not include energy or momentum balances would not need to define specific enthalpy or even temperature and pressure as these will not be required by the unit models.\n", + "An important aspect of the IDAES Core Modeling Framework is that a modeler only needs to provide calculations for those properties that they will use within their process. Put another way, modelers do not need to include calculations for a property that they are not going to use in their model – this allows modelers to avoid introducing unnecessary complexity into their models to calculate a property they do not actually need. When combined with flexibility elsewhere in the modeling framework to control which equations are written in the unit models, this can even allow users to avoid calculating properties that would normally be considered mandatory – for example, a property package for a conceptual design flowsheet which does not include energy or momentum balances would not need to define specific enthalpy or even temperature and pressure as these will not be required by the unit models.\n", "\n", "This then raises the question of how do you know what properties you will need, especially if you are using models from a library you did not write yourself. To answer this, you should refer to the model documentation, and you can also use the [IDAES Properties Interrogator tool](https://idaes-pse.readthedocs.io/en/stable/reference_guides/model_libraries/generic/property_models/interrogator.html) to analyze your flowsheet and determine what properties are required.\n", "\n", "## Thermophysical Properties and Reaction Properties\n", "\n", - "Within the IDAES Core Modeling Framework, properties are divided into two classifications; thermophysical properties and reaction properties. Reaction properties are those properties related to chemical reactions (both equilibrium and rate-based, but not phase equilibrium) that occur within the system , whilst thermophysical properties include those properties related to thermodynamic relationships (including phase equilibrium) and transport properties. The reason for this separation is that thermophysical properties are required by all unit operations in a process (and need to be consistent with each other), whilst reaction properties are generally only required in specific unit operations identified as \u201creactors\u201d (and each reactor may have a different set of chemical reactions occurring in it). Thus, reaction properties are separated from the thermophysical property calculations to allow for modular implementation in only specific reactor units. This tutorial only deals with thermophysical properties, and reaction properties will be dealt with in a later tutorial.\n", + "Within the IDAES Core Modeling Framework, properties are divided into two classifications; thermophysical properties and reaction properties. Reaction properties are those properties related to chemical reactions (both equilibrium and rate-based, but not phase equilibrium) that occur within the system , whilst thermophysical properties include those properties related to thermodynamic relationships (including phase equilibrium) and transport properties. The reason for this separation is that thermophysical properties are required by all unit operations in a process (and need to be consistent with each other), whilst reaction properties are generally only required in specific unit operations identified as “reactors” (and each reactor may have a different set of chemical reactions occurring in it). Thus, reaction properties are separated from the thermophysical property calculations to allow for modular implementation in only specific reactor units. This tutorial only deals with thermophysical properties, and reaction properties will be dealt with in a later tutorial.\n", "\n", - "## What is a Property \u201cPackage\u201d?\n", + "## What is a Property “Package”?\n", "\n", - "Generally, properties (both thermophysical and reaction) are calculated using correlations that depend on some set of parameters (be they physical constants or empirical parameters). These parameters are constant across all instances of a property calculation in a flowsheet (i.e. each StateBlock uses the same parameters), it makes sense to store these parameters in a single, central location that all StateBlocks can refer to as necessary. Thus, the IDAES modeling framework has \u201cParameter Blocks\u201d which are attached to the flowsheet to contain all the global parameters associated with a given set of property calculations.\n", + "Generally, properties (both thermophysical and reaction) are calculated using correlations that depend on some set of parameters (be they physical constants or empirical parameters). These parameters are constant across all instances of a property calculation in a flowsheet (i.e. each StateBlock uses the same parameters), it makes sense to store these parameters in a single, central location that all StateBlocks can refer to as necessary. Thus, the IDAES modeling framework has “Parameter Blocks” which are attached to the flowsheet to contain all the global parameters associated with a given set of property calculations.\n", "\n", - "Thus, the calculations of thermophysical properties within the IDAES modeling framework is achieved using a \u201cpackage\u201d of three related modeling components (or classes); the Physical Parameter Block, the State Block and the State Block Data classes. Each of these will be discussed further in the next section as we develop an example property package.\n", + "Thus, the calculations of thermophysical properties within the IDAES modeling framework is achieved using a “package” of three related modeling components (or classes); the Physical Parameter Block, the State Block and the State Block Data classes. Each of these will be discussed further in the next section as we develop an example property package.\n", "\n", "At a deeper level, the calculation for many thermophysical properties is a self-contained correlation that is more or less independent of the other properties around it. Thus, each set of thermophysical property calculations is a package of user-chosen sub-models for each property of interest to the user.\n", "\n", @@ -232,7 +232,7 @@ "\n", "The first step is to define the units of measurement for the property package, which will in turn be inherited by any unit model using this property package. Units of measurement for the property package are defined by setting units for the 7 base measurement quantities; time, length, mass, amount, temperature, current and luminous intensity (as current and luminous intensity are generally of lesser importance in process systems engineering, specifying units for these base quantities is optional). Within IDAES, units are specified using Pyomo's units of measurement features, which can be imported from `pyomo.environ`. For this example, the units of measurement features were given the name `pyunits` for clarity.\n", "\n", - "The units of measurement for all other quantities in the model can then be derived from these base quantities; for example the units of energy are `mass*length^2/time^2`. The framework expects all quantities in the property package to use these base units \u2013 the Pyomo units of measurement conversion tools can be used if conversion between different sets of units are required.\n", + "The units of measurement for all other quantities in the model can then be derived from these base quantities; for example the units of energy are `mass*length^2/time^2`. The framework expects all quantities in the property package to use these base units – the Pyomo units of measurement conversion tools can be used if conversion between different sets of units are required.\n", "\n", "In order to set the base units, we need to create a dictionary which has each of the base quantities as a key, and provide a Pyomo recognized unit as the value as shown below." ] @@ -258,7 +258,7 @@ "source": [ "## Step 2: Define Supported Properties\n", "\n", - "The next step is to provide some metadata defining what properties are supported by the property package (including state variables). The first purpose of this metadata is to record a summary of what properties are supported to help user identify whether a given property package is suitable for their needs. The second purpose of the metadata is to allow us to simplify our property calculations by only construction those properties that are actually required by a given unit operation \u2013 a property package needs to support all the properties required by a process flowsheet, but not all of those properties are required in every unit operation. Thus, the IDAES modeling framework supports a \u201cbuild-on-demand\u201d approach for properties, such that only those properties that are required are constructed at any given point.\n", + "The next step is to provide some metadata defining what properties are supported by the property package (including state variables). The first purpose of this metadata is to record a summary of what properties are supported to help user identify whether a given property package is suitable for their needs. The second purpose of the metadata is to allow us to simplify our property calculations by only construction those properties that are actually required by a given unit operation – a property package needs to support all the properties required by a process flowsheet, but not all of those properties are required in every unit operation. Thus, the IDAES modeling framework supports a “build-on-demand” approach for properties, such that only those properties that are required are constructed at any given point.\n", "\n", "This is achieved through the use of the properties metadata, where for each property supported by the property package the user needs to define a `method` argument. This argument can take one of two forms:\n", "\n", @@ -291,7 +291,7 @@ "source": [ "## Step 3: Define Component and Phase Lists\n", "\n", - "The next step in writing the Physical Parameter Block class is to define the phases and components present in the mixture. These are defined using `Phase` and `Component` objects which are imported from `idaes.core`. As `Phase` and `Component` objects are added to the proeprty package, the `phase_list` and `component_list` `Sets` required by the modeling framework are automatically populated. Even for systems where there is only a single phase or component, it is necessary to define phase and component objects as these are used to construct the necessary indexing sets used when building unit models.\n", + "The next step in writing the Physical Parameter Block class is to define the phases and components present in the mixture. These are defined using `Phase` and `Component` objects which are imported from `idaes.core`. As `Phase` and `Component` objects are added to the property package, the `phase_list` and `component_list` `Sets` required by the modeling framework are automatically populated. Even for systems where there is only a single phase or component, it is necessary to define phase and component objects as these are used to construct the necessary indexing sets used when building unit models.\n", "\n", "For this example, we have 5 components of interest; benzene, toluene, hydrogen, methane and diphenyl. We define these in the property package by adding a generic `Component` object to the Physical Parameter Block; for example `self.benzene = Component()`. For more complex systems, IDAES supports a number of different component types and components can be assigned a number of arguments at constructions but these will not be discussed here.\n", "\n", @@ -327,9 +327,9 @@ "
    \n", "Param or Var:\n", "\n", - "The most obvious way to declare a \"parameter\" in a model would appear to be to use the Pyomo `Param` object. However, modelers should be aware the `Param` objects are never seen by the solver (they are converted to fixed floating point numbers by the solver writer). This means that it is not possible to use a solver to find the value for a parameter \u2013 i.e., it is not possible to use `Param` objects in a parameter estimation problem.\n", + "The most obvious way to declare a \"parameter\" in a model would appear to be to use the Pyomo `Param` object. However, modelers should be aware the `Param` objects are never seen by the solver (they are converted to fixed floating point numbers by the solver writer). This means that it is not possible to use a solver to find the value for a parameter – i.e., it is not possible to use `Param` objects in a parameter estimation problem.\n", "\n", - "Instead, modelers should use fixed `Var` objects for any parameter that may need to be estimated at some point. Within IDAES, this means that most \u201cparameters\u201d are in fact declared as `Var` objects, with `Param` objects used only for parameters with well-known values (for example critical pressures and temperatures or molecular weights).\n", + "Instead, modelers should use fixed `Var` objects for any parameter that may need to be estimated at some point. Within IDAES, this means that most “parameters” are in fact declared as `Var` objects, with `Param` objects used only for parameters with well-known values (for example critical pressures and temperatures or molecular weights).\n", "
    \n", "\n", "For this example, the first parameters we need to define are the reference state for our property calculations along with the molecular weights of each of the components of interest. These are fixed parameters that should not be estimated by parameter estimation, so we create Pyomo `Param` objects to represent each of these, as shown below. When we declare a `Param`, we also need to define a default value and the units of measurement for each parameter. Note that the units of measurement for these parameters does not necessarily need to match those defined in the properties metadata, but if they are not consistent then a unit conversion will be required at some point when calculating property values.\n", @@ -371,15 +371,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "For this example, we also need to define the parameter associated with calculating the specific enthalpy of each component. As mentioned before, we will use the correlation proposed in \u201cThe Properties of Gases and Liquids, 4th Edition\u201d by Reid, Prausnitz and Polling (1987), which has the form:\n", + "For this example, we also need to define the parameter associated with calculating the specific enthalpy of each component. As mentioned before, we will use the correlation proposed in “The Properties of Gases and Liquids, 4th Edition” by Reid, Prausnitz and Polling (1987), which has the form:\n", "\n", "\\begin{equation*}\n", - "h_j \u2013 h_{j, ref}= A_j \\times (T-T_{ref}) + \\frac{B_j}{2}\\times (T^2-T_{ref}^2) + \\frac{C_j}{3}\\times (T^3-T_{ref}^3) + \\frac{D_j}{4}\\times (T^4-T_{ref}^4)\n", + "h_j – h_{j, ref}= A_j \\times (T-T_{ref}) + \\frac{B_j}{2}\\times (T^2-T_{ref}^2) + \\frac{C_j}{3}\\times (T^3-T_{ref}^3) + \\frac{D_j}{4}\\times (T^4-T_{ref}^4)\n", "\\end{equation*}\n", "\n", - "where $h_{j, ref}$ is the standard heat of formation of component $j$ in the vapor phase, and $A_j$, $B_j$, $C_j$, and $D_j$ are component-specific parameters in the correlation. At first glance, one might ask if we could declare a single object indexed by the list `[\u201cA\u201d, \u201cB\u201d, \u201cC\u201d, \u201cD\u201d]` and component to represent all the parameters as a single object; however it must be noted that the parameters $A$, $B$, $C$, and $D$ all have different units. Thus, we need to declare separate objects for each of $A$, $B$, $C$, and $D$ (along with $h_{ref}$) which are indexed by component so that we can assign the correct units to each.\n", + "where $h_{j, ref}$ is the standard heat of formation of component $j$ in the vapor phase, and $A_j$, $B_j$, $C_j$, and $D_j$ are component-specific parameters in the correlation. At first glance, one might ask if we could declare a single object indexed by the list `[“A”, “B”, “C”, “D”]` and component to represent all the parameters as a single object; however it must be noted that the parameters $A$, $B$, $C$, and $D$ all have different units. Thus, we need to declare separate objects for each of $A$, $B$, $C$, and $D$ (along with $h_{ref}$) which are indexed by component so that we can assign the correct units to each.\n", "\n", - "However, these parameters are mostly empirical and are values that we may wish to estimate at some point, thus we will declare these as Pyomo `Var` objects rather than `Param` objects, which also means that we must `fix` the value of these parameters when we construct the property package. This is shown in the code below \u2013 note that each parameters (`Var` object is fixed immediately after it is declared)." + "However, these parameters are mostly empirical and are values that we may wish to estimate at some point, thus we will declare these as Pyomo `Var` objects rather than `Param` objects, which also means that we must `fix` the value of these parameters when we construct the property package. This is shown in the code below – note that each parameters (`Var` object is fixed immediately after it is declared)." ] }, { @@ -478,9 +478,9 @@ "\n", "First, we need to declare our new class and give it a unique name. In this example, we will call our new class `HDAParameterBlock`. The first two lines of the example below show how we declare our new class using the `declare_process_block_decorator` and inheriting from the `PhysicalParameterBlock` base class from the IDAES Core model libraries. Inheriting from the `PhysicalParameterBlock` brings us access to all the necessary features required by the IDAES modeling framework, whilst the `declare_process_block_class` decorator performs some boilerplate operations to replicate the expected object structure of Pyomo. Further details on these components can be found in the IDAES documentation.\n", "\n", - "Next, we need to set up any configuration arguments we need for the property package. This is done using Pyomo \u201cConfig Blocks\u201d which provide a convenient way of declaring, organizing and documenting configuration arguments. To begin with, we can inherit from the `CONFIG` block declared in the `PhysicalParameterBlock` base class, which provides all the arguments that the IDAES modeling framework expects to be present. Modelers can then add additional configuration arguments to provide users with options when constructing their property packages, however we will not cover that in this tutorial.\n", + "Next, we need to set up any configuration arguments we need for the property package. This is done using Pyomo “Config Blocks” which provide a convenient way of declaring, organizing and documenting configuration arguments. To begin with, we can inherit from the `CONFIG` block declared in the `PhysicalParameterBlock` base class, which provides all the arguments that the IDAES modeling framework expects to be present. Modelers can then add additional configuration arguments to provide users with options when constructing their property packages, however we will not cover that in this tutorial.\n", "\n", - "The most significant part of any IDAES model class is the `build` method, which contains the instructions on how to construct an instance of the desired model and all IDAES models are expected to have a `build` method. The first step in any `build` method is to call `super().build()`, which will trigger the `build` method of the base class that the current class inherits from \u2013 this is important since this is how we automate construction of any underlying components required by the modeling framework and ensure that everything integrates smoothly. Next, a `PhysicalParameterBlock` needs to contain a pointer to the related `StateBlock` (which we will look at next) \u2013 this is used to allow us to build instances of the `StateBlock` by only knowing the `PhysicalParameterBlock` we wish to use. To do this, we create an attribute named `_state_block_class` attached to our class with a pointer to the `StateBlock` class; in this case `self._state_block_class = HDAStateBlock`, where `HDAStateBlock` is the name of the yet to be declared `StateBlock`. Finally, the `build` method needs to construct the actual parameters required for the property package, which we do here by calling the sub-methods written previously.\n", + "The most significant part of any IDAES model class is the `build` method, which contains the instructions on how to construct an instance of the desired model and all IDAES models are expected to have a `build` method. The first step in any `build` method is to call `super().build()`, which will trigger the `build` method of the base class that the current class inherits from – this is important since this is how we automate construction of any underlying components required by the modeling framework and ensure that everything integrates smoothly. Next, a `PhysicalParameterBlock` needs to contain a pointer to the related `StateBlock` (which we will look at next) – this is used to allow us to build instances of the `StateBlock` by only knowing the `PhysicalParameterBlock` we wish to use. To do this, we create an attribute named `_state_block_class` attached to our class with a pointer to the `StateBlock` class; in this case `self._state_block_class = HDAStateBlock`, where `HDAStateBlock` is the name of the yet to be declared `StateBlock`. Finally, the `build` method needs to construct the actual parameters required for the property package, which we do here by calling the sub-methods written previously.\n", "\n", "The final step in creating the `PhysicalParameterBlock` class is to declare a `classmethod` named `define_metadata` which takes two arguments; a class (`cls`) and an instance of that class (`obj`). This method in turn needs to call two pre-defined methods (inherited from the underlying base classes):\n", "\n", @@ -526,13 +526,13 @@ "\n", "After the `Physical Parameter Block` class has been created, the next step is to write the code necessary to create the State Blocks that will be used through out the flowsheet. Unlike other models however, creating a `State Block` actually required us to write two `classes`. In short, indexed Pyomo object components (e.g. `Vars` and `Blocks`) actually consist of two objects: an `IndexedComponent` object which serves as a container for multiple `ComponentData` objects which represent the component at each point in the indexing set. For example, a `Var` indexed by the `Set` `[1, 2, 3, 4]` actually consists of a single `IndexedVar` object which contains 4 `VarData` objects. Normally this behavior is hidden behind the `declare_process_block_data` decorator which handles the details of this structure (as a side note, unindexed components similarly involve two classes but this is hidden by the use of multiple inheritance.)\n", "\n", - "Normally, when we write models in IDAES, we are concerned only with the `ComponentData` object \u2013 i.e., the instructions on how to build an instance of the model at each indexed point (hence the naming convention used when declaring classes). However, State Blocks are slightly different in that we always expect State Blocks to be indexed (they will always be indexed by time, at a minimum). Due to this, we often want to perform actions on all the elements of the indexed `State Block` at once (rather than element by element), such as during initialization. Thus, we have a need to write methods that are attached to the `IndexedStateBlock` in addition to the normal methods for the `StateBlockData` object. Fortunately, the `declare_process_block_data` decorator facilitates this for us, but it does mean we need to declare two classes when creating State Blocks.\n", + "Normally, when we write models in IDAES, we are concerned only with the `ComponentData` object – i.e., the instructions on how to build an instance of the model at each indexed point (hence the naming convention used when declaring classes). However, State Blocks are slightly different in that we always expect State Blocks to be indexed (they will always be indexed by time, at a minimum). Due to this, we often want to perform actions on all the elements of the indexed `State Block` at once (rather than element by element), such as during initialization. Thus, we have a need to write methods that are attached to the `IndexedStateBlock` in addition to the normal methods for the `StateBlockData` object. Fortunately, the `declare_process_block_data` decorator facilitates this for us, but it does mean we need to declare two classes when creating State Blocks.\n", "\n", "For this example, we will begin by describing the content of the `StateBlockData` objects, as this is where we create the variables and constraints that describe how to calculate the thermophysical properties of the material. After that, we will discuss how to create the class that contains methods to be applied to the `IndexedStateBlock` as a whole.\n", "\n", "## Step 5: Declare State Variables\n", "\n", - "The first step in defining a `State Block` is to create the \u201cstate variables\u201d which will be used to define the \u201cstate\u201d of the material at any given point. The concept of a \u201cstate variable\u201d in IDAES is much the same as the concept in thermodynamics, with the exception that we include extensive flow information in the state definition in IDAES. In short, the \u201cstate variables\u201d should be sufficient to fully define the state of the material (both extensive and intensive), and should result in a `State Block` with zero degrees of freedom if all the state variables are fixed.\n", + "The first step in defining a `State Block` is to create the “state variables” which will be used to define the “state” of the material at any given point. The concept of a “state variable” in IDAES is much the same as the concept in thermodynamics, with the exception that we include extensive flow information in the state definition in IDAES. In short, the “state variables” should be sufficient to fully define the state of the material (both extensive and intensive), and should result in a `State Block` with zero degrees of freedom if all the state variables are fixed.\n", "\n", "For this example, our state variables will be:\n", "\n", @@ -614,7 +614,7 @@ "2. by using an `Expression`, or,\n", "3. by using a `Reference`.\n", "\n", - "The different between the first two options is that an `Expression` does not appear in the problem passed to the solver \u2013 the `Expression` can be evaluated by the user and included in constraints in the same way as a variable, but when the problem is passed to the solver the `Expression` object is substituted for the expression it represents wherever it appears in the model. This means that there are fewer variables and constraints in the problem the solver sees, but that the constraints that do appear are more complex. There is no simple answer to which approach is best, and different applications may see better results with one form or the other. The third option, using a `Reference` is for cases where a property already exists elsewhere in the model, and we just want to create a local copy of the same object. In terms of properties, this most often occurs with fixed quantities which are declared in the Physical Parameter Block such as molecular weights. For the purposes of this example, we will demonstrate all of these approaches. \n", + "The different between the first two options is that an `Expression` does not appear in the problem passed to the solver – the `Expression` can be evaluated by the user and included in constraints in the same way as a variable, but when the problem is passed to the solver the `Expression` object is substituted for the expression it represents wherever it appears in the model. This means that there are fewer variables and constraints in the problem the solver sees, but that the constraints that do appear are more complex. There is no simple answer to which approach is best, and different applications may see better results with one form or the other. The third option, using a `Reference` is for cases where a property already exists elsewhere in the model, and we just want to create a local copy of the same object. In terms of properties, this most often occurs with fixed quantities which are declared in the Physical Parameter Block such as molecular weights. For the purposes of this example, we will demonstrate all of these approaches. \n", "\n", "You may recall from the initial problem statement that we have three properties of interest in this example:\n", "\n", @@ -658,7 +658,7 @@ "where $x_j$ is the mole fraction of component $j$. Recall that for this example we are using the following correlation for the component specific enthalpies.\n", "\n", "\\begin{equation*}\n", - "h_j \u2013 h_{j, ref}= A_j \\times (T-T_{ref}) + \\frac{B_j}{2}\\times (T^2-T_{ref}^2) + \\frac{C_j}{3}\\times (T^3-T_{ref}^3) + \\frac{D_j}{4}\\times (T^4-T_{ref}^4)\n", + "h_j – h_{j, ref}= A_j \\times (T-T_{ref}) + \\frac{B_j}{2}\\times (T^2-T_{ref}^2) + \\frac{C_j}{3}\\times (T^3-T_{ref}^3) + \\frac{D_j}{4}\\times (T^4-T_{ref}^4)\n", "\\end{equation*}\n", "\n", "For the specific enthalpy, we will create a Pyomo `Expression` rather than a `Var` and `Constraint`. In practice, this is much like creating a `Constraint`. However, rather than returning an equality between two expressions, an `Expression` requires a single numerical expression that can be used to compute the quantity of interest.\n", @@ -736,16 +736,16 @@ "\n", "### Writing the Initialization Routine\n", "\n", - "For initializing State Blocks, the first step is to get our model to a state where it has no degrees of freedom. As mentioned earlier, fixing all of the state variables should be sufficient to fully define the state of the material \u2013 i.e. no degrees of freedom. Additionally, we want to initialize our State Block at a set of conditions that are good initial guesses for the final state of the model once it is finally solved. Of course, the State Block has no way of knowing what these initial values should be, so we depend on the unit model (or the end-user) to provide us with a set of initial values to use \u2013 this is done through a `dict` which we generally call `state_args` where the keys are the names of the state variables and the values are the initial guesses.\n", + "For initializing State Blocks, the first step is to get our model to a state where it has no degrees of freedom. As mentioned earlier, fixing all of the state variables should be sufficient to fully define the state of the material – i.e. no degrees of freedom. Additionally, we want to initialize our State Block at a set of conditions that are good initial guesses for the final state of the model once it is finally solved. Of course, the State Block has no way of knowing what these initial values should be, so we depend on the unit model (or the end-user) to provide us with a set of initial values to use – this is done through a `dict` which we generally call `state_args` where the keys are the names of the state variables and the values are the initial guesses.\n", "\n", - "Before we start fixing the state variables, there is the possibility that all the state variables have already been fixed (e.g. by a the unit model during its own initialization routine). To allow us to save some time, we include a `state_vars_fixed` argument in our State Block initialization methods that lets the unit model tell us if the state variables are already fixed \u2013 if this is `True` then we know we can skip the step of checking the state variables ourselves. If `state_vars_fixed is False` however, then we need to go and fix all the state variables as part of our initialization routine. To save us the effort of having to code all of this ourselves, the IDAES toolkit contains a utility method named `fix_state_vars` (which we imported earlier), which takes the `state_args` `dict` and then iterates through all the state variables as defined by the State Block (using the `dict` we declared earlier in the `return_state_var_dict` sub-method). This method iterates through all the defined state variables and does the following:\n", + "Before we start fixing the state variables, there is the possibility that all the state variables have already been fixed (e.g. by a the unit model during its own initialization routine). To allow us to save some time, we include a `state_vars_fixed` argument in our State Block initialization methods that lets the unit model tell us if the state variables are already fixed – if this is `True` then we know we can skip the step of checking the state variables ourselves. If `state_vars_fixed is False` however, then we need to go and fix all the state variables as part of our initialization routine. To save us the effort of having to code all of this ourselves, the IDAES toolkit contains a utility method named `fix_state_vars` (which we imported earlier), which takes the `state_args` `dict` and then iterates through all the state variables as defined by the State Block (using the `dict` we declared earlier in the `return_state_var_dict` sub-method). This method iterates through all the defined state variables and does the following:\n", "\n", "1. If the variable is already fixed, it records this and does nothing. If a variable is already fixed, we assume it was fixed for a reason and that we should not change its value.\n", "2. If the variable is not fixed, this is recorded and the method then checks the `state_args` dict for an initial guess for the variable. If a value is found, the variable is fixed to this value; otherwise, the variable is fixed to its current value.\n", "\n", "Finally, the `fix_state_vars` method returns a `dict` that records which variables were fixed by the method, so that we can later reverse these changes. In the example below, we refer to this `dict` as `flags`.\n", "\n", - "At this point, all the state variables should now be fixed, but once again we have a small catch \u2013 if we fix all the state variables then we have a situation similar to the inlet of a unit where we cannot write a constraint on the sum of mole fractions and still solve the model. Thus we need to deactivate this constraint if it exists (remembering that this constraint will not exist in all State Blocks). We know that this constraint will only exist if `defined_state is False`, so we start by writing an `IF` statement to check for this and then use the Pyomo `deactivate()` method to deactivate the constraint (remembering that we will need to reactivate it later).\n", + "At this point, all the state variables should now be fixed, but once again we have a small catch – if we fix all the state variables then we have a situation similar to the inlet of a unit where we cannot write a constraint on the sum of mole fractions and still solve the model. Thus we need to deactivate this constraint if it exists (remembering that this constraint will not exist in all State Blocks). We know that this constraint will only exist if `defined_state is False`, so we start by writing an `IF` statement to check for this and then use the Pyomo `deactivate()` method to deactivate the constraint (remembering that we will need to reactivate it later).\n", "\n", "Before we move on however, it is probably a good idea to check the degrees of freedom to be sure that they are zero (as expected). There are a number of ways things could go wrong (e.g., the unit model said the state variables were fixed when not all of them were, or we missed a constraint we need to deactivate), so a quick check now might save someone a lot of pain in the future. We can use the IDAES `degrees_of_freedom` method to check the degrees of freedom of our State Block, and if this is not zero raise an `Exception` to let the user know something went wrong." ] @@ -788,7 +788,7 @@ "\n", "Before we call the solver, we first need to make sure there is actually something to solve; depending on how the State Block is written (e.g. build-on-demand properties and use of `Expressions`), it is sometimes possible that there are actually no `Constraints` to be solved in the model. If we try to send a problem like that to a solver, we will likely get back an error message which is not what we want to see. Whilst we know that our State Block will always contain at least one constraint (for mixture density), we will add a check here anyway to show how it is done. First ,we create a counter to keep track of the number of unfixed variables in the system, `free_vars`. Then we iterate over all the elements of the `blk` (the `IndexedStateBlock`) and check how many free variables are in each. We use the `number_unfixed_variables()` method from the `idaes.core.util.model_statistics` module to do this, and add the result `free_vars` for each element. If the final value of `free_vars` is not zero, then we know there is something to solve for and we can proceed to call a solver; otherwise we know that we can skip this step.\n", "\n", - "In order to solve the entire `IndexedStateBlock`, we need to do things slightly differently than normal. The standard Pyomo `SolverFactory` cannot be applied to indexed blocks, so instead we use the IDAES `solve_indexed_block` method (imported from `idaes.core.initialization`) which puts a wrapper around the indexed block so that we can use Pyomo\u2019s solver interface. In order to use this method, we need to provide a Pyomo `SolverFactory` object (called `solver` here, which also includes any attached solver options) along with the `blk` we wish to solve and where to send the solver results (the `tee` argument). Additionally, we want the user to have the ability to control the output from the solver through the IDAES logger interface, which we do by wrapping the solver call with the following line of code:\n", + "In order to solve the entire `IndexedStateBlock`, we need to do things slightly differently than normal. The standard Pyomo `SolverFactory` cannot be applied to indexed blocks, so instead we use the IDAES `solve_indexed_block` method (imported from `idaes.core.initialization`) which puts a wrapper around the indexed block so that we can use Pyomo’s solver interface. In order to use this method, we need to provide a Pyomo `SolverFactory` object (called `solver` here, which also includes any attached solver options) along with the `blk` we wish to solve and where to send the solver results (the `tee` argument). Additionally, we want the user to have the ability to control the output from the solver through the IDAES logger interface, which we do by wrapping the solver call with the following line of code:\n", "\n", "```\n", "with idaeslog.solver_log(solve_log, idaeslog.DEBUG) as slc:\n", @@ -796,7 +796,7 @@ "\n", "where `idaeslog` is an instance of the IDAES logger. Note that we send the solver output to this logger by setting `tee=slc`. In this way, all the output from the solver is passed into the logger allowing users to easily control the output level without needing to send additional arguments to the initialization methods.\n", "\n", - "If all goes well, the solver will successfully initialize our model and we can move on. However, sometimes the solver will fail catastrophically, in which case we need to make sure that our initialization routine can attempt to recover. In order to do this, we wrap the solver call within a Python `try/except` statement. This way, if the solver fails badly and returns an `Exception`, we can capture this and decide how to process \u2013 otherwise the execution of our model would terminate with the exception from the solver. In the case we encounter an `Exception` here, we will record `results=None` and try to continue with initializing our model in the hope that we can recover.\n", + "If all goes well, the solver will successfully initialize our model and we can move on. However, sometimes the solver will fail catastrophically, in which case we need to make sure that our initialization routine can attempt to recover. In order to do this, we wrap the solver call within a Python `try/except` statement. This way, if the solver fails badly and returns an `Exception`, we can capture this and decide how to process – otherwise the execution of our model would terminate with the exception from the solver. In the case we encounter an `Exception` here, we will record `results=None` and try to continue with initializing our model in the hope that we can recover.\n", "\n", "Finally, it is useful to provide the user with some feedback on how the initialization is proceeding. In the last lines below, we send a message to the IDAES logger with a message saying that the initialization step has been completed and append the final solver status." ] @@ -900,7 +900,7 @@ "As the name suggests, the `initialize` method is used to run the initialization routine for the State Block, and this is where we will use the `prepare_state`, `initialize_state` and `restore_state` methods we wrote previously. The `initialize` method requires the following arguments to be declared:\n", "\n", "* `blk`: this will be a pointer to an instance of the State Block to be initialized.\n", - "* `state_args`: this is used to pass the \u2018dict\u2019 of initial guesses to the initialization routine. This should default to `None` if not provided. The `fix_state_vars` method will interpret a value of `None` as no guesses provided as use the current values instead.\n", + "* `state_args`: this is used to pass the ‘dict’ of initial guesses to the initialization routine. This should default to `None` if not provided. The `fix_state_vars` method will interpret a value of `None` as no guesses provided as use the current values instead.\n", "* `solver`: this argument is used to allow tell the State Block to use a specific solver during initialization, and should be a string recognized by the Pyomo `SolverFactory`. We generally set this to `None` in order to signify that IDAES Should use the default solver (which is IPOPT).\n", "* `optarg`: this argument is used to set any solver options the user desires. Again this is generally set to `None` to indicate that the default solver settings should be used.\n", "* `state_vars_fixed`: argument to allow the unit model to inform the State Block that the state variables are already fixed. This should default to `False`.\n", @@ -959,13 +959,13 @@ "source": [ "### The StateBlockData class\n", "\n", - "Finally, we can build the `StateBlockData` class, which we will call `HDAStateBlockData`. First, we use the `declare_process_block_class` decorator but this time we provide two arguments. The first argument is the name of the class that will be automatically constructed for us (`HDAStateBlock`) whilst the second argument is a reference to the class we wish to use as the base when building the `IndexedHDAStateBlock` class \u2013 i.e. the `_HDAStateBlock` class we just declared. Then, we declare our new `HDAStateBlockData` class and inherit from the IDAES `StateBlockData` base class.\n", + "Finally, we can build the `StateBlockData` class, which we will call `HDAStateBlockData`. First, we use the `declare_process_block_class` decorator but this time we provide two arguments. The first argument is the name of the class that will be automatically constructed for us (`HDAStateBlock`) whilst the second argument is a reference to the class we wish to use as the base when building the `IndexedHDAStateBlock` class – i.e. the `_HDAStateBlock` class we just declared. Then, we declare our new `HDAStateBlockData` class and inherit from the IDAES `StateBlockData` base class.\n", "\n", "As usual, the first thing we need to define in our new class is a `build` method, where we will provide the instructions for constructing our property model, and once again the first thing we should do is call `super().build()` to construct all the underlying components defined by the parent class. After this, we can call the methods we wrote earlier to construct the state variables and the add the calculations for the properties of interest.\n", "\n", - "However, if you recall from when we defined the properties metadata at the beginning of the example, we decided that the specific molar enthalpy of the mixture would be a \u201cbuild-on-demand\u201d property (i.e., we provided a specific method in the properties metadata rather than `None`). Thus, we do not want to call the method to construct the specific molar enthalpy as part of the `build` method, meaning that we only call the `add_state_variables`, `add_mole_fraction_constraint` and `add_molecular_weight_and_density` as in the `build` method.\n", + "However, if you recall from when we defined the properties metadata at the beginning of the example, we decided that the specific molar enthalpy of the mixture would be a “build-on-demand” property (i.e., we provided a specific method in the properties metadata rather than `None`). Thus, we do not want to call the method to construct the specific molar enthalpy as part of the `build` method, meaning that we only call the `add_state_variables`, `add_mole_fraction_constraint` and `add_molecular_weight_and_density` as in the `build` method.\n", "\n", - "To add the specific molar enthalpy calculation as a \u201cbuild-on-demand\u201d property, we instead declare a separate method with the name we provided in the properties metadata. Whenever the specific molar enthalpy is required by a unit model it will check to see if the property already exists, and if not it will look up the properties metadata and call the method listed there; i.e. `_enth_mol` in this case. Thus, we declare another method on our `HDAStateBlockData` class named `enth_mol` which takes only the class instance as an argument (`self`), and then call the `add_enth_mol` method we created earlier to construct the required `Expression`.\n", + "To add the specific molar enthalpy calculation as a “build-on-demand” property, we instead declare a separate method with the name we provided in the properties metadata. Whenever the specific molar enthalpy is required by a unit model it will check to see if the property already exists, and if not it will look up the properties metadata and call the method listed there; i.e. `_enth_mol` in this case. Thus, we declare another method on our `HDAStateBlockData` class named `enth_mol` which takes only the class instance as an argument (`self`), and then call the `add_enth_mol` method we created earlier to construct the required `Expression`.\n", "\n", "That is all we need to do in order to construct the variables and constraints we need for the property calculations. However, there are a number of other things we need to define in our State Block Data class. In order to provide much of the flexibility present in the IDAES modeling framework, we defer making decisions on much of the form of the overall model for as long as possible. However, these decisions need to be made at some point, and the State Block Data is where this finally occurs.\n", "\n", @@ -983,7 +983,7 @@ "* `default_material_balance_type` should return an instance of the IDAES `MaterialBalanceType` `Enum` (imported from `idaes.core`).\n", "* `default_energy_balance_type` should return an instance of the IDAES `EnergyBalanceType` `Enum` (imported from `idaes.core`).\n", "\n", - "Finally, we need to specify the basis of the material flow terms (mass, mole or other). This is used to automatically convert between different bases as required (e.g. a user can define a custom mass transfer term on a molar basis whilst using a mass basis for the actual material balance). Note that automatic conversion only works for mass and molar basis; the \u201cother\u201d basis is used to indicate forms which cannot be easily converted (i.e., the modeler needs to handle this manually). To define the material flow term basis we define a final method named `get_material_flow_basis` which returns an instance of the IDAES `MaterialFlowBasis` `Enum` (again imported from `idaes.core`)." + "Finally, we need to specify the basis of the material flow terms (mass, mole or other). This is used to automatically convert between different bases as required (e.g. a user can define a custom mass transfer term on a molar basis whilst using a mass basis for the actual material balance). Note that automatic conversion only works for mass and molar basis; the “other” basis is used to indicate forms which cannot be easily converted (i.e., the modeler needs to handle this manually). To define the material flow term basis we define a final method named `get_material_flow_basis` which returns an instance of the IDAES `MaterialFlowBasis` `Enum` (again imported from `idaes.core`)." ] }, { @@ -1055,9 +1055,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Next, we create `ConcreteModel` and a steady-state `FlowsheetBlock` to contain our example, ot which we attach an instance of our new `HDAPhysicalParameterBlock`.\n", + "Next, we create `ConcreteModel` and a steady-state `FlowsheetBlock` to contain our example, to which we attach an instance of our new `HDAPhysicalParameterBlock`.\n", "\n", - "We can then create an instance of the `HDAStateBlock` directly from the parameter block using the `build_state_block` method. This uses the reference to the State Block class that we attached ot the Physical Parameter Block earlier in the example to automatically create an instance of the correct class. Note that we index the State Block by the time domain, so that it looks like a typical state block in a flowsheet, and we set `defined_state = True` so that we can set values for all the component mole fractions later." + "We can then create an instance of the `HDAStateBlock` directly from the parameter block using the `build_state_block` method. This uses the reference to the State Block class that we attached to the Physical Parameter Block earlier in the example to automatically create an instance of the correct class. Note that we index the State Block by the time domain, so that it looks like a typical state block in a flowsheet, and we set `defined_state = True` so that we can set values for all the component mole fractions later." ] }, { @@ -1079,7 +1079,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We now have an instance of our new State Block in our flowsheet, so let\u2019s display it and see what it contains." + "We now have an instance of our new State Block in our flowsheet, so let’s display it and see what it contains." ] }, { @@ -1095,7 +1095,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We can see that our State Block contains a single point in time, which in turn contains the five variables. These are our four state variables (molar flow rate, component mole fraction, temperature and pressure) as well as the mixture density. We also have a single constraint, which is the ideal gas equation used to calculate density. Note that we don\u2019t see the component molecular weights as they are `Params` (`References` take on the appearance of the component being referenced) or the molar enthalpy as it is an `Expression`, not a variable (plus it hasn\u2019t been constructed yet as we haven\u2019t asked for it).\n", + "We can see that our State Block contains a single point in time, which in turn contains the five variables. These are our four state variables (molar flow rate, component mole fraction, temperature and pressure) as well as the mixture density. We also have a single constraint, which is the ideal gas equation used to calculate density. Note that we don’t see the component molecular weights as they are `Params` (`References` take on the appearance of the component being referenced) or the molar enthalpy as it is an `Expression`, not a variable (plus it hasn’t been constructed yet as we haven’t asked for it).\n", "\n", "Next, let us check the degrees of freedom in our State Block." ] @@ -1115,7 +1115,7 @@ "source": [ "This is unexpected: the `degrees_of_freedom` method is saying there are only 2 degrees of freedom in our State Block, but there are 8 state variables.\n", "\n", - "However, if we think about the constraints we have written, we are only actually using 2 of the state variables in any constraint (temperature and pressure appear in the ideal gas equation). The molar flowrate and component mole fractions are not actually used anywhere in our model, so they have been excluded from the degrees of freedom calculation. In Pyomo terminology, these variables are \u201cStale\u201d, and they will not be sent to the solver when it is called. Thus, the two degrees of freedom is in fact correct.\n", + "However, if we think about the constraints we have written, we are only actually using 2 of the state variables in any constraint (temperature and pressure appear in the ideal gas equation). The molar flowrate and component mole fractions are not actually used anywhere in our model, so they have been excluded from the degrees of freedom calculation. In Pyomo terminology, these variables are “Stale”, and they will not be sent to the solver when it is called. Thus, the two degrees of freedom is in fact correct.\n", "\n", "Note that this is only the case because our property package is so simple. Also, the specific enthalpy calculation depends on the component mole fractions, so whilst we could solve the State Block by only specifying temperature and pressure, the value of the specific molar enthalpy would be meaningless.\n", "\n", @@ -1142,7 +1142,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now that we have fixed the values for all the state variables, we would expect that the degrees of freedom should be zero (even though we fixed all 8 variables, only temperature and pressure actually contribute to the degrees of freedom). Let\u2019s check this to be sure." + "Now that we have fixed the values for all the state variables, we would expect that the degrees of freedom should be zero (even though we fixed all 8 variables, only temperature and pressure actually contribute to the degrees of freedom). Let’s check this to be sure." ] }, { @@ -1364,4 +1364,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/properties/parameter_estimation_pr.ipynb b/idaes_examples/notebooks/docs/properties/parameter_estimation_pr.ipynb index cbbd307e..1546704a 100644 --- a/idaes_examples/notebooks/docs/properties/parameter_estimation_pr.ipynb +++ b/idaes_examples/notebooks/docs/properties/parameter_estimation_pr.ipynb @@ -35,7 +35,7 @@ "Updated: 2023-06-01 \n", "## 1. Introduction\n", "\n", - "This Jupyter Notebook estimates binary interaction parameters for a CO$_2$-Ionic liquid property package. A property package has been created for CO$_2$-[bmim][PF6]. We will utilize Pyomo's `parmest` tool in conjuction with IDAES models for parameter estimation. We demonstrate these tools by estimating the parameters associated with the Peng-Robinson property model for a benzene-toluene mixture. The Peng-Robinson EOS the binary interaction parameter (kappa_ij). When estimating parameters associated with the property package, IDAES provides the flexibility of doing the parameter estimation by just using the state block or by using a unit model with a specified property package. This module will demonstrate parameter estimation by using the flash unit model with a Modular Property Package.\n", + "This Jupyter Notebook estimates binary interaction parameters for a CO$_2$-Ionic liquid property package. A property package has been created for CO$_2$-[bmim][PF6]. We will utilize Pyomo's `parmest` tool in conjunction with IDAES models for parameter estimation. We demonstrate these tools by estimating the parameters associated with the Peng-Robinson property model for a benzene-toluene mixture. The Peng-Robinson EOS the binary interaction parameter (kappa_ij). When estimating parameters associated with the property package, IDAES provides the flexibility of doing the parameter estimation by just using the state block or by using a unit model with a specified property package. This module will demonstrate parameter estimation by using the flash unit model with a Modular Property Package.\n", "\n", "### 1.1 Tutorial objectives\n", "\n", diff --git a/idaes_examples/notebooks/docs/properties/parameter_estimation_pr_doc.ipynb b/idaes_examples/notebooks/docs/properties/parameter_estimation_pr_doc.ipynb index 545f8154..ea87d247 100644 --- a/idaes_examples/notebooks/docs/properties/parameter_estimation_pr_doc.ipynb +++ b/idaes_examples/notebooks/docs/properties/parameter_estimation_pr_doc.ipynb @@ -35,7 +35,7 @@ "Updated: 2023-06-01 \n", "## 1. Introduction\n", "\n", - "This Jupyter Notebook estimates binary interaction parameters for a CO$_2$-Ionic liquid property package. A property package has been created for CO$_2$-[bmim][PF6]. We will utilize Pyomo's `parmest` tool in conjuction with IDAES models for parameter estimation. We demonstrate these tools by estimating the parameters associated with the Peng-Robinson property model for a benzene-toluene mixture. The Peng-Robinson EOS the binary interaction parameter (kappa_ij). When estimating parameters associated with the property package, IDAES provides the flexibility of doing the parameter estimation by just using the state block or by using a unit model with a specified property package. This module will demonstrate parameter estimation by using the flash unit model with a Modular Property Package.\n", + "This Jupyter Notebook estimates binary interaction parameters for a CO$_2$-Ionic liquid property package. A property package has been created for CO$_2$-[bmim][PF6]. We will utilize Pyomo's `parmest` tool in conjunction with IDAES models for parameter estimation. We demonstrate these tools by estimating the parameters associated with the Peng-Robinson property model for a benzene-toluene mixture. The Peng-Robinson EOS the binary interaction parameter (kappa_ij). When estimating parameters associated with the property package, IDAES provides the flexibility of doing the parameter estimation by just using the state block or by using a unit model with a specified property package. This module will demonstrate parameter estimation by using the flash unit model with a Modular Property Package.\n", "\n", "### 1.1 Tutorial objectives\n", "\n", @@ -1594,4 +1594,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/properties/parameter_estimation_pr_test.ipynb b/idaes_examples/notebooks/docs/properties/parameter_estimation_pr_test.ipynb index f6c17e61..4d620a5a 100644 --- a/idaes_examples/notebooks/docs/properties/parameter_estimation_pr_test.ipynb +++ b/idaes_examples/notebooks/docs/properties/parameter_estimation_pr_test.ipynb @@ -35,7 +35,7 @@ "Updated: 2023-06-01 \n", "## 1. Introduction\n", "\n", - "This Jupyter Notebook estimates binary interaction parameters for a CO$_2$-Ionic liquid property package. A property package has been created for CO$_2$-[bmim][PF6]. We will utilize Pyomo's `parmest` tool in conjuction with IDAES models for parameter estimation. We demonstrate these tools by estimating the parameters associated with the Peng-Robinson property model for a benzene-toluene mixture. The Peng-Robinson EOS the binary interaction parameter (kappa_ij). When estimating parameters associated with the property package, IDAES provides the flexibility of doing the parameter estimation by just using the state block or by using a unit model with a specified property package. This module will demonstrate parameter estimation by using the flash unit model with a Modular Property Package.\n", + "This Jupyter Notebook estimates binary interaction parameters for a CO$_2$-Ionic liquid property package. A property package has been created for CO$_2$-[bmim][PF6]. We will utilize Pyomo's `parmest` tool in conjunction with IDAES models for parameter estimation. We demonstrate these tools by estimating the parameters associated with the Peng-Robinson property model for a benzene-toluene mixture. The Peng-Robinson EOS the binary interaction parameter (kappa_ij). When estimating parameters associated with the property package, IDAES provides the flexibility of doing the parameter estimation by just using the state block or by using a unit model with a specified property package. This module will demonstrate parameter estimation by using the flash unit model with a Modular Property Package.\n", "\n", "### 1.1 Tutorial objectives\n", "\n", @@ -352,4 +352,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/properties/parameter_estimation_pr_usr.ipynb b/idaes_examples/notebooks/docs/properties/parameter_estimation_pr_usr.ipynb index f6c17e61..4d620a5a 100644 --- a/idaes_examples/notebooks/docs/properties/parameter_estimation_pr_usr.ipynb +++ b/idaes_examples/notebooks/docs/properties/parameter_estimation_pr_usr.ipynb @@ -35,7 +35,7 @@ "Updated: 2023-06-01 \n", "## 1. Introduction\n", "\n", - "This Jupyter Notebook estimates binary interaction parameters for a CO$_2$-Ionic liquid property package. A property package has been created for CO$_2$-[bmim][PF6]. We will utilize Pyomo's `parmest` tool in conjuction with IDAES models for parameter estimation. We demonstrate these tools by estimating the parameters associated with the Peng-Robinson property model for a benzene-toluene mixture. The Peng-Robinson EOS the binary interaction parameter (kappa_ij). When estimating parameters associated with the property package, IDAES provides the flexibility of doing the parameter estimation by just using the state block or by using a unit model with a specified property package. This module will demonstrate parameter estimation by using the flash unit model with a Modular Property Package.\n", + "This Jupyter Notebook estimates binary interaction parameters for a CO$_2$-Ionic liquid property package. A property package has been created for CO$_2$-[bmim][PF6]. We will utilize Pyomo's `parmest` tool in conjunction with IDAES models for parameter estimation. We demonstrate these tools by estimating the parameters associated with the Peng-Robinson property model for a benzene-toluene mixture. The Peng-Robinson EOS the binary interaction parameter (kappa_ij). When estimating parameters associated with the property package, IDAES provides the flexibility of doing the parameter estimation by just using the state block or by using a unit model with a specified property package. This module will demonstrate parameter estimation by using the flash unit model with a Modular Property Package.\n", "\n", "### 1.1 Tutorial objectives\n", "\n", @@ -352,4 +352,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/surrogates/best_practices_optimization.ipynb b/idaes_examples/notebooks/docs/surrogates/best_practices_optimization.ipynb index d1d8c2b8..a2b493ba 100644 --- a/idaes_examples/notebooks/docs/surrogates/best_practices_optimization.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/best_practices_optimization.ipynb @@ -271,7 +271,7 @@ "source": [ "## 4.2 Model Size/Form Comparison\n", "\n", - "As mentioned above, as part of best practices the IDAES ML/AI demonstration includes the analysis of model/solver statistics and performance to determine the best surrogate model, including model size, model form, model trainer, etc. This section provides the rigorous analysis of solver performance comparing differnt surrogate models (ALAMO, PySMO polynomial, PysMO RBF, and PySMO Kriging).\n", + "As mentioned above, as part of best practices the IDAES ML/AI demonstration includes the analysis of model/solver statistics and performance to determine the best surrogate model, including model size, model form, model trainer, etc. This section provides the rigorous analysis of solver performance comparing different surrogate models (ALAMO, PySMO polynomial, PysMO RBF, and PySMO Kriging).\n", "\n", "To obtain the results, we run the flowsheet for ten different simulation cases for each surrogate model type. Since the simulation cases are obtained from the training data set we can compare model performance (absolute error of measurement vs predicted output values)." ] @@ -297,7 +297,7 @@ "# selecting columns that correspond to Input Variables\n", "inputs = np.array(case_data.iloc[:, :2])\n", "\n", - "# selecting columns that correspod to Output Variables\n", + "# selecting columns that correspond to Output Variables\n", "cols = [\"Steam_Flow\", \"Reformer_Duty\", \"C2H6\", \"CH4\", \"H2\", \"O2\"]\n", "outputs = np.array(case_data[cols])\n", "\n", @@ -635,4 +635,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/surrogates/best_practices_optimization_doc.ipynb b/idaes_examples/notebooks/docs/surrogates/best_practices_optimization_doc.ipynb index 109e07bd..939c494d 100644 --- a/idaes_examples/notebooks/docs/surrogates/best_practices_optimization_doc.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/best_practices_optimization_doc.ipynb @@ -304,7 +304,7 @@ "source": [ "## 4.2 Model Size/Form Comparison\n", "\n", - "As mentioned above, as part of best practices the IDAES ML/AI demonstration includes the analysis of model/solver statistics and performance to determine the best surrogate model, including model size, model form, model trainer, etc. This section provides the rigorous analysis of solver performance comparing differnt surrogate models (ALAMO, PySMO polynomial, PysMO RBF, and PySMO Kriging).\n", + "As mentioned above, as part of best practices the IDAES ML/AI demonstration includes the analysis of model/solver statistics and performance to determine the best surrogate model, including model size, model form, model trainer, etc. This section provides the rigorous analysis of solver performance comparing different surrogate models (ALAMO, PySMO polynomial, PysMO RBF, and PySMO Kriging).\n", "\n", "To obtain the results, we run the flowsheet for ten different simulation cases for each surrogate model type. Since the simulation cases are obtained from the training data set we can compare model performance (absolute error of measurement vs predicted output values)." ] @@ -2647,7 +2647,7 @@ "# selecting columns that correspond to Input Variables\n", "inputs = np.array(case_data.iloc[:, :2])\n", "\n", - "# selecting columns that correspod to Output Variables\n", + "# selecting columns that correspond to Output Variables\n", "cols = [\"Steam_Flow\", \"Reformer_Duty\", \"C2H6\", \"CH4\", \"H2\", \"O2\"]\n", "outputs = np.array(case_data[cols])\n", "\n", @@ -3494,4 +3494,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/surrogates/best_practices_optimization_test.ipynb b/idaes_examples/notebooks/docs/surrogates/best_practices_optimization_test.ipynb index 2ab637d7..90a84df6 100644 --- a/idaes_examples/notebooks/docs/surrogates/best_practices_optimization_test.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/best_practices_optimization_test.ipynb @@ -271,7 +271,7 @@ "source": [ "## 4.2 Model Size/Form Comparison\n", "\n", - "As mentioned above, as part of best practices the IDAES ML/AI demonstration includes the analysis of model/solver statistics and performance to determine the best surrogate model, including model size, model form, model trainer, etc. This section provides the rigorous analysis of solver performance comparing differnt surrogate models (ALAMO, PySMO polynomial, PysMO RBF, and PySMO Kriging).\n", + "As mentioned above, as part of best practices the IDAES ML/AI demonstration includes the analysis of model/solver statistics and performance to determine the best surrogate model, including model size, model form, model trainer, etc. This section provides the rigorous analysis of solver performance comparing different surrogate models (ALAMO, PySMO polynomial, PysMO RBF, and PySMO Kriging).\n", "\n", "To obtain the results, we run the flowsheet for ten different simulation cases for each surrogate model type. Since the simulation cases are obtained from the training data set we can compare model performance (absolute error of measurement vs predicted output values)." ] @@ -297,7 +297,7 @@ "# selecting columns that correspond to Input Variables\n", "inputs = np.array(case_data.iloc[:, :2])\n", "\n", - "# selecting columns that correspod to Output Variables\n", + "# selecting columns that correspond to Output Variables\n", "cols = [\"Steam_Flow\", \"Reformer_Duty\", \"C2H6\", \"CH4\", \"H2\", \"O2\"]\n", "outputs = np.array(case_data[cols])\n", "\n", @@ -635,4 +635,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/surrogates/best_practices_optimization_usr.ipynb b/idaes_examples/notebooks/docs/surrogates/best_practices_optimization_usr.ipynb index c83e4407..174e9648 100644 --- a/idaes_examples/notebooks/docs/surrogates/best_practices_optimization_usr.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/best_practices_optimization_usr.ipynb @@ -271,7 +271,7 @@ "source": [ "## 4.2 Model Size/Form Comparison\n", "\n", - "As mentioned above, as part of best practices the IDAES ML/AI demonstration includes the analysis of model/solver statistics and performance to determine the best surrogate model, including model size, model form, model trainer, etc. This section provides the rigorous analysis of solver performance comparing differnt surrogate models (ALAMO, PySMO polynomial, PysMO RBF, and PySMO Kriging).\n", + "As mentioned above, as part of best practices the IDAES ML/AI demonstration includes the analysis of model/solver statistics and performance to determine the best surrogate model, including model size, model form, model trainer, etc. This section provides the rigorous analysis of solver performance comparing different surrogate models (ALAMO, PySMO polynomial, PysMO RBF, and PySMO Kriging).\n", "\n", "To obtain the results, we run the flowsheet for ten different simulation cases for each surrogate model type. Since the simulation cases are obtained from the training data set we can compare model performance (absolute error of measurement vs predicted output values)." ] @@ -297,7 +297,7 @@ "# selecting columns that correspond to Input Variables\n", "inputs = np.array(case_data.iloc[:, :2])\n", "\n", - "# selecting columns that correspod to Output Variables\n", + "# selecting columns that correspond to Output Variables\n", "cols = [\"Steam_Flow\", \"Reformer_Duty\", \"C2H6\", \"CH4\", \"H2\", \"O2\"]\n", "outputs = np.array(case_data[cols])\n", "\n", @@ -635,4 +635,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/surrogates/pysmo/pysmo_basics.ipynb b/idaes_examples/notebooks/docs/surrogates/pysmo/pysmo_basics.ipynb index 22fb82db..60c8f350 100644 --- a/idaes_examples/notebooks/docs/surrogates/pysmo/pysmo_basics.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/pysmo/pysmo_basics.ipynb @@ -298,7 +298,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "For this example, let us consider a 4th order polynomial with interaction terms. We will split the data 80/20 betweeen training and cross-validation." + "For this example, let us consider a 4th order polynomial with interaction terms. We will split the data 80/20 between training and cross-validation." ] }, { diff --git a/idaes_examples/notebooks/docs/surrogates/pysmo/pysmo_basics_doc.ipynb b/idaes_examples/notebooks/docs/surrogates/pysmo/pysmo_basics_doc.ipynb index ecf3aa8a..7a3c6798 100644 --- a/idaes_examples/notebooks/docs/surrogates/pysmo/pysmo_basics_doc.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/pysmo/pysmo_basics_doc.ipynb @@ -426,7 +426,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "For this example, let us consider a 4th order polynomial with interaction terms. We will split the data 80/20 betweeen training and cross-validation." + "For this example, let us consider a 4th order polynomial with interaction terms. We will split the data 80/20 between training and cross-validation." ] }, { @@ -1801,4 +1801,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/surrogates/pysmo/pysmo_basics_test.ipynb b/idaes_examples/notebooks/docs/surrogates/pysmo/pysmo_basics_test.ipynb index 02d2456f..16ec6887 100644 --- a/idaes_examples/notebooks/docs/surrogates/pysmo/pysmo_basics_test.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/pysmo/pysmo_basics_test.ipynb @@ -298,7 +298,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "For this example, let us consider a 4th order polynomial with interaction terms. We will split the data 80/20 betweeen training and cross-validation." + "For this example, let us consider a 4th order polynomial with interaction terms. We will split the data 80/20 between training and cross-validation." ] }, { @@ -864,4 +864,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/surrogates/pysmo/pysmo_basics_usr.ipynb b/idaes_examples/notebooks/docs/surrogates/pysmo/pysmo_basics_usr.ipynb index 02d2456f..16ec6887 100644 --- a/idaes_examples/notebooks/docs/surrogates/pysmo/pysmo_basics_usr.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/pysmo/pysmo_basics_usr.ipynb @@ -298,7 +298,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "For this example, let us consider a 4th order polynomial with interaction terms. We will split the data 80/20 betweeen training and cross-validation." + "For this example, let us consider a 4th order polynomial with interaction terms. We will split the data 80/20 between training and cross-validation." ] }, { @@ -864,4 +864,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/alamo/alamo_training.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/alamo_training.ipynb index fbdf0fd8..697c764f 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/alamo/alamo_training.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/alamo_training.ipynb @@ -42,7 +42,7 @@ "### 1.1 Need for ML Surrogate\n", "\n", "The properties predicted by the surrogate are enthalpy and entropy of the S-CO2 based on the \n", - "pressure and temperature of the system. The analytical equation of getting the enthalpy and entropy from pressure and temperature are in the differential form and would make the problem a DAE system. To counter this problem and keep the problem algebric, we will use the surrogates and relate enthalpy and entropy with the pressure and temperature as an algebric equation.\n", + "pressure and temperature of the system. The analytical equation of getting the enthalpy and entropy from pressure and temperature are in the differential form and would make the problem a DAE system. To counter this problem and keep the problem algebraic, we will use the surrogates and relate enthalpy and entropy with the pressure and temperature as an algebraic equation.\n", "\n", "### 1.2 Supercritical CO2 cycle process\n", "\n", diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/alamo/alamo_training_doc.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/alamo_training_doc.ipynb index 8f73584e..952f75a1 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/alamo/alamo_training_doc.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/alamo_training_doc.ipynb @@ -42,7 +42,7 @@ "### 1.1 Need for ML Surrogate\n", "\n", "The properties predicted by the surrogate are enthalpy and entropy of the S-CO2 based on the \n", - "pressure and temperature of the system. The analytical equation of getting the enthalpy and entropy from pressure and temperature are in the differential form and would make the problem a DAE system. To counter this problem and keep the problem algebric, we will use the surrogates and relate enthalpy and entropy with the pressure and temperature as an algebric equation.\n", + "pressure and temperature of the system. The analytical equation of getting the enthalpy and entropy from pressure and temperature are in the differential form and would make the problem a DAE system. To counter this problem and keep the problem algebraic, we will use the surrogates and relate enthalpy and entropy with the pressure and temperature as an algebraic equation.\n", "\n", "### 1.2 Supercritical CO2 cycle process\n", "\n", diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/alamo/alamo_training_test.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/alamo_training_test.ipynb index 554a9781..c439178b 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/alamo/alamo_training_test.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/alamo_training_test.ipynb @@ -42,7 +42,7 @@ "### 1.1 Need for ML Surrogate\n", "\n", "The properties predicted by the surrogate are enthalpy and entropy of the S-CO2 based on the \n", - "pressure and temperature of the system. The analytical equation of getting the enthalpy and entropy from pressure and temperature are in the differential form and would make the problem a DAE system. To counter this problem and keep the problem algebric, we will use the surrogates and relate enthalpy and entropy with the pressure and temperature as an algebric equation.\n", + "pressure and temperature of the system. The analytical equation of getting the enthalpy and entropy from pressure and temperature are in the differential form and would make the problem a DAE system. To counter this problem and keep the problem algebraic, we will use the surrogates and relate enthalpy and entropy with the pressure and temperature as an algebraic equation.\n", "\n", "### 1.2 Supercritical CO2 cycle process\n", "\n", diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/alamo/alamo_training_usr.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/alamo_training_usr.ipynb index 06bef3c4..f7081df1 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/alamo/alamo_training_usr.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/alamo_training_usr.ipynb @@ -42,7 +42,7 @@ "### 1.1 Need for ML Surrogate\n", "\n", "The properties predicted by the surrogate are enthalpy and entropy of the S-CO2 based on the \n", - "pressure and temperature of the system. The analytical equation of getting the enthalpy and entropy from pressure and temperature are in the differential form and would make the problem a DAE system. To counter this problem and keep the problem algebric, we will use the surrogates and relate enthalpy and entropy with the pressure and temperature as an algebric equation.\n", + "pressure and temperature of the system. The analytical equation of getting the enthalpy and entropy from pressure and temperature are in the differential form and would make the problem a DAE system. To counter this problem and keep the problem algebraic, we will use the surrogates and relate enthalpy and entropy with the pressure and temperature as an algebraic equation.\n", "\n", "### 1.2 Supercritical CO2 cycle process\n", "\n", diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/alamo/flowsheet_optimization.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/flowsheet_optimization.ipynb index 000282cd..2a53a5c7 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/alamo/flowsheet_optimization.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/flowsheet_optimization.ipynb @@ -110,7 +110,7 @@ "source": [ "# 2. Constructing the flowsheet\n", "\n", - "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the properties.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguements, after which we connect them using Arcs as in the flowsheet above. \n", + "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the properties.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguments, after which we connect them using Arcs as in the flowsheet above. \n", "\n", "Once we have the connected flowsheet, we initialize individual unit models. Before initializing, we fix desired variables for the desired behavior of the unit model and then use `propagate_state` to pass on the state variables to next unit model in the flowsheet. After completely initializing the flowsheet, we convert the network to a mathematical form by using `network.expand_arcs` from the TransformationFactory and apply it on the flowsheet block. Then we call the solver and solve the flowsheet to calculate the total work in the process. " ] diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/alamo/flowsheet_optimization_doc.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/flowsheet_optimization_doc.ipynb index 4be77c7a..dab89e00 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/alamo/flowsheet_optimization_doc.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/flowsheet_optimization_doc.ipynb @@ -110,7 +110,7 @@ "source": [ "# 2. Constructing the flowsheet\n", "\n", - "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the properties.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguements, after which we connect them using Arcs as in the flowsheet above. \n", + "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the properties.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguments, after which we connect them using Arcs as in the flowsheet above. \n", "\n", "Once we have the connected flowsheet, we initialize individual unit models. Before initializing, we fix desired variables for the desired behavior of the unit model and then use `propagate_state` to pass on the state variables to next unit model in the flowsheet. After completely initializing the flowsheet, we convert the network to a mathematical form by using `network.expand_arcs` from the TransformationFactory and apply it on the flowsheet block. Then we call the solver and solve the flowsheet to calculate the total work in the process. " ] diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/alamo/flowsheet_optimization_test.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/flowsheet_optimization_test.ipynb index 4be77c7a..dab89e00 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/alamo/flowsheet_optimization_test.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/flowsheet_optimization_test.ipynb @@ -110,7 +110,7 @@ "source": [ "# 2. Constructing the flowsheet\n", "\n", - "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the properties.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguements, after which we connect them using Arcs as in the flowsheet above. \n", + "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the properties.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguments, after which we connect them using Arcs as in the flowsheet above. \n", "\n", "Once we have the connected flowsheet, we initialize individual unit models. Before initializing, we fix desired variables for the desired behavior of the unit model and then use `propagate_state` to pass on the state variables to next unit model in the flowsheet. After completely initializing the flowsheet, we convert the network to a mathematical form by using `network.expand_arcs` from the TransformationFactory and apply it on the flowsheet block. Then we call the solver and solve the flowsheet to calculate the total work in the process. " ] diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/alamo/flowsheet_optimization_usr.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/flowsheet_optimization_usr.ipynb index 4be77c7a..dab89e00 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/alamo/flowsheet_optimization_usr.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/flowsheet_optimization_usr.ipynb @@ -110,7 +110,7 @@ "source": [ "# 2. Constructing the flowsheet\n", "\n", - "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the properties.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguements, after which we connect them using Arcs as in the flowsheet above. \n", + "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the properties.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguments, after which we connect them using Arcs as in the flowsheet above. \n", "\n", "Once we have the connected flowsheet, we initialize individual unit models. Before initializing, we fix desired variables for the desired behavior of the unit model and then use `propagate_state` to pass on the state variables to next unit model in the flowsheet. After completely initializing the flowsheet, we convert the network to a mathematical form by using `network.expand_arcs` from the TransformationFactory and apply it on the flowsheet block. Then we call the solver and solve the flowsheet to calculate the total work in the process. " ] diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/alamo/properties.py b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/properties.py index 3b2f8bbb..dfb726d3 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/alamo/properties.py +++ b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/properties.py @@ -113,7 +113,7 @@ def initialize(blk, state_args=None, hold_state=False, outlvl=1, * 0 = no output (default) * 1 = return solver state for each step in routine - * 2 = include solver output infomation (tee=True) + * 2 = include solver output information (tee=True) state_vars_fixed: Flag to denote if state vars have already been fixed. - True - states have already been fixed by the @@ -124,18 +124,18 @@ def initialize(blk, state_args=None, hold_state=False, outlvl=1, - False - states have not been fixed. The state block will deal with fixing/unfixing. optarg : solver options dictionary object (default=None) - solver : str indicating whcih solver to use during + solver : str indicating which solver to use during initialization (default = 'ipopt') hold_state : flag indicating whether the initialization routine should unfix any state variables fixed during initialization (default=False). - - True - states varaibles are not unfixed, and + - True - states variables are not unfixed, and a dict of returned containing flags for which states were fixed during initialization. - False - state variables are unfixed after initialization by calling the - relase_state method + release_state method Returns: If hold_states is True, returns a dict containing flags for @@ -195,7 +195,7 @@ def initialize(blk, state_args=None, hold_state=False, outlvl=1, def release_state(blk, flags, outlvl=0): ''' - Method to relase state variables fixed during initialisation. + Method to release state variables fixed during initialisation. Keyword Arguments: flags : dict containing information of which state variables diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding.ipynb index 9fa9eb01..cc7e8272 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding.ipynb @@ -34,9 +34,9 @@ "\n", "## 1. Integration of Surrogate into Custom Property Package\n", "\n", - "Here we shall see how to integrate the trained surrogate in the custom property package. One can read more about making a properties package from read the docs. To integrate the surrogate we first define the physical paramter block which will return the properties based on the state variables. State variables would be called from the State Block as Pyomo variables. We will define the surrogate input and output as pyomo variables as well. Once we have defined the variables in the state block then we define our surrogate block.\n", + "Here we shall see how to integrate the trained surrogate in the custom property package. One can read more about making a properties package from read the docs. To integrate the surrogate we first define the physical parameter block which will return the properties based on the state variables. State variables would be called from the State Block as Pyomo variables. We will define the surrogate input and output as pyomo variables as well. Once we have defined the variables in the state block then we define our surrogate block.\n", "\n", - "*NOTE:* For ease of explaination the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practive all the classes in this notebook should be part of the same python script. This folder includes \"properties.py\" file which is how embedding file should look like. \n", + "*NOTE:* For ease of explanation the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practice all the classes in this notebook should be part of the same python script. This folder includes \"properties.py\" file which is how embedding file should look like. \n", "\n", "### 1.1 Steps in Creating a Property Package\n", "Creating a new property package can be broken down into the following steps, which will be demonstrated in the next part of this tutorial.\n", @@ -107,7 +107,7 @@ "source": [ "# 3 Defining Classes\n", "\n", - "We shall be going through each class of the property package in detail. Since there are not reactions occuring in the flowsheet we shall only write the Physical Parameter Block.\n", + "We shall be going through each class of the property package in detail. Since there are not reactions occurring in the flowsheet we shall only write the Physical Parameter Block.\n", "\n", "## 3.1 Physical Parameter Block\n", "\n", @@ -190,7 +190,7 @@ "\n", "1. Define the input and output variables to the trained surrogate\n", "2. Load the surrogate from the folder it is saved in, here it is saved in the folder called alamo_surrogate (look at the alamo_training.ipynb file) using the Alamopy Surrogate API of IDAES package\n", - "3. Define a `SurrogateBlock` and call the build_model method on the block with the input variables, output variables, model formulation and the loaded surrogate as the arguements. \n", + "3. Define a `SurrogateBlock` and call the build_model method on the block with the input variables, output variables, model formulation and the loaded surrogate as the arguments. \n", "4. Define the constraints necessary for ensuring physical feasibility of the system like the mass balance and energy balance. Check for the state variables to be within the bounds. \n" ] }, @@ -306,7 +306,7 @@ "3. `Return the state of the model` to where it originally started (with the exception of variable values). Any variable that was fixed or constraint that was deactivated during initialization should be unfixed or reactivated, so that the degrees of freedom are restored to what they were before the initialization began.\n", "\n", "\n", - "Thus, we start with fixing the state variables. Here since enth_mol and entr_mol are a function of pressure and temperature, we do not fix them as fixing pressure and temperature would interm fix them. So, we check if a state variable if fixed or not, if it is fixed then we do not change them, if they are not fixed then we check for an initial guess from the `state_args`, if we get a value then we fix the varible with state_args, else we fix it with the value provided by the user. This should bring the degrees of freedom to 0. Here since we do not have any variable/constrained that we have unfixed/deactivated we can skip step 2 and move to step 3. We unfix the variables that were fixed in step 1 using the `release_state` function. " + "Thus, we start with fixing the state variables. Here since enth_mol and entr_mol are a function of pressure and temperature, we do not fix them as fixing pressure and temperature would in turn fix them. So, we check if a state variable if fixed or not, if it is fixed then we do not change them, if they are not fixed then we check for an initial guess from the `state_args`, if we get a value then we fix the variable with state_args, else we fix it with the value provided by the user. This should bring the degrees of freedom to 0. Here since we do not have any variable/constrained that we have unfixed/deactivated we can skip step 2 and move to step 3. We unfix the variables that were fixed in step 1 using the `release_state` function. " ] }, { @@ -337,7 +337,7 @@ "\n", " * 0 = no output (default)\n", " * 1 = return solver state for each step in routine\n", - " * 2 = include solver output infomation (tee=True)\n", + " * 2 = include solver output information (tee=True)\n", " state_vars_fixed: Flag to denote if state vars have already been\n", " fixed.\n", " - True - states have already been fixed by the\n", @@ -348,18 +348,18 @@ " - False - states have not been fixed. The state\n", " block will deal with fixing/unfixing.\n", " optarg : solver options dictionary object (default=None)\n", - " solver : str indicating whcih solver to use during\n", + " solver : str indicating which solver to use during\n", " initialization (default = 'ipopt')\n", " hold_state : flag indicating whether the initialization routine\n", " should unfix any state variables fixed during\n", " initialization (default=False).\n", - " - True - states varaibles are not unfixed, and\n", + " - True - states variables are not unfixed, and\n", " a dict of returned containing flags for\n", " which states were fixed during\n", " initialization.\n", " - False - state variables are unfixed after\n", " initialization by calling the\n", - " relase_state method\n", + " release_state method\n", "\n", " Returns:\n", " If hold_states is True, returns a dict containing flags for\n", @@ -419,7 +419,7 @@ "\n", " def release_state(blk, flags, outlvl=0):\n", " '''\n", - " Method to relase state variables fixed during initialisation.\n", + " Method to release state variables fixed during initialisation.\n", "\n", " Keyword Arguments:\n", " flags : dict containing information of which state variables\n", diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding_doc.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding_doc.ipynb index 73bf7797..340a1de4 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding_doc.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding_doc.ipynb @@ -34,9 +34,9 @@ "\n", "## 1. Integration of Surrogate into Custom Property Package\n", "\n", - "Here we shall see how to integrate the trained surrogate in the custom property package. One can read more about making a properties package from read the docs. To integrate the surrogate we first define the physical paramter block which will return the properties based on the state variables. State variables would be called from the State Block as Pyomo variables. We will define the surrogate input and output as pyomo variables as well. Once we have defined the variables in the state block then we define our surrogate block.\n", + "Here we shall see how to integrate the trained surrogate in the custom property package. One can read more about making a properties package from read the docs. To integrate the surrogate we first define the physical parameter block which will return the properties based on the state variables. State variables would be called from the State Block as Pyomo variables. We will define the surrogate input and output as pyomo variables as well. Once we have defined the variables in the state block then we define our surrogate block.\n", "\n", - "*NOTE:* For ease of explaination the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practive all the classes in this notebook should be part of the same python script. This folder includes \"properties.py\" file which is how embedding file should look like. \n", + "*NOTE:* For ease of explanation the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practice all the classes in this notebook should be part of the same python script. This folder includes \"properties.py\" file which is how embedding file should look like. \n", "\n", "### 1.1 Steps in Creating a Property Package\n", "Creating a new property package can be broken down into the following steps, which will be demonstrated in the next part of this tutorial.\n", @@ -107,7 +107,7 @@ "source": [ "# 3 Defining Classes\n", "\n", - "We shall be going through each class of the property package in detail. Since there are not reactions occuring in the flowsheet we shall only write the Physical Parameter Block.\n", + "We shall be going through each class of the property package in detail. Since there are not reactions occurring in the flowsheet we shall only write the Physical Parameter Block.\n", "\n", "## 3.1 Physical Parameter Block\n", "\n", @@ -190,7 +190,7 @@ "\n", "1. Define the input and output variables to the trained surrogate\n", "2. Load the surrogate from the folder it is saved in, here it is saved in the folder called alamo_surrogate (look at the alamo_training_doc.md file) using the Alamopy Surrogate API of IDAES package\n", - "3. Define a `SurrogateBlock` and call the build_model method on the block with the input variables, output variables, model formulation and the loaded surrogate as the arguements. \n", + "3. Define a `SurrogateBlock` and call the build_model method on the block with the input variables, output variables, model formulation and the loaded surrogate as the arguments. \n", "4. Define the constraints necessary for ensuring physical feasibility of the system like the mass balance and energy balance. Check for the state variables to be within the bounds. \n" ] }, @@ -306,7 +306,7 @@ "3. `Return the state of the model` to where it originally started (with the exception of variable values). Any variable that was fixed or constraint that was deactivated during initialization should be unfixed or reactivated, so that the degrees of freedom are restored to what they were before the initialization began.\n", "\n", "\n", - "Thus, we start with fixing the state variables. Here since enth_mol and entr_mol are a function of pressure and temperature, we do not fix them as fixing pressure and temperature would interm fix them. So, we check if a state variable if fixed or not, if it is fixed then we do not change them, if they are not fixed then we check for an initial guess from the `state_args`, if we get a value then we fix the varible with state_args, else we fix it with the value provided by the user. This should bring the degrees of freedom to 0. Here since we do not have any variable/constrained that we have unfixed/deactivated we can skip step 2 and move to step 3. We unfix the variables that were fixed in step 1 using the `release_state` function. " + "Thus, we start with fixing the state variables. Here since enth_mol and entr_mol are a function of pressure and temperature, we do not fix them as fixing pressure and temperature would in turn fix them. So, we check if a state variable if fixed or not, if it is fixed then we do not change them, if they are not fixed then we check for an initial guess from the `state_args`, if we get a value then we fix the variable with state_args, else we fix it with the value provided by the user. This should bring the degrees of freedom to 0. Here since we do not have any variable/constrained that we have unfixed/deactivated we can skip step 2 and move to step 3. We unfix the variables that were fixed in step 1 using the `release_state` function. " ] }, { @@ -337,7 +337,7 @@ "\n", " * 0 = no output (default)\n", " * 1 = return solver state for each step in routine\n", - " * 2 = include solver output infomation (tee=True)\n", + " * 2 = include solver output information (tee=True)\n", " state_vars_fixed: Flag to denote if state vars have already been\n", " fixed.\n", " - True - states have already been fixed by the\n", @@ -348,18 +348,18 @@ " - False - states have not been fixed. The state\n", " block will deal with fixing/unfixing.\n", " optarg : solver options dictionary object (default=None)\n", - " solver : str indicating whcih solver to use during\n", + " solver : str indicating which solver to use during\n", " initialization (default = 'ipopt')\n", " hold_state : flag indicating whether the initialization routine\n", " should unfix any state variables fixed during\n", " initialization (default=False).\n", - " - True - states varaibles are not unfixed, and\n", + " - True - states variables are not unfixed, and\n", " a dict of returned containing flags for\n", " which states were fixed during\n", " initialization.\n", " - False - state variables are unfixed after\n", " initialization by calling the\n", - " relase_state method\n", + " release_state method\n", "\n", " Returns:\n", " If hold_states is True, returns a dict containing flags for\n", @@ -419,7 +419,7 @@ "\n", " def release_state(blk, flags, outlvl=0):\n", " '''\n", - " Method to relase state variables fixed during initialisation.\n", + " Method to release state variables fixed during initialisation.\n", "\n", " Keyword Arguments:\n", " flags : dict containing information of which state variables\n", diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding_test.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding_test.ipynb index bf32b875..da1eeb2f 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding_test.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding_test.ipynb @@ -34,9 +34,9 @@ "\n", "## 1. Integration of Surrogate into Custom Property Package\n", "\n", - "Here we shall see how to integrate the trained surrogate in the custom property package. One can read more about making a properties package from read the docs. To integrate the surrogate we first define the physical paramter block which will return the properties based on the state variables. State variables would be called from the State Block as Pyomo variables. We will define the surrogate input and output as pyomo variables as well. Once we have defined the variables in the state block then we define our surrogate block.\n", + "Here we shall see how to integrate the trained surrogate in the custom property package. One can read more about making a properties package from read the docs. To integrate the surrogate we first define the physical parameter block which will return the properties based on the state variables. State variables would be called from the State Block as Pyomo variables. We will define the surrogate input and output as pyomo variables as well. Once we have defined the variables in the state block then we define our surrogate block.\n", "\n", - "*NOTE:* For ease of explaination the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practive all the classes in this notebook should be part of the same python script. This folder includes \"properties.py\" file which is how embedding file should look like. \n", + "*NOTE:* For ease of explanation the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practice all the classes in this notebook should be part of the same python script. This folder includes \"properties.py\" file which is how embedding file should look like. \n", "\n", "### 1.1 Steps in Creating a Property Package\n", "Creating a new property package can be broken down into the following steps, which will be demonstrated in the next part of this tutorial.\n", @@ -107,7 +107,7 @@ "source": [ "# 3 Defining Classes\n", "\n", - "We shall be going through each class of the property package in detail. Since there are not reactions occuring in the flowsheet we shall only write the Physical Parameter Block.\n", + "We shall be going through each class of the property package in detail. Since there are not reactions occurring in the flowsheet we shall only write the Physical Parameter Block.\n", "\n", "## 3.1 Physical Parameter Block\n", "\n", @@ -190,7 +190,7 @@ "\n", "1. Define the input and output variables to the trained surrogate\n", "2. Load the surrogate from the folder it is saved in, here it is saved in the folder called alamo_surrogate (look at the alamo_training_test.ipynb file) using the Alamopy Surrogate API of IDAES package\n", - "3. Define a `SurrogateBlock` and call the build_model method on the block with the input variables, output variables, model formulation and the loaded surrogate as the arguements. \n", + "3. Define a `SurrogateBlock` and call the build_model method on the block with the input variables, output variables, model formulation and the loaded surrogate as the arguments. \n", "4. Define the constraints necessary for ensuring physical feasibility of the system like the mass balance and energy balance. Check for the state variables to be within the bounds. \n" ] }, @@ -306,7 +306,7 @@ "3. `Return the state of the model` to where it originally started (with the exception of variable values). Any variable that was fixed or constraint that was deactivated during initialization should be unfixed or reactivated, so that the degrees of freedom are restored to what they were before the initialization began.\n", "\n", "\n", - "Thus, we start with fixing the state variables. Here since enth_mol and entr_mol are a function of pressure and temperature, we do not fix them as fixing pressure and temperature would interm fix them. So, we check if a state variable if fixed or not, if it is fixed then we do not change them, if they are not fixed then we check for an initial guess from the `state_args`, if we get a value then we fix the varible with state_args, else we fix it with the value provided by the user. This should bring the degrees of freedom to 0. Here since we do not have any variable/constrained that we have unfixed/deactivated we can skip step 2 and move to step 3. We unfix the variables that were fixed in step 1 using the `release_state` function. " + "Thus, we start with fixing the state variables. Here since enth_mol and entr_mol are a function of pressure and temperature, we do not fix them as fixing pressure and temperature would in turn fix them. So, we check if a state variable if fixed or not, if it is fixed then we do not change them, if they are not fixed then we check for an initial guess from the `state_args`, if we get a value then we fix the variable with state_args, else we fix it with the value provided by the user. This should bring the degrees of freedom to 0. Here since we do not have any variable/constrained that we have unfixed/deactivated we can skip step 2 and move to step 3. We unfix the variables that were fixed in step 1 using the `release_state` function. " ] }, { @@ -337,7 +337,7 @@ "\n", " * 0 = no output (default)\n", " * 1 = return solver state for each step in routine\n", - " * 2 = include solver output infomation (tee=True)\n", + " * 2 = include solver output information (tee=True)\n", " state_vars_fixed: Flag to denote if state vars have already been\n", " fixed.\n", " - True - states have already been fixed by the\n", @@ -348,18 +348,18 @@ " - False - states have not been fixed. The state\n", " block will deal with fixing/unfixing.\n", " optarg : solver options dictionary object (default=None)\n", - " solver : str indicating whcih solver to use during\n", + " solver : str indicating which solver to use during\n", " initialization (default = 'ipopt')\n", " hold_state : flag indicating whether the initialization routine\n", " should unfix any state variables fixed during\n", " initialization (default=False).\n", - " - True - states varaibles are not unfixed, and\n", + " - True - states variables are not unfixed, and\n", " a dict of returned containing flags for\n", " which states were fixed during\n", " initialization.\n", " - False - state variables are unfixed after\n", " initialization by calling the\n", - " relase_state method\n", + " release_state method\n", "\n", " Returns:\n", " If hold_states is True, returns a dict containing flags for\n", @@ -419,7 +419,7 @@ "\n", " def release_state(blk, flags, outlvl=0):\n", " '''\n", - " Method to relase state variables fixed during initialisation.\n", + " Method to release state variables fixed during initialisation.\n", "\n", " Keyword Arguments:\n", " flags : dict containing information of which state variables\n", diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding_usr.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding_usr.ipynb index 184fc468..61223b2b 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding_usr.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding_usr.ipynb @@ -34,9 +34,9 @@ "\n", "## 1. Integration of Surrogate into Custom Property Package\n", "\n", - "Here we shall see how to integrate the trained surrogate in the custom property package. One can read more about making a properties package from read the docs. To integrate the surrogate we first define the physical paramter block which will return the properties based on the state variables. State variables would be called from the State Block as Pyomo variables. We will define the surrogate input and output as pyomo variables as well. Once we have defined the variables in the state block then we define our surrogate block.\n", + "Here we shall see how to integrate the trained surrogate in the custom property package. One can read more about making a properties package from read the docs. To integrate the surrogate we first define the physical parameter block which will return the properties based on the state variables. State variables would be called from the State Block as Pyomo variables. We will define the surrogate input and output as pyomo variables as well. Once we have defined the variables in the state block then we define our surrogate block.\n", "\n", - "*NOTE:* For ease of explaination the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practive all the classes in this notebook should be part of the same python script. This folder includes \"properties.py\" file which is how embedding file should look like. \n", + "*NOTE:* For ease of explanation the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practice all the classes in this notebook should be part of the same python script. This folder includes \"properties.py\" file which is how embedding file should look like. \n", "\n", "### 1.1 Steps in Creating a Property Package\n", "Creating a new property package can be broken down into the following steps, which will be demonstrated in the next part of this tutorial.\n", @@ -110,7 +110,7 @@ "source": [ "# 3 Defining Classes\n", "\n", - "We shall be going through each class of the property package in detail. Since there are not reactions occuring in the flowsheet we shall only write the Physical Parameter Block.\n", + "We shall be going through each class of the property package in detail. Since there are not reactions occurring in the flowsheet we shall only write the Physical Parameter Block.\n", "\n", "## 3.1 Physical Parameter Block\n", "\n", @@ -193,7 +193,7 @@ "\n", "1. Define the input and output variables to the trained surrogate\n", "2. Load the surrogate from the folder it is saved in, here it is saved in the folder called alamo_surrogate (look at the alamo_training_usr.ipynb file) using the Alamopy Surrogate API of IDAES package\n", - "3. Define a `SurrogateBlock` and call the build_model method on the block with the input variables, output variables, model formulation and the loaded surrogate as the arguements. \n", + "3. Define a `SurrogateBlock` and call the build_model method on the block with the input variables, output variables, model formulation and the loaded surrogate as the arguments. \n", "4. Define the constraints necessary for ensuring physical feasibility of the system like the mass balance and energy balance. Check for the state variables to be within the bounds. \n" ] }, @@ -309,7 +309,7 @@ "3. `Return the state of the model` to where it originally started (with the exception of variable values). Any variable that was fixed or constraint that was deactivated during initialization should be unfixed or reactivated, so that the degrees of freedom are restored to what they were before the initialization began.\n", "\n", "\n", - "Thus, we start with fixing the state variables. Here since enth_mol and entr_mol are a function of pressure and temperature, we do not fix them as fixing pressure and temperature would interm fix them. So, we check if a state variable if fixed or not, if it is fixed then we do not change them, if they are not fixed then we check for an initial guess from the `state_args`, if we get a value then we fix the varible with state_args, else we fix it with the value provided by the user. This should bring the degrees of freedom to 0. Here since we do not have any variable/constrained that we have unfixed/deactivated we can skip step 2 and move to step 3. We unfix the variables that were fixed in step 1 using the `release_state` function. " + "Thus, we start with fixing the state variables. Here since enth_mol and entr_mol are a function of pressure and temperature, we do not fix them as fixing pressure and temperature would in turn fix them. So, we check if a state variable if fixed or not, if it is fixed then we do not change them, if they are not fixed then we check for an initial guess from the `state_args`, if we get a value then we fix the variable with state_args, else we fix it with the value provided by the user. This should bring the degrees of freedom to 0. Here since we do not have any variable/constrained that we have unfixed/deactivated we can skip step 2 and move to step 3. We unfix the variables that were fixed in step 1 using the `release_state` function. " ] }, { @@ -340,7 +340,7 @@ "\n", " * 0 = no output (default)\n", " * 1 = return solver state for each step in routine\n", - " * 2 = include solver output infomation (tee=True)\n", + " * 2 = include solver output information (tee=True)\n", " state_vars_fixed: Flag to denote if state vars have already been\n", " fixed.\n", " - True - states have already been fixed by the\n", @@ -351,18 +351,18 @@ " - False - states have not been fixed. The state\n", " block will deal with fixing/unfixing.\n", " optarg : solver options dictionary object (default=None)\n", - " solver : str indicating whcih solver to use during\n", + " solver : str indicating which solver to use during\n", " initialization (default = 'ipopt')\n", " hold_state : flag indicating whether the initialization routine\n", " should unfix any state variables fixed during\n", " initialization (default=False).\n", - " - True - states varaibles are not unfixed, and\n", + " - True - states variables are not unfixed, and\n", " a dict of returned containing flags for\n", " which states were fixed during\n", " initialization.\n", " - False - state variables are unfixed after\n", " initialization by calling the\n", - " relase_state method\n", + " release_state method\n", "\n", " Returns:\n", " If hold_states is True, returns a dict containing flags for\n", @@ -422,7 +422,7 @@ "\n", " def release_state(blk, flags, outlvl=0):\n", " '''\n", - " Method to relase state variables fixed during initialisation.\n", + " Method to release state variables fixed during initialisation.\n", "\n", " Keyword Arguments:\n", " flags : dict containing information of which state variables\n", diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/omlt/flowsheet_optimization.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/flowsheet_optimization.ipynb index 2e240888..5a17df37 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/omlt/flowsheet_optimization.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/flowsheet_optimization.ipynb @@ -120,7 +120,7 @@ "source": [ "# 2. Constructing the flowsheet\n", "\n", - "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the properties.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguements, after which we connect them using Arcs as in the flowsheet above. \n", + "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the properties.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguments, after which we connect them using Arcs as in the flowsheet above. \n", "\n", "Once we have the connected flowsheet, we initialize individual unit models. Before initializing, we fix desired variables for the desired behavior of the unit model and then use `propagate_state` to pass on the state variables to next unit model in the flowsheet. After completely initializing the flowsheet, we convert the network to a mathematical form by using `network.expand_arcs` from the TransformationFactory and apply it on the flowsheet block. Then we call the solver and solve the flowsheet to calculate the total work in the process. " ] diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/omlt/flowsheet_optimization_doc.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/flowsheet_optimization_doc.ipynb index 44f8241f..921a163b 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/omlt/flowsheet_optimization_doc.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/flowsheet_optimization_doc.ipynb @@ -110,7 +110,7 @@ "source": [ "# 2. Constructing the flowsheet\n", "\n", - "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the properties.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguements, after which we connect them using Arcs as in the flowsheet above. \n", + "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the properties.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguments, after which we connect them using Arcs as in the flowsheet above. \n", "\n", "Once we have the connected flowsheet, we initialize individual unit models. Before initializing, we fix desired variables for the desired behavior of the unit model and then use `propagate_state` to pass on the state variables to next unit model in the flowsheet. After completely initializing the flowsheet, we convert the network to a mathematical form by using `network.expand_arcs` from the TransformationFactory and apply it on the flowsheet block. Then we call the solver and solve the flowsheet to calculate the total work in the process. " ] diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/omlt/flowsheet_optimization_test.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/flowsheet_optimization_test.ipynb index b8ed26f3..45b7dd73 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/omlt/flowsheet_optimization_test.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/flowsheet_optimization_test.ipynb @@ -110,7 +110,7 @@ "source": [ "# 2. Constructing the flowsheet\n", "\n", - "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the properties.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguements, after which we connect them using Arcs as in the flowsheet above. \n", + "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the properties.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguments, after which we connect them using Arcs as in the flowsheet above. \n", "\n", "Once we have the connected flowsheet, we initialize individual unit models. Before initializing, we fix desired variables for the desired behavior of the unit model and then use `propagate_state` to pass on the state variables to next unit model in the flowsheet. After completely initializing the flowsheet, we convert the network to a mathematical form by using `network.expand_arcs` from the TransformationFactory and apply it on the flowsheet block. Then we call the solver and solve the flowsheet to calculate the total work in the process. " ] diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/omlt/flowsheet_optimization_usr.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/flowsheet_optimization_usr.ipynb index b8ed26f3..45b7dd73 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/omlt/flowsheet_optimization_usr.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/flowsheet_optimization_usr.ipynb @@ -110,7 +110,7 @@ "source": [ "# 2. Constructing the flowsheet\n", "\n", - "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the properties.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguements, after which we connect them using Arcs as in the flowsheet above. \n", + "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the properties.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguments, after which we connect them using Arcs as in the flowsheet above. \n", "\n", "Once we have the connected flowsheet, we initialize individual unit models. Before initializing, we fix desired variables for the desired behavior of the unit model and then use `propagate_state` to pass on the state variables to next unit model in the flowsheet. After completely initializing the flowsheet, we convert the network to a mathematical form by using `network.expand_arcs` from the TransformationFactory and apply it on the flowsheet block. Then we call the solver and solve the flowsheet to calculate the total work in the process. " ] diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/omlt/keras_training.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/keras_training.ipynb index 9acc449d..32827f85 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/omlt/keras_training.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/keras_training.ipynb @@ -42,7 +42,7 @@ "### 1.1 Need for ML Surrogates\n", "\n", "The properties predicted by the surrogate are enthalpy and entropy of the S-CO2 based on the \n", - "pressure and temperature of the system. The analytical equation of getting the enthalpy and entropy from pressure and temperature are in the differential form and would make the problem a DAE system. To counter this problem and keep the problem algebric, we will use the ML surrogates and relate enthalpy and entropy with the pressure and temperature as an algebric equation.\n", + "pressure and temperature of the system. The analytical equation of getting the enthalpy and entropy from pressure and temperature are in the differential form and would make the problem a DAE system. To counter this problem and keep the problem algebraic, we will use the ML surrogates and relate enthalpy and entropy with the pressure and temperature as an algebraic equation.\n", "\n", "### 1.2 Supercritical CO2 cycle process\n", "\n", @@ -139,7 +139,7 @@ "\n", "In this section, we read the dataset from the CSV file located in this directory. 500 data points were simulated for S-CO2 physical properties using REFPROP package. This example is trained on the entire dataset because neural network can overfit on smaller dataset. The data is separated using an 80/20 split into training and validation data using the IDAES split_training_validation() method.\n", "\n", - "We rename the column headers because they contained \".\", which may cause errors while reading the column names in subsquent code, thus as a good practice we change them to the variable names to be used in the property package. Further, the input variables are **pressure**, **temperature** , while the output variables are **enth_mol**, **entr_mol**, hence we create two new dataframes for the input and output variables. " + "We rename the column headers because they contained \".\", which may cause errors while reading the column names in subsequent code, thus as a good practice we change them to the variable names to be used in the property package. Further, the input variables are **pressure**, **temperature** , while the output variables are **enth_mol**, **entr_mol**, hence we create two new dataframes for the input and output variables. " ] }, { diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/omlt/keras_training_doc.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/keras_training_doc.ipynb index 4b4d5aab..79bbaf1d 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/omlt/keras_training_doc.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/keras_training_doc.ipynb @@ -42,7 +42,7 @@ "### 1.1 Need for ML Surrogates\n", "\n", "The properties predicted by the surrogate are enthalpy and entropy of the S-CO2 based on the \n", - "pressure and temperature of the system. The analytical equation of getting the enthalpy and entropy from pressure and temperature are in the differential form and would make the problem a DAE system. To counter this problem and keep the problem algebric, we will use the ML surrogates and relate enthalpy and entropy with the pressure and temperature as an algebric equation.\n", + "pressure and temperature of the system. The analytical equation of getting the enthalpy and entropy from pressure and temperature are in the differential form and would make the problem a DAE system. To counter this problem and keep the problem algebraic, we will use the ML surrogates and relate enthalpy and entropy with the pressure and temperature as an algebraic equation.\n", "\n", "### 1.2 Supercritical CO2 cycle process\n", "\n", @@ -129,7 +129,7 @@ "\n", "In this section, we read the dataset from the CSV file located in this directory. 500 data points were simulated for S-CO2 physical properties using REFPROP package. This example is trained on the entire dataset because neural network can overfit on smaller dataset. The data is separated using an 80/20 split into training and validation data using the IDAES split_training_validation() method.\n", "\n", - "We rename the column headers because they contained \".\", which may cause errors while reading the column names in subsquent code, thus as a good practice we change them to the variable names to be used in the property package. Further, the input variables are **pressure**, **temperature** , while the output variables are **enth_mol**, **entr_mol**, hence we create two new dataframes for the input and output variables. " + "We rename the column headers because they contained \".\", which may cause errors while reading the column names in subsequent code, thus as a good practice we change them to the variable names to be used in the property package. Further, the input variables are **pressure**, **temperature** , while the output variables are **enth_mol**, **entr_mol**, hence we create two new dataframes for the input and output variables. " ] }, { diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/omlt/keras_training_test.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/keras_training_test.ipynb index cacf5254..a4c68e87 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/omlt/keras_training_test.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/keras_training_test.ipynb @@ -42,7 +42,7 @@ "### 1.1 Need for ML Surrogates\n", "\n", "The properties predicted by the surrogate are enthalpy and entropy of the S-CO2 based on the \n", - "pressure and temperature of the system. The analytical equation of getting the enthalpy and entropy from pressure and temperature are in the differential form and would make the problem a DAE system. To counter this problem and keep the problem algebric, we will use the ML surrogates and relate enthalpy and entropy with the pressure and temperature as an algebric equation.\n", + "pressure and temperature of the system. The analytical equation of getting the enthalpy and entropy from pressure and temperature are in the differential form and would make the problem a DAE system. To counter this problem and keep the problem algebraic, we will use the ML surrogates and relate enthalpy and entropy with the pressure and temperature as an algebraic equation.\n", "\n", "### 1.2 Supercritical CO2 cycle process\n", "\n", @@ -129,7 +129,7 @@ "\n", "In this section, we read the dataset from the CSV file located in this directory. 500 data points were simulated for S-CO2 physical properties using REFPROP package. This example is trained on the entire dataset because neural network can overfit on smaller dataset. The data is separated using an 80/20 split into training and validation data using the IDAES split_training_validation() method.\n", "\n", - "We rename the column headers because they contained \".\", which may cause errors while reading the column names in subsquent code, thus as a good practice we change them to the variable names to be used in the property package. Further, the input variables are **pressure**, **temperature** , while the output variables are **enth_mol**, **entr_mol**, hence we create two new dataframes for the input and output variables. " + "We rename the column headers because they contained \".\", which may cause errors while reading the column names in subsequent code, thus as a good practice we change them to the variable names to be used in the property package. Further, the input variables are **pressure**, **temperature** , while the output variables are **enth_mol**, **entr_mol**, hence we create two new dataframes for the input and output variables. " ] }, { diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/omlt/keras_training_usr.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/keras_training_usr.ipynb index 0b0c7558..f59ea874 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/omlt/keras_training_usr.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/keras_training_usr.ipynb @@ -42,7 +42,7 @@ "### 1.1 Need for ML Surrogates\n", "\n", "The properties predicted by the surrogate are enthalpy and entropy of the S-CO2 based on the \n", - "pressure and temperature of the system. The analytical equation of getting the enthalpy and entropy from pressure and temperature are in the differential form and would make the problem a DAE system. To counter this problem and keep the problem algebric, we will use the ML surrogates and relate enthalpy and entropy with the pressure and temperature as an algebric equation.\n", + "pressure and temperature of the system. The analytical equation of getting the enthalpy and entropy from pressure and temperature are in the differential form and would make the problem a DAE system. To counter this problem and keep the problem algebraic, we will use the ML surrogates and relate enthalpy and entropy with the pressure and temperature as an algebraic equation.\n", "\n", "### 1.2 Supercritical CO2 cycle process\n", "\n", @@ -129,7 +129,7 @@ "\n", "In this section, we read the dataset from the CSV file located in this directory. 500 data points were simulated for S-CO2 physical properties using REFPROP package. This example is trained on the entire dataset because neural network can overfit on smaller dataset. The data is separated using an 80/20 split into training and validation data using the IDAES split_training_validation() method.\n", "\n", - "We rename the column headers because they contained \".\", which may cause errors while reading the column names in subsquent code, thus as a good practice we change them to the variable names to be used in the property package. Further, the input variables are **pressure**, **temperature** , while the output variables are **enth_mol**, **entr_mol**, hence we create two new dataframes for the input and output variables. " + "We rename the column headers because they contained \".\", which may cause errors while reading the column names in subsequent code, thus as a good practice we change them to the variable names to be used in the property package. Further, the input variables are **pressure**, **temperature** , while the output variables are **enth_mol**, **entr_mol**, hence we create two new dataframes for the input and output variables. " ] }, { diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/omlt/properties.py b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/properties.py index 64101604..bde029c3 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/omlt/properties.py +++ b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/properties.py @@ -118,7 +118,7 @@ def initialize(blk, state_args=None, hold_state=False, outlvl=1, * 0 = no output (default) * 1 = return solver state for each step in routine - * 2 = include solver output infomation (tee=True) + * 2 = include solver output information (tee=True) state_vars_fixed: Flag to denote if state vars have already been fixed. - True - states have already been fixed by the @@ -129,18 +129,18 @@ def initialize(blk, state_args=None, hold_state=False, outlvl=1, - False - states have not been fixed. The state block will deal with fixing/unfixing. optarg : solver options dictionary object (default=None) - solver : str indicating whcih solver to use during + solver : str indicating which solver to use during initialization (default = 'ipopt') hold_state : flag indicating whether the initialization routine should unfix any state variables fixed during initialization (default=False). - - True - states varaibles are not unfixed, and + - True - states variables are not unfixed, and a dict of returned containing flags for which states were fixed during initialization. - False - state variables are unfixed after initialization by calling the - relase_state method + release_state method Returns: If hold_states is True, returns a dict containing flags for @@ -200,7 +200,7 @@ def initialize(blk, state_args=None, hold_state=False, outlvl=1, def release_state(blk, flags, outlvl=0): ''' - Method to relase state variables fixed during initialisation. + Method to release state variables fixed during initialisation. Keyword Arguments: flags : dict containing information of which state variables diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding.ipynb index 3af20892..a83738c4 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding.ipynb @@ -34,9 +34,9 @@ "\n", "## 1. Integration of Surrogate into Custom Property Package\n", "\n", - "Here we shall see how to integrate the trained surrogate in the custom property package. One can read more about making a properties package from read the docs. To integrate the surrogate we first define the physical paramter block which will return the properties based on the state variables. State variables would be called from the State Block as Pyomo variables. We will define the surrogate input and output as pyomo variables as well. Once we have defined the variables in the state block then we define our surrogate block.\n", + "Here we shall see how to integrate the trained surrogate in the custom property package. One can read more about making a properties package from read the docs. To integrate the surrogate we first define the physical parameter block which will return the properties based on the state variables. State variables would be called from the State Block as Pyomo variables. We will define the surrogate input and output as pyomo variables as well. Once we have defined the variables in the state block then we define our surrogate block.\n", "\n", - "*NOTE:* For ease of explaination the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practive all the classes in this notebook should be part of the same python script. This folder includes \"properties.py\" file which is how embedding file should look like. \n", + "*NOTE:* For ease of explanation the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practice all the classes in this notebook should be part of the same python script. This folder includes \"properties.py\" file which is how embedding file should look like. \n", "\n", "### 1.1 Steps in Creating a Property Package\n", "Creating a new property package can be broken down into the following steps, which will be demonstrated in the next part of this tutorial.\n", @@ -107,7 +107,7 @@ "source": [ "# 3 Defining Classes\n", "\n", - "We shall be going through each class of the property package in detail. Since there are not reactions occuring in the flowsheet we shall only write the Physical Parameter Block.\n", + "We shall be going through each class of the property package in detail. Since there are not reactions occurring in the flowsheet we shall only write the Physical Parameter Block.\n", "\n", "## 3.1 Physical Parameter Block\n", "\n", @@ -190,7 +190,7 @@ "\n", "1. Define the input and output variables to the trained surrogate\n", "2. Load the surrogate from the folder it is saved in, here it is saved in the folder called keras_surrogate (look at the keras_training.ipynb file) using the keras Surrogate API of IDAES package\n", - "3. Define a `SurrogateBlock` and call the build_model method on the block with the input variables, output variables, model formulation and the loaded surrogate as the arguements. \n", + "3. Define a `SurrogateBlock` and call the build_model method on the block with the input variables, output variables, model formulation and the loaded surrogate as the arguments. \n", "4. Define the constraints necessary for ensuring physical feasibility of the system like the mass balance and energy balance. Check for the state variables to be within the bounds. \n" ] }, @@ -301,7 +301,7 @@ "3. `Return the state of the model` to where it originally started (with the exception of variable values). Any variable that was fixed or constraint that was deactivated during initialization should be unfixed or reactivated, so that the degrees of freedom are restored to what they were before the initialization began.\n", "\n", "\n", - "Thus, we start with fixing the state variables. Here since enth_mol and entr_mol are a function of pressure and temperature, we do not fix them as fixing pressure and temperature would interm fix them. So, we check if a state variable if fixed or not, if it is fixed then we do not change them, if they are not fixed then we check for an initial guess from the `state_args`, if we get a value then we fix the varible with state_args, else we fix it with the value provided by the user. This should bring the degrees of freedom to 0. Here since we do not have any variable/constrained that we have unfixed/deactivated we can skip step 2 and move to step 3. We unfix the variables that were fixed in step 1 using the `release_state` function. " + "Thus, we start with fixing the state variables. Here since enth_mol and entr_mol are a function of pressure and temperature, we do not fix them as fixing pressure and temperature would inturn fix them. So, we check if a state variable if fixed or not, if it is fixed then we do not change them, if they are not fixed then we check for an initial guess from the `state_args`, if we get a value then we fix the variable with state_args, else we fix it with the value provided by the user. This should bring the degrees of freedom to 0. Here since we do not have any variable/constrained that we have unfixed/deactivated we can skip step 2 and move to step 3. We unfix the variables that were fixed in step 1 using the `release_state` function. " ] }, { @@ -332,7 +332,7 @@ "\n", " * 0 = no output (default)\n", " * 1 = return solver state for each step in routine\n", - " * 2 = include solver output infomation (tee=True)\n", + " * 2 = include solver output information (tee=True)\n", " state_vars_fixed: Flag to denote if state vars have already been\n", " fixed.\n", " - True - states have already been fixed by the\n", @@ -343,18 +343,18 @@ " - False - states have not been fixed. The state\n", " block will deal with fixing/unfixing.\n", " optarg : solver options dictionary object (default=None)\n", - " solver : str indicating whcih solver to use during\n", + " solver : str indicating which solver to use during\n", " initialization (default = 'ipopt')\n", " hold_state : flag indicating whether the initialization routine\n", " should unfix any state variables fixed during\n", " initialization (default=False).\n", - " - True - states varaibles are not unfixed, and\n", + " - True - states variables are not unfixed, and\n", " a dict of returned containing flags for\n", " which states were fixed during\n", " initialization.\n", " - False - state variables are unfixed after\n", " initialization by calling the\n", - " relase_state method\n", + " release_state method\n", "\n", " Returns:\n", " If hold_states is True, returns a dict containing flags for\n", @@ -414,7 +414,7 @@ "\n", " def release_state(blk, flags, outlvl=0):\n", " '''\n", - " Method to relase state variables fixed during initialisation.\n", + " Method to release state variables fixed during initialisation.\n", "\n", " Keyword Arguments:\n", " flags : dict containing information of which state variables\n", diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding_doc.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding_doc.ipynb index dba5cb3d..d880c31c 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding_doc.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding_doc.ipynb @@ -33,9 +33,9 @@ "Updated: 2024-01-24\n", "## 1. Integration of Surrogate into Custom Property Package\n", "\n", - "Here we shall see how to integrate the trained surrogate in the custom property package. One can read more about making a properties package from read the docs. To integrate the surrogate we first define the physical paramter block which will return the properties based on the state variables. State variables would be called from the State Block as Pyomo variables. We will define the surrogate input and output as pyomo variables as well. Once we have defined the variables in the state block then we define our surrogate block.\n", + "Here we shall see how to integrate the trained surrogate in the custom property package. One can read more about making a properties package from read the docs. To integrate the surrogate we first define the physical parameter block which will return the properties based on the state variables. State variables would be called from the State Block as Pyomo variables. We will define the surrogate input and output as pyomo variables as well. Once we have defined the variables in the state block then we define our surrogate block.\n", "\n", - "*NOTE:* For ease of explaination the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practive all the classes in this notebook should be part of the same python script. This folder includes \"properties.py\" file which is how embedding file should look like. \n", + "*NOTE:* For ease of explanation the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practice all the classes in this notebook should be part of the same python script. This folder includes \"properties.py\" file which is how embedding file should look like. \n", "\n", "### 1.1 Steps in Creating a Property Package\n", "Creating a new property package can be broken down into the following steps, which will be demonstrated in the next part of this tutorial.\n", @@ -106,7 +106,7 @@ "source": [ "# 3 Defining Classes\n", "\n", - "We shall be going through each class of the property package in detail. Since there are not reactions occuring in the flowsheet we shall only write the Physical Parameter Block.\n", + "We shall be going through each class of the property package in detail. Since there are not reactions occurring in the flowsheet we shall only write the Physical Parameter Block.\n", "\n", "## 3.1 Physical Parameter Block\n", "\n", @@ -189,7 +189,7 @@ "\n", "1. Define the input and output variables to the trained surrogate\n", "2. Load the surrogate from the folder it is saved in, here it is saved in the folder called keras_surrogate (look at the keras_training_doc.md file) using the keras Surrogate API of IDAES package\n", - "3. Define a `SurrogateBlock` and call the build_model method on the block with the input variables, output variables, model formulation and the loaded surrogate as the arguements. \n", + "3. Define a `SurrogateBlock` and call the build_model method on the block with the input variables, output variables, model formulation and the loaded surrogate as the arguments. \n", "4. Define the constraints necessary for ensuring physical feasibility of the system like the mass balance and energy balance. Check for the state variables to be within the bounds. \n" ] }, @@ -300,7 +300,7 @@ "3. `Return the state of the model` to where it originally started (with the exception of variable values). Any variable that was fixed or constraint that was deactivated during initialization should be unfixed or reactivated, so that the degrees of freedom are restored to what they were before the initialization began.\n", "\n", "\n", - "Thus, we start with fixing the state variables. Here since enth_mol and entr_mol are a function of pressure and temperature, we do not fix them as fixing pressure and temperature would interm fix them. So, we check if a state variable if fixed or not, if it is fixed then we do not change them, if they are not fixed then we check for an initial guess from the `state_args`, if we get a value then we fix the varible with state_args, else we fix it with the value provided by the user. This should bring the degrees of freedom to 0. Here since we do not have any variable/constrained that we have unfixed/deactivated we can skip step 2 and move to step 3. We unfix the variables that were fixed in step 1 using the `release_state` function. " + "Thus, we start with fixing the state variables. Here since enth_mol and entr_mol are a function of pressure and temperature, we do not fix them as fixing pressure and temperature would inturn fix them. So, we check if a state variable if fixed or not, if it is fixed then we do not change them, if they are not fixed then we check for an initial guess from the `state_args`, if we get a value then we fix the variable with state_args, else we fix it with the value provided by the user. This should bring the degrees of freedom to 0. Here since we do not have any variable/constrained that we have unfixed/deactivated we can skip step 2 and move to step 3. We unfix the variables that were fixed in step 1 using the `release_state` function. " ] }, { @@ -331,7 +331,7 @@ "\n", " * 0 = no output (default)\n", " * 1 = return solver state for each step in routine\n", - " * 2 = include solver output infomation (tee=True)\n", + " * 2 = include solver output information (tee=True)\n", " state_vars_fixed: Flag to denote if state vars have already been\n", " fixed.\n", " - True - states have already been fixed by the\n", @@ -342,18 +342,18 @@ " - False - states have not been fixed. The state\n", " block will deal with fixing/unfixing.\n", " optarg : solver options dictionary object (default=None)\n", - " solver : str indicating whcih solver to use during\n", + " solver : str indicating which solver to use during\n", " initialization (default = 'ipopt')\n", " hold_state : flag indicating whether the initialization routine\n", " should unfix any state variables fixed during\n", " initialization (default=False).\n", - " - True - states varaibles are not unfixed, and\n", + " - True - states variables are not unfixed, and\n", " a dict of returned containing flags for\n", " which states were fixed during\n", " initialization.\n", " - False - state variables are unfixed after\n", " initialization by calling the\n", - " relase_state method\n", + " release_state method\n", "\n", " Returns:\n", " If hold_states is True, returns a dict containing flags for\n", @@ -413,7 +413,7 @@ "\n", " def release_state(blk, flags, outlvl=0):\n", " '''\n", - " Method to relase state variables fixed during initialisation.\n", + " Method to release state variables fixed during initialisation.\n", "\n", " Keyword Arguments:\n", " flags : dict containing information of which state variables\n", diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding_test.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding_test.ipynb index cdd26cd6..d3328bcd 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding_test.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding_test.ipynb @@ -33,9 +33,9 @@ "Updated: 2024-01-24\n", "## 1. Integration of Surrogate into Custom Property Package\n", "\n", - "Here we shall see how to integrate the trained surrogate in the custom property package. One can read more about making a properties package from read the docs. To integrate the surrogate we first define the physical paramter block which will return the properties based on the state variables. State variables would be called from the State Block as Pyomo variables. We will define the surrogate input and output as pyomo variables as well. Once we have defined the variables in the state block then we define our surrogate block.\n", + "Here we shall see how to integrate the trained surrogate in the custom property package. One can read more about making a properties package from read the docs. To integrate the surrogate we first define the physical parameter block which will return the properties based on the state variables. State variables would be called from the State Block as Pyomo variables. We will define the surrogate input and output as pyomo variables as well. Once we have defined the variables in the state block then we define our surrogate block.\n", "\n", - "*NOTE:* For ease of explaination the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practive all the classes in this notebook should be part of the same python script. This folder includes \"properties.py\" file which is how embedding file should look like. \n", + "*NOTE:* For ease of explanation the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practice all the classes in this notebook should be part of the same python script. This folder includes \"properties.py\" file which is how embedding file should look like. \n", "\n", "### 1.1 Steps in Creating a Property Package\n", "Creating a new property package can be broken down into the following steps, which will be demonstrated in the next part of this tutorial.\n", @@ -108,7 +108,7 @@ "source": [ "# 3 Defining Classes\n", "\n", - "We shall be going through each class of the property package in detail. Since there are not reactions occuring in the flowsheet we shall only write the Physical Parameter Block.\n", + "We shall be going through each class of the property package in detail. Since there are not reactions occurring in the flowsheet we shall only write the Physical Parameter Block.\n", "\n", "## 3.1 Physical Parameter Block\n", "\n", @@ -191,7 +191,7 @@ "\n", "1. Define the input and output variables to the trained surrogate\n", "2. Load the surrogate from the folder it is saved in, here it is saved in the folder called keras_surrogate (look at the keras_training_test.ipynb file) using the keras Surrogate API of IDAES package\n", - "3. Define a `SurrogateBlock` and call the build_model method on the block with the input variables, output variables, model formulation and the loaded surrogate as the arguements. \n", + "3. Define a `SurrogateBlock` and call the build_model method on the block with the input variables, output variables, model formulation and the loaded surrogate as the arguments. \n", "4. Define the constraints necessary for ensuring physical feasibility of the system like the mass balance and energy balance. Check for the state variables to be within the bounds. \n" ] }, @@ -302,7 +302,7 @@ "3. `Return the state of the model` to where it originally started (with the exception of variable values). Any variable that was fixed or constraint that was deactivated during initialization should be unfixed or reactivated, so that the degrees of freedom are restored to what they were before the initialization began.\n", "\n", "\n", - "Thus, we start with fixing the state variables. Here since enth_mol and entr_mol are a function of pressure and temperature, we do not fix them as fixing pressure and temperature would interm fix them. So, we check if a state variable if fixed or not, if it is fixed then we do not change them, if they are not fixed then we check for an initial guess from the `state_args`, if we get a value then we fix the varible with state_args, else we fix it with the value provided by the user. This should bring the degrees of freedom to 0. Here since we do not have any variable/constrained that we have unfixed/deactivated we can skip step 2 and move to step 3. We unfix the variables that were fixed in step 1 using the `release_state` function. " + "Thus, we start with fixing the state variables. Here since enth_mol and entr_mol are a function of pressure and temperature, we do not fix them as fixing pressure and temperature would inturn fix them. So, we check if a state variable if fixed or not, if it is fixed then we do not change them, if they are not fixed then we check for an initial guess from the `state_args`, if we get a value then we fix the variable with state_args, else we fix it with the value provided by the user. This should bring the degrees of freedom to 0. Here since we do not have any variable/constrained that we have unfixed/deactivated we can skip step 2 and move to step 3. We unfix the variables that were fixed in step 1 using the `release_state` function. " ] }, { @@ -333,7 +333,7 @@ "\n", " * 0 = no output (default)\n", " * 1 = return solver state for each step in routine\n", - " * 2 = include solver output infomation (tee=True)\n", + " * 2 = include solver output information (tee=True)\n", " state_vars_fixed: Flag to denote if state vars have already been\n", " fixed.\n", " - True - states have already been fixed by the\n", @@ -344,18 +344,18 @@ " - False - states have not been fixed. The state\n", " block will deal with fixing/unfixing.\n", " optarg : solver options dictionary object (default=None)\n", - " solver : str indicating whcih solver to use during\n", + " solver : str indicating which solver to use during\n", " initialization (default = 'ipopt')\n", " hold_state : flag indicating whether the initialization routine\n", " should unfix any state variables fixed during\n", " initialization (default=False).\n", - " - True - states varaibles are not unfixed, and\n", + " - True - states variables are not unfixed, and\n", " a dict of returned containing flags for\n", " which states were fixed during\n", " initialization.\n", " - False - state variables are unfixed after\n", " initialization by calling the\n", - " relase_state method\n", + " release_state method\n", "\n", " Returns:\n", " If hold_states is True, returns a dict containing flags for\n", @@ -415,7 +415,7 @@ "\n", " def release_state(blk, flags, outlvl=0):\n", " '''\n", - " Method to relase state variables fixed during initialisation.\n", + " Method to release state variables fixed during initialisation.\n", "\n", " Keyword Arguments:\n", " flags : dict containing information of which state variables\n", diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding_usr.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding_usr.ipynb index 40bbecf5..bdae332b 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding_usr.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding_usr.ipynb @@ -33,9 +33,9 @@ "Updated: 2024-01-24\n", "## 1. Integration of Surrogate into Custom Property Package\n", "\n", - "Here we shall see how to integrate the trained surrogate in the custom property package. One can read more about making a properties package from read the docs. To integrate the surrogate we first define the physical paramter block which will return the properties based on the state variables. State variables would be called from the State Block as Pyomo variables. We will define the surrogate input and output as pyomo variables as well. Once we have defined the variables in the state block then we define our surrogate block.\n", + "Here we shall see how to integrate the trained surrogate in the custom property package. One can read more about making a properties package from read the docs. To integrate the surrogate we first define the physical parameter block which will return the properties based on the state variables. State variables would be called from the State Block as Pyomo variables. We will define the surrogate input and output as pyomo variables as well. Once we have defined the variables in the state block then we define our surrogate block.\n", "\n", - "*NOTE:* For ease of explaination the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practive all the classes in this notebook should be part of the same python script. This folder includes \"properties.py\" file which is how embedding file should look like. \n", + "*NOTE:* For ease of explanation the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practice all the classes in this notebook should be part of the same python script. This folder includes \"properties.py\" file which is how embedding file should look like. \n", "\n", "### 1.1 Steps in Creating a Property Package\n", "Creating a new property package can be broken down into the following steps, which will be demonstrated in the next part of this tutorial.\n", @@ -106,7 +106,7 @@ "source": [ "# 3 Defining Classes\n", "\n", - "We shall be going through each class of the property package in detail. Since there are not reactions occuring in the flowsheet we shall only write the Physical Parameter Block.\n", + "We shall be going through each class of the property package in detail. Since there are not reactions occurring in the flowsheet we shall only write the Physical Parameter Block.\n", "\n", "## 3.1 Physical Parameter Block\n", "\n", @@ -189,7 +189,7 @@ "\n", "1. Define the input and output variables to the trained surrogate\n", "2. Load the surrogate from the folder it is saved in, here it is saved in the folder called keras_surrogate (look at the keras_training_usr.ipynb file) using the keras Surrogate API of IDAES package\n", - "3. Define a `SurrogateBlock` and call the build_model method on the block with the input variables, output variables, model formulation and the loaded surrogate as the arguements. \n", + "3. Define a `SurrogateBlock` and call the build_model method on the block with the input variables, output variables, model formulation and the loaded surrogate as the arguments. \n", "4. Define the constraints necessary for ensuring physical feasibility of the system like the mass balance and energy balance. Check for the state variables to be within the bounds. \n" ] }, @@ -300,7 +300,7 @@ "3. `Return the state of the model` to where it originally started (with the exception of variable values). Any variable that was fixed or constraint that was deactivated during initialization should be unfixed or reactivated, so that the degrees of freedom are restored to what they were before the initialization began.\n", "\n", "\n", - "Thus, we start with fixing the state variables. Here since enth_mol and entr_mol are a function of pressure and temperature, we do not fix them as fixing pressure and temperature would interm fix them. So, we check if a state variable if fixed or not, if it is fixed then we do not change them, if they are not fixed then we check for an initial guess from the `state_args`, if we get a value then we fix the varible with state_args, else we fix it with the value provided by the user. This should bring the degrees of freedom to 0. Here since we do not have any variable/constrained that we have unfixed/deactivated we can skip step 2 and move to step 3. We unfix the variables that were fixed in step 1 using the `release_state` function. " + "Thus, we start with fixing the state variables. Here since enth_mol and entr_mol are a function of pressure and temperature, we do not fix them as fixing pressure and temperature would inturn fix them. So, we check if a state variable if fixed or not, if it is fixed then we do not change them, if they are not fixed then we check for an initial guess from the `state_args`, if we get a value then we fix the variable with state_args, else we fix it with the value provided by the user. This should bring the degrees of freedom to 0. Here since we do not have any variable/constrained that we have unfixed/deactivated we can skip step 2 and move to step 3. We unfix the variables that were fixed in step 1 using the `release_state` function. " ] }, { @@ -331,7 +331,7 @@ "\n", " * 0 = no output (default)\n", " * 1 = return solver state for each step in routine\n", - " * 2 = include solver output infomation (tee=True)\n", + " * 2 = include solver output information (tee=True)\n", " state_vars_fixed: Flag to denote if state vars have already been\n", " fixed.\n", " - True - states have already been fixed by the\n", @@ -342,18 +342,18 @@ " - False - states have not been fixed. The state\n", " block will deal with fixing/unfixing.\n", " optarg : solver options dictionary object (default=None)\n", - " solver : str indicating whcih solver to use during\n", + " solver : str indicating which solver to use during\n", " initialization (default = 'ipopt')\n", " hold_state : flag indicating whether the initialization routine\n", " should unfix any state variables fixed during\n", " initialization (default=False).\n", - " - True - states varaibles are not unfixed, and\n", + " - True - states variables are not unfixed, and\n", " a dict of returned containing flags for\n", " which states were fixed during\n", " initialization.\n", " - False - state variables are unfixed after\n", " initialization by calling the\n", - " relase_state method\n", + " release_state method\n", "\n", " Returns:\n", " If hold_states is True, returns a dict containing flags for\n", @@ -413,7 +413,7 @@ "\n", " def release_state(blk, flags, outlvl=0):\n", " '''\n", - " Method to relase state variables fixed during initialisation.\n", + " Method to release state variables fixed during initialisation.\n", "\n", " Keyword Arguments:\n", " flags : dict containing information of which state variables\n", diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/flowsheet_optimization.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/flowsheet_optimization.ipynb index 9e79daba..a9b36bf2 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/flowsheet_optimization.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/flowsheet_optimization.ipynb @@ -112,7 +112,7 @@ "source": [ "# 2. Constructing the flowsheet\n", "\n", - "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the properties.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguements, after which we connect them using Arcs as in the flowsheet above. \n", + "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the properties.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguments, after which we connect them using Arcs as in the flowsheet above. \n", "\n", "Once we have the connected flowsheet, we initialize individual unit models. Before initializing, we fix desired variables for the desired behavior of the unit model and then use `propagate_state` to pass on the state variables to next unit model in the flowsheet. After completely initializing the flowsheet, we convert the network to a mathematical form by using `network.expand_arcs` from the TransformationFactory and apply it on the flowsheet block. Then we call the solver and solve the flowsheet to calculate the total work in the process. " ] diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/flowsheet_optimization_doc.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/flowsheet_optimization_doc.ipynb index 1be8ad23..a1eb955e 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/flowsheet_optimization_doc.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/flowsheet_optimization_doc.ipynb @@ -110,7 +110,7 @@ "source": [ "# 2. Constructing the flowsheet\n", "\n", - "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the properties.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguements, after which we connect them using Arcs as in the flowsheet above. \n", + "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the properties.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguments, after which we connect them using Arcs as in the flowsheet above. \n", "\n", "Once we have the connected flowsheet, we initialize individual unit models. Before initializing, we fix desired variables for the desired behavior of the unit model and then use `propagate_state` to pass on the state variables to next unit model in the flowsheet. After completely initializing the flowsheet, we convert the network to a mathematical form by using `network.expand_arcs` from the TransformationFactory and apply it on the flowsheet block. Then we call the solver and solve the flowsheet to calculate the total work in the process. " ] diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/flowsheet_optimization_test.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/flowsheet_optimization_test.ipynb index 1be8ad23..a1eb955e 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/flowsheet_optimization_test.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/flowsheet_optimization_test.ipynb @@ -110,7 +110,7 @@ "source": [ "# 2. Constructing the flowsheet\n", "\n", - "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the properties.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguements, after which we connect them using Arcs as in the flowsheet above. \n", + "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the properties.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguments, after which we connect them using Arcs as in the flowsheet above. \n", "\n", "Once we have the connected flowsheet, we initialize individual unit models. Before initializing, we fix desired variables for the desired behavior of the unit model and then use `propagate_state` to pass on the state variables to next unit model in the flowsheet. After completely initializing the flowsheet, we convert the network to a mathematical form by using `network.expand_arcs` from the TransformationFactory and apply it on the flowsheet block. Then we call the solver and solve the flowsheet to calculate the total work in the process. " ] diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/flowsheet_optimization_usr.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/flowsheet_optimization_usr.ipynb index 1be8ad23..a1eb955e 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/flowsheet_optimization_usr.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/flowsheet_optimization_usr.ipynb @@ -110,7 +110,7 @@ "source": [ "# 2. Constructing the flowsheet\n", "\n", - "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the properties.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguements, after which we connect them using Arcs as in the flowsheet above. \n", + "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the properties.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguments, after which we connect them using Arcs as in the flowsheet above. \n", "\n", "Once we have the connected flowsheet, we initialize individual unit models. Before initializing, we fix desired variables for the desired behavior of the unit model and then use `propagate_state` to pass on the state variables to next unit model in the flowsheet. After completely initializing the flowsheet, we convert the network to a mathematical form by using `network.expand_arcs` from the TransformationFactory and apply it on the flowsheet block. Then we call the solver and solve the flowsheet to calculate the total work in the process. " ] diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/properties.py b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/properties.py index e8c8528f..af06a238 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/properties.py +++ b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/properties.py @@ -119,7 +119,7 @@ def initialize(blk, state_args=None, hold_state=False, outlvl=1, * 0 = no output (default) * 1 = return solver state for each step in routine - * 2 = include solver output infomation (tee=True) + * 2 = include solver output information (tee=True) state_vars_fixed: Flag to denote if state vars have already been fixed. - True - states have already been fixed by the @@ -130,18 +130,18 @@ def initialize(blk, state_args=None, hold_state=False, outlvl=1, - False - states have not been fixed. The state block will deal with fixing/unfixing. optarg : solver options dictionary object (default=None) - solver : str indicating whcih solver to use during + solver : str indicating which solver to use during initialization (default = 'ipopt') hold_state : flag indicating whether the initialization routine should unfix any state variables fixed during initialization (default=False). - - True - states varaibles are not unfixed, and + - True - states variables are not unfixed, and a dict of returned containing flags for which states were fixed during initialization. - False - state variables are unfixed after initialization by calling the - relase_state method + release_state method Returns: If hold_states is True, returns a dict containing flags for @@ -201,7 +201,7 @@ def initialize(blk, state_args=None, hold_state=False, outlvl=1, def release_state(blk, flags, outlvl=0): ''' - Method to relase state variables fixed during initialisation. + Method to release state variables fixed during initialisation. Keyword Arguments: flags : dict containing information of which state variables diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/pysmo_training.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/pysmo_training.ipynb index d48df4a0..c9baee3f 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/pysmo_training.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/pysmo_training.ipynb @@ -41,7 +41,7 @@ "### 1.1 Need for ML Surrogates\n", "\n", "The properties predicted by the surrogate are enthalpy and entropy of the S-CO2 based on the \n", - "pressure and temperature of the system. The analytical equation of getting the enthalpy and entropy from pressure and temperature are in the differential form and would make the problem a DAE system. To counter this problem and keep the problem algebric, we will use the ML surrogates and relate enthalpy and entropy with the pressure and temperature as an algebric equation.\n", + "pressure and temperature of the system. The analytical equation of getting the enthalpy and entropy from pressure and temperature are in the differential form and would make the problem a DAE system. To counter this problem and keep the problem algebraic, we will use the ML surrogates and relate enthalpy and entropy with the pressure and temperature as an algebraic equation.\n", "\n", "### 1.2 Supercritical CO2 cycle process\n", "\n", @@ -117,7 +117,7 @@ "\n", "In this section, we read the dataset from the CSV file located in this directory. 500 data points were simulated for S-CO2 physical properties using REFPROP package. This example is trained on the entire dataset because neural network can overfit on smaller dataset. The data is separated using an 80/20 split into training and validation data using the IDAES split_training_validation() method.\n", "\n", - "We rename the column headers because they contained \".\", which may cause errors while reading the column names in subsquent code, thus as a good practice we change them to the variable names to be used in the property package. Further, the input variables are **pressure**, **temperature** , while the output variables are **enth_mol**, **entr_mol**, hence we create two new dataframes for the input and output variables. " + "We rename the column headers because they contained \".\", which may cause errors while reading the column names in subsequent code, thus as a good practice we change them to the variable names to be used in the property package. Further, the input variables are **pressure**, **temperature** , while the output variables are **enth_mol**, **entr_mol**, hence we create two new dataframes for the input and output variables. " ] }, { diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/pysmo_training_doc.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/pysmo_training_doc.ipynb index d85593b8..f28f5e92 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/pysmo_training_doc.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/pysmo_training_doc.ipynb @@ -41,7 +41,7 @@ "### 1.1 Need for ML Surrogates\n", "\n", "The properties predicted by the surrogate are enthalpy and entropy of the S-CO2 based on the \n", - "pressure and temperature of the system. The analytical equation of getting the enthalpy and entropy from pressure and temperature are in the differential form and would make the problem a DAE system. To counter this problem and keep the problem algebric, we will use the ML surrogates and relate enthalpy and entropy with the pressure and temperature as an algebric equation.\n", + "pressure and temperature of the system. The analytical equation of getting the enthalpy and entropy from pressure and temperature are in the differential form and would make the problem a DAE system. To counter this problem and keep the problem algebraic, we will use the ML surrogates and relate enthalpy and entropy with the pressure and temperature as an algebraic equation.\n", "\n", "### 1.2 Supercritical CO2 cycle process\n", "\n", @@ -117,7 +117,7 @@ "\n", "In this section, we read the dataset from the CSV file located in this directory. 500 data points were simulated for S-CO2 physical properties using REFPROP package. This example is trained on the entire dataset because neural network can overfit on smaller dataset. The data is separated using an 80/20 split into training and validation data using the IDAES split_training_validation() method.\n", "\n", - "We rename the column headers because they contained \".\", which may cause errors while reading the column names in subsquent code, thus as a good practice we change them to the variable names to be used in the property package. Further, the input variables are **pressure**, **temperature** , while the output variables are **enth_mol**, **entr_mol**, hence we create two new dataframes for the input and output variables. " + "We rename the column headers because they contained \".\", which may cause errors while reading the column names in subsequent code, thus as a good practice we change them to the variable names to be used in the property package. Further, the input variables are **pressure**, **temperature** , while the output variables are **enth_mol**, **entr_mol**, hence we create two new dataframes for the input and output variables. " ] }, { diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/pysmo_training_test.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/pysmo_training_test.ipynb index 13044384..7ecb22fe 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/pysmo_training_test.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/pysmo_training_test.ipynb @@ -41,7 +41,7 @@ "### 1.1 Need for ML Surrogates\n", "\n", "The properties predicted by the surrogate are enthalpy and entropy of the S-CO2 based on the \n", - "pressure and temperature of the system. The analytical equation of getting the enthalpy and entropy from pressure and temperature are in the differential form and would make the problem a DAE system. To counter this problem and keep the problem algebric, we will use the ML surrogates and relate enthalpy and entropy with the pressure and temperature as an algebric equation.\n", + "pressure and temperature of the system. The analytical equation of getting the enthalpy and entropy from pressure and temperature are in the differential form and would make the problem a DAE system. To counter this problem and keep the problem algebraic, we will use the ML surrogates and relate enthalpy and entropy with the pressure and temperature as an algebraic equation.\n", "\n", "### 1.2 Supercritical CO2 cycle process\n", "\n", @@ -117,7 +117,7 @@ "\n", "In this section, we read the dataset from the CSV file located in this directory. 500 data points were simulated for S-CO2 physical properties using REFPROP package. This example is trained on the entire dataset because neural network can overfit on smaller dataset. The data is separated using an 80/20 split into training and validation data using the IDAES split_training_validation() method.\n", "\n", - "We rename the column headers because they contained \".\", which may cause errors while reading the column names in subsquent code, thus as a good practice we change them to the variable names to be used in the property package. Further, the input variables are **pressure**, **temperature** , while the output variables are **enth_mol**, **entr_mol**, hence we create two new dataframes for the input and output variables. " + "We rename the column headers because they contained \".\", which may cause errors while reading the column names in subsequent code, thus as a good practice we change them to the variable names to be used in the property package. Further, the input variables are **pressure**, **temperature** , while the output variables are **enth_mol**, **entr_mol**, hence we create two new dataframes for the input and output variables. " ] }, { diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/pysmo_training_usr.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/pysmo_training_usr.ipynb index ed8d224c..46e17535 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/pysmo_training_usr.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/pysmo_training_usr.ipynb @@ -41,7 +41,7 @@ "### 1.1 Need for ML Surrogates\n", "\n", "The properties predicted by the surrogate are enthalpy and entropy of the S-CO2 based on the \n", - "pressure and temperature of the system. The analytical equation of getting the enthalpy and entropy from pressure and temperature are in the differential form and would make the problem a DAE system. To counter this problem and keep the problem algebric, we will use the ML surrogates and relate enthalpy and entropy with the pressure and temperature as an algebric equation.\n", + "pressure and temperature of the system. The analytical equation of getting the enthalpy and entropy from pressure and temperature are in the differential form and would make the problem a DAE system. To counter this problem and keep the problem algebraic, we will use the ML surrogates and relate enthalpy and entropy with the pressure and temperature as an algebraic equation.\n", "\n", "### 1.2 Supercritical CO2 cycle process\n", "\n", @@ -117,7 +117,7 @@ "\n", "In this section, we read the dataset from the CSV file located in this directory. 500 data points were simulated for S-CO2 physical properties using REFPROP package. This example is trained on the entire dataset because neural network can overfit on smaller dataset. The data is separated using an 80/20 split into training and validation data using the IDAES split_training_validation() method.\n", "\n", - "We rename the column headers because they contained \".\", which may cause errors while reading the column names in subsquent code, thus as a good practice we change them to the variable names to be used in the property package. Further, the input variables are **pressure**, **temperature** , while the output variables are **enth_mol**, **entr_mol**, hence we create two new dataframes for the input and output variables. " + "We rename the column headers because they contained \".\", which may cause errors while reading the column names in subsequent code, thus as a good practice we change them to the variable names to be used in the property package. Further, the input variables are **pressure**, **temperature** , while the output variables are **enth_mol**, **entr_mol**, hence we create two new dataframes for the input and output variables. " ] }, { diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/surrogate_embedding.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/surrogate_embedding.ipynb index a2b04ccc..acf8997a 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/surrogate_embedding.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/surrogate_embedding.ipynb @@ -32,9 +32,9 @@ "Updated: 2024-01-24\n", "## 1. Integration of Surrogate into Custom Property Package\n", "\n", - "Here we shall see how to integrate the trained surrogate in the custom property package. One can read more about making a properties package from read the docs. To integrate the surrogate we first define the physical paramter block which will return the properties based on the state variables. State variables would be called from the State Block as Pyomo variables. We will define the surrogate input and output as pyomo variables as well. Once we have defined the variables in the state block then we define our surrogate block.\n", + "Here we shall see how to integrate the trained surrogate in the custom property package. One can read more about making a properties package from read the docs. To integrate the surrogate we first define the physical parameter block which will return the properties based on the state variables. State variables would be called from the State Block as Pyomo variables. We will define the surrogate input and output as pyomo variables as well. Once we have defined the variables in the state block then we define our surrogate block.\n", "\n", - "*NOTE:* For ease of explaination the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practive all the classes in this notebook should be part of the same python script. This folder includes \"properties.py\" file which is how embedding file should look like. \n", + "*NOTE:* For ease of explanation the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practice all the classes in this notebook should be part of the same python script. This folder includes \"properties.py\" file which is how embedding file should look like. \n", "\n", "### 1.1 Steps in Creating a Property Package\n", "Creating a new property package can be broken down into the following steps, which will be demonstrated in the next part of this tutorial.\n", @@ -105,7 +105,7 @@ "source": [ "# 3 Defining Classes\n", "\n", - "We shall be going through each class of the property package in detail. Since there are not reactions occuring in the flowsheet we shall only write the Physical Parameter Block.\n", + "We shall be going through each class of the property package in detail. Since there are not reactions occurring in the flowsheet we shall only write the Physical Parameter Block.\n", "\n", "## 3.1 Physical Parameter Block\n", "\n", @@ -189,7 +189,7 @@ "\n", "1. Define the input and output variables to the trained surrogate\n", "2. Load the surrogate from the folder it is saved in, here it is saved in the folder called pysmo_surrogate (look at the pysmo_training.ipynb file) using the PySMO Surrogate API of IDAES package\n", - "3. Define a `SurrogateBlock` and call the build_model method on the block with the input variables, output variables, model formulation and the loaded surrogate as the arguements. \n", + "3. Define a `SurrogateBlock` and call the build_model method on the block with the input variables, output variables, model formulation and the loaded surrogate as the arguments. \n", "4. Define the constraints necessary for ensuring physical feasibility of the system like the mass balance and energy balance. Check for the state variables to be within the bounds. \n" ] }, @@ -303,7 +303,7 @@ "3. `Return the state of the model` to where it originally started (with the exception of variable values). Any variable that was fixed or constraint that was deactivated during initialization should be unfixed or reactivated, so that the degrees of freedom are restored to what they were before the initialization began.\n", "\n", "\n", - "Thus, we start with fixing the state variables. Here since enth_mol and entr_mol are a function of pressure and temperature, we do not fix them as fixing pressure and temperature would interm fix them. So, we check if a state variable if fixed or not, if it is fixed then we do not change them, if they are not fixed then we check for an initial guess from the `state_args`, if we get a value then we fix the varible with state_args, else we fix it with the value provided by the user. This should bring the degrees of freedom to 0. Here since we do not have any variable/constrained that we have unfixed/deactivated we can skip step 2 and move to step 3. We unfix the variables that were fixed in step 1 using the `release_state` function. " + "Thus, we start with fixing the state variables. Here since enth_mol and entr_mol are a function of pressure and temperature, we do not fix them as fixing pressure and temperature would define them. So, we check if a state variable if fixed or not, if it is fixed then we do not change them, if they are not fixed then we check for an initial guess from the `state_args`, if we get a value then we fix the variable with state_args, else we fix it with the value provided by the user. This should bring the degrees of freedom to 0. Here since we do not have any variable/constrained that we have unfixed/deactivated we can skip step 2 and move to step 3. We unfix the variables that were fixed in step 1 using the `release_state` function. " ] }, { @@ -334,7 +334,7 @@ "\n", " * 0 = no output (default)\n", " * 1 = return solver state for each step in routine\n", - " * 2 = include solver output infomation (tee=True)\n", + " * 2 = include solver output information (tee=True)\n", " state_vars_fixed: Flag to denote if state vars have already been\n", " fixed.\n", " - True - states have already been fixed by the\n", @@ -345,18 +345,18 @@ " - False - states have not been fixed. The state\n", " block will deal with fixing/unfixing.\n", " optarg : solver options dictionary object (default=None)\n", - " solver : str indicating whcih solver to use during\n", + " solver : str indicating which solver to use during\n", " initialization (default = 'ipopt')\n", " hold_state : flag indicating whether the initialization routine\n", " should unfix any state variables fixed during\n", " initialization (default=False).\n", - " - True - states varaibles are not unfixed, and\n", + " - True - states variables are not unfixed, and\n", " a dict of returned containing flags for\n", " which states were fixed during\n", " initialization.\n", " - False - state variables are unfixed after\n", " initialization by calling the\n", - " relase_state method\n", + " release_state method\n", "\n", " Returns:\n", " If hold_states is True, returns a dict containing flags for\n", @@ -416,7 +416,7 @@ "\n", " def release_state(blk, flags, outlvl=0):\n", " '''\n", - " Method to relase state variables fixed during initialisation.\n", + " Method to release state variables fixed during initialisation.\n", "\n", " Keyword Arguments:\n", " flags : dict containing information of which state variables\n", diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/surrogate_embedding_doc.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/surrogate_embedding_doc.ipynb index ec1968c1..a2ca0c6c 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/surrogate_embedding_doc.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/surrogate_embedding_doc.ipynb @@ -32,9 +32,9 @@ "Updated: 2024-01-24\n", "## 1. Integration of Surrogate into Custom Property Package\n", "\n", - "Here we shall see how to integrate the trained surrogate in the custom property package. One can read more about making a properties package from read the docs. To integrate the surrogate we first define the physical paramter block which will return the properties based on the state variables. State variables would be called from the State Block as Pyomo variables. We will define the surrogate input and output as pyomo variables as well. Once we have defined the variables in the state block then we define our surrogate block.\n", + "Here we shall see how to integrate the trained surrogate in the custom property package. One can read more about making a properties package from read the docs. To integrate the surrogate we first define the physical parameter block which will return the properties based on the state variables. State variables would be called from the State Block as Pyomo variables. We will define the surrogate input and output as pyomo variables as well. Once we have defined the variables in the state block then we define our surrogate block.\n", "\n", - "*NOTE:* For ease of explaination the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practive all the classes in this notebook should be part of the same python script. This folder includes \"properties.py\" file which is how embedding file should look like. \n", + "*NOTE:* For ease of explanation the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practice all the classes in this notebook should be part of the same python script. This folder includes \"properties.py\" file which is how embedding file should look like. \n", "\n", "### 1.1 Steps in Creating a Property Package\n", "Creating a new property package can be broken down into the following steps, which will be demonstrated in the next part of this tutorial.\n", @@ -105,7 +105,7 @@ "source": [ "# 3 Defining Classes\n", "\n", - "We shall be going through each class of the property package in detail. Since there are not reactions occuring in the flowsheet we shall only write the Physical Parameter Block.\n", + "We shall be going through each class of the property package in detail. Since there are not reactions occurring in the flowsheet we shall only write the Physical Parameter Block.\n", "\n", "## 3.1 Physical Parameter Block\n", "\n", @@ -189,7 +189,7 @@ "\n", "1. Define the input and output variables to the trained surrogate\n", "2. Load the surrogate from the folder it is saved in, here it is saved in the folder called pysmo_surrogate (look at the pysmo_training_doc.md file) using the PySMO Surrogate API of IDAES package\n", - "3. Define a `SurrogateBlock` and call the build_model method on the block with the input variables, output variables, model formulation and the loaded surrogate as the arguements. \n", + "3. Define a `SurrogateBlock` and call the build_model method on the block with the input variables, output variables, model formulation and the loaded surrogate as the arguments. \n", "4. Define the constraints necessary for ensuring physical feasibility of the system like the mass balance and energy balance. Check for the state variables to be within the bounds. \n" ] }, @@ -303,7 +303,7 @@ "3. `Return the state of the model` to where it originally started (with the exception of variable values). Any variable that was fixed or constraint that was deactivated during initialization should be unfixed or reactivated, so that the degrees of freedom are restored to what they were before the initialization began.\n", "\n", "\n", - "Thus, we start with fixing the state variables. Here since enth_mol and entr_mol are a function of pressure and temperature, we do not fix them as fixing pressure and temperature would interm fix them. So, we check if a state variable if fixed or not, if it is fixed then we do not change them, if they are not fixed then we check for an initial guess from the `state_args`, if we get a value then we fix the varible with state_args, else we fix it with the value provided by the user. This should bring the degrees of freedom to 0. Here since we do not have any variable/constrained that we have unfixed/deactivated we can skip step 2 and move to step 3. We unfix the variables that were fixed in step 1 using the `release_state` function. " + "Thus, we start with fixing the state variables. Here since enth_mol and entr_mol are a function of pressure and temperature, we do not fix them as fixing pressure and temperature would define them. So, we check if a state variable if fixed or not, if it is fixed then we do not change them, if they are not fixed then we check for an initial guess from the `state_args`, if we get a value then we fix the variable with state_args, else we fix it with the value provided by the user. This should bring the degrees of freedom to 0. Here since we do not have any variable/constrained that we have unfixed/deactivated we can skip step 2 and move to step 3. We unfix the variables that were fixed in step 1 using the `release_state` function. " ] }, { @@ -334,7 +334,7 @@ "\n", " * 0 = no output (default)\n", " * 1 = return solver state for each step in routine\n", - " * 2 = include solver output infomation (tee=True)\n", + " * 2 = include solver output information (tee=True)\n", " state_vars_fixed: Flag to denote if state vars have already been\n", " fixed.\n", " - True - states have already been fixed by the\n", @@ -345,18 +345,18 @@ " - False - states have not been fixed. The state\n", " block will deal with fixing/unfixing.\n", " optarg : solver options dictionary object (default=None)\n", - " solver : str indicating whcih solver to use during\n", + " solver : str indicating which solver to use during\n", " initialization (default = 'ipopt')\n", " hold_state : flag indicating whether the initialization routine\n", " should unfix any state variables fixed during\n", " initialization (default=False).\n", - " - True - states varaibles are not unfixed, and\n", + " - True - states variables are not unfixed, and\n", " a dict of returned containing flags for\n", " which states were fixed during\n", " initialization.\n", " - False - state variables are unfixed after\n", " initialization by calling the\n", - " relase_state method\n", + " release_state method\n", "\n", " Returns:\n", " If hold_states is True, returns a dict containing flags for\n", @@ -416,7 +416,7 @@ "\n", " def release_state(blk, flags, outlvl=0):\n", " '''\n", - " Method to relase state variables fixed during initialisation.\n", + " Method to release state variables fixed during initialisation.\n", "\n", " Keyword Arguments:\n", " flags : dict containing information of which state variables\n", diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/surrogate_embedding_test.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/surrogate_embedding_test.ipynb index 054e2f66..08681a4a 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/surrogate_embedding_test.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/surrogate_embedding_test.ipynb @@ -32,9 +32,9 @@ "Updated: 2024-01-24\n", "## 1. Integration of Surrogate into Custom Property Package\n", "\n", - "Here we shall see how to integrate the trained surrogate in the custom property package. One can read more about making a properties package from read the docs. To integrate the surrogate we first define the physical paramter block which will return the properties based on the state variables. State variables would be called from the State Block as Pyomo variables. We will define the surrogate input and output as pyomo variables as well. Once we have defined the variables in the state block then we define our surrogate block.\n", + "Here we shall see how to integrate the trained surrogate in the custom property package. One can read more about making a properties package from read the docs. To integrate the surrogate we first define the physical parameter block which will return the properties based on the state variables. State variables would be called from the State Block as Pyomo variables. We will define the surrogate input and output as pyomo variables as well. Once we have defined the variables in the state block then we define our surrogate block.\n", "\n", - "*NOTE:* For ease of explaination the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practive all the classes in this notebook should be part of the same python script. This folder includes \"properties.py\" file which is how embedding file should look like. \n", + "*NOTE:* For ease of explanation the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practice all the classes in this notebook should be part of the same python script. This folder includes \"properties.py\" file which is how embedding file should look like. \n", "\n", "### 1.1 Steps in Creating a Property Package\n", "Creating a new property package can be broken down into the following steps, which will be demonstrated in the next part of this tutorial.\n", @@ -107,7 +107,7 @@ "source": [ "# 3 Defining Classes\n", "\n", - "We shall be going through each class of the property package in detail. Since there are not reactions occuring in the flowsheet we shall only write the Physical Parameter Block.\n", + "We shall be going through each class of the property package in detail. Since there are not reactions occurring in the flowsheet we shall only write the Physical Parameter Block.\n", "\n", "## 3.1 Physical Parameter Block\n", "\n", @@ -191,7 +191,7 @@ "\n", "1. Define the input and output variables to the trained surrogate\n", "2. Load the surrogate from the folder it is saved in, here it is saved in the folder called pysmo_surrogate (look at the pysmo_training_test.ipynb file) using the PySMO Surrogate API of IDAES package\n", - "3. Define a `SurrogateBlock` and call the build_model method on the block with the input variables, output variables, model formulation and the loaded surrogate as the arguements. \n", + "3. Define a `SurrogateBlock` and call the build_model method on the block with the input variables, output variables, model formulation and the loaded surrogate as the arguments. \n", "4. Define the constraints necessary for ensuring physical feasibility of the system like the mass balance and energy balance. Check for the state variables to be within the bounds. \n" ] }, @@ -305,7 +305,7 @@ "3. `Return the state of the model` to where it originally started (with the exception of variable values). Any variable that was fixed or constraint that was deactivated during initialization should be unfixed or reactivated, so that the degrees of freedom are restored to what they were before the initialization began.\n", "\n", "\n", - "Thus, we start with fixing the state variables. Here since enth_mol and entr_mol are a function of pressure and temperature, we do not fix them as fixing pressure and temperature would interm fix them. So, we check if a state variable if fixed or not, if it is fixed then we do not change them, if they are not fixed then we check for an initial guess from the `state_args`, if we get a value then we fix the varible with state_args, else we fix it with the value provided by the user. This should bring the degrees of freedom to 0. Here since we do not have any variable/constrained that we have unfixed/deactivated we can skip step 2 and move to step 3. We unfix the variables that were fixed in step 1 using the `release_state` function. " + "Thus, we start with fixing the state variables. Here since enth_mol and entr_mol are a function of pressure and temperature, we do not fix them as fixing pressure and temperature would define them. So, we check if a state variable if fixed or not, if it is fixed then we do not change them, if they are not fixed then we check for an initial guess from the `state_args`, if we get a value then we fix the variable with state_args, else we fix it with the value provided by the user. This should bring the degrees of freedom to 0. Here since we do not have any variable/constrained that we have unfixed/deactivated we can skip step 2 and move to step 3. We unfix the variables that were fixed in step 1 using the `release_state` function. " ] }, { @@ -336,7 +336,7 @@ "\n", " * 0 = no output (default)\n", " * 1 = return solver state for each step in routine\n", - " * 2 = include solver output infomation (tee=True)\n", + " * 2 = include solver output information (tee=True)\n", " state_vars_fixed: Flag to denote if state vars have already been\n", " fixed.\n", " - True - states have already been fixed by the\n", @@ -347,18 +347,18 @@ " - False - states have not been fixed. The state\n", " block will deal with fixing/unfixing.\n", " optarg : solver options dictionary object (default=None)\n", - " solver : str indicating whcih solver to use during\n", + " solver : str indicating which solver to use during\n", " initialization (default = 'ipopt')\n", " hold_state : flag indicating whether the initialization routine\n", " should unfix any state variables fixed during\n", " initialization (default=False).\n", - " - True - states varaibles are not unfixed, and\n", + " - True - states variables are not unfixed, and\n", " a dict of returned containing flags for\n", " which states were fixed during\n", " initialization.\n", " - False - state variables are unfixed after\n", " initialization by calling the\n", - " relase_state method\n", + " release_state method\n", "\n", " Returns:\n", " If hold_states is True, returns a dict containing flags for\n", @@ -418,7 +418,7 @@ "\n", " def release_state(blk, flags, outlvl=0):\n", " '''\n", - " Method to relase state variables fixed during initialisation.\n", + " Method to release state variables fixed during initialisation.\n", "\n", " Keyword Arguments:\n", " flags : dict containing information of which state variables\n", diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/surrogate_embedding_usr.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/surrogate_embedding_usr.ipynb index d67ce305..8ad3ae88 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/surrogate_embedding_usr.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/surrogate_embedding_usr.ipynb @@ -32,9 +32,9 @@ "Updated: 2024-01-24\n", "## 1. Integration of Surrogate into Custom Property Package\n", "\n", - "Here we shall see how to integrate the trained surrogate in the custom property package. One can read more about making a properties package from read the docs. To integrate the surrogate we first define the physical paramter block which will return the properties based on the state variables. State variables would be called from the State Block as Pyomo variables. We will define the surrogate input and output as pyomo variables as well. Once we have defined the variables in the state block then we define our surrogate block.\n", + "Here we shall see how to integrate the trained surrogate in the custom property package. One can read more about making a properties package from read the docs. To integrate the surrogate we first define the physical parameter block which will return the properties based on the state variables. State variables would be called from the State Block as Pyomo variables. We will define the surrogate input and output as pyomo variables as well. Once we have defined the variables in the state block then we define our surrogate block.\n", "\n", - "*NOTE:* For ease of explaination the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practive all the classes in this notebook should be part of the same python script. This folder includes \"properties.py\" file which is how embedding file should look like. \n", + "*NOTE:* For ease of explanation the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practice all the classes in this notebook should be part of the same python script. This folder includes \"properties.py\" file which is how embedding file should look like. \n", "\n", "### 1.1 Steps in Creating a Property Package\n", "Creating a new property package can be broken down into the following steps, which will be demonstrated in the next part of this tutorial.\n", @@ -105,7 +105,7 @@ "source": [ "# 3 Defining Classes\n", "\n", - "We shall be going through each class of the property package in detail. Since there are not reactions occuring in the flowsheet we shall only write the Physical Parameter Block.\n", + "We shall be going through each class of the property package in detail. Since there are not reactions occurring in the flowsheet we shall only write the Physical Parameter Block.\n", "\n", "## 3.1 Physical Parameter Block\n", "\n", @@ -189,7 +189,7 @@ "\n", "1. Define the input and output variables to the trained surrogate\n", "2. Load the surrogate from the folder it is saved in, here it is saved in the folder called pysmo_surrogate (look at the pysmo_training_usr.ipynb file) using the PySMO Surrogate API of IDAES package\n", - "3. Define a `SurrogateBlock` and call the build_model method on the block with the input variables, output variables, model formulation and the loaded surrogate as the arguements. \n", + "3. Define a `SurrogateBlock` and call the build_model method on the block with the input variables, output variables, model formulation and the loaded surrogate as the arguments. \n", "4. Define the constraints necessary for ensuring physical feasibility of the system like the mass balance and energy balance. Check for the state variables to be within the bounds. \n" ] }, @@ -303,7 +303,7 @@ "3. `Return the state of the model` to where it originally started (with the exception of variable values). Any variable that was fixed or constraint that was deactivated during initialization should be unfixed or reactivated, so that the degrees of freedom are restored to what they were before the initialization began.\n", "\n", "\n", - "Thus, we start with fixing the state variables. Here since enth_mol and entr_mol are a function of pressure and temperature, we do not fix them as fixing pressure and temperature would interm fix them. So, we check if a state variable if fixed or not, if it is fixed then we do not change them, if they are not fixed then we check for an initial guess from the `state_args`, if we get a value then we fix the varible with state_args, else we fix it with the value provided by the user. This should bring the degrees of freedom to 0. Here since we do not have any variable/constrained that we have unfixed/deactivated we can skip step 2 and move to step 3. We unfix the variables that were fixed in step 1 using the `release_state` function. " + "Thus, we start with fixing the state variables. Here since enth_mol and entr_mol are a function of pressure and temperature, we do not fix them as fixing pressure and temperature would define them. So, we check if a state variable if fixed or not, if it is fixed then we do not change them, if they are not fixed then we check for an initial guess from the `state_args`, if we get a value then we fix the variable with state_args, else we fix it with the value provided by the user. This should bring the degrees of freedom to 0. Here since we do not have any variable/constrained that we have unfixed/deactivated we can skip step 2 and move to step 3. We unfix the variables that were fixed in step 1 using the `release_state` function. " ] }, { @@ -334,7 +334,7 @@ "\n", " * 0 = no output (default)\n", " * 1 = return solver state for each step in routine\n", - " * 2 = include solver output infomation (tee=True)\n", + " * 2 = include solver output information (tee=True)\n", " state_vars_fixed: Flag to denote if state vars have already been\n", " fixed.\n", " - True - states have already been fixed by the\n", @@ -345,18 +345,18 @@ " - False - states have not been fixed. The state\n", " block will deal with fixing/unfixing.\n", " optarg : solver options dictionary object (default=None)\n", - " solver : str indicating whcih solver to use during\n", + " solver : str indicating which solver to use during\n", " initialization (default = 'ipopt')\n", " hold_state : flag indicating whether the initialization routine\n", " should unfix any state variables fixed during\n", " initialization (default=False).\n", - " - True - states varaibles are not unfixed, and\n", + " - True - states variables are not unfixed, and\n", " a dict of returned containing flags for\n", " which states were fixed during\n", " initialization.\n", " - False - state variables are unfixed after\n", " initialization by calling the\n", - " relase_state method\n", + " release_state method\n", "\n", " Returns:\n", " If hold_states is True, returns a dict containing flags for\n", @@ -416,7 +416,7 @@ "\n", " def release_state(blk, flags, outlvl=0):\n", " '''\n", - " Method to relase state variables fixed during initialisation.\n", + " Method to release state variables fixed during initialisation.\n", "\n", " Keyword Arguments:\n", " flags : dict containing information of which state variables\n", diff --git a/idaes_examples/notebooks/docs/tut/core/flash_unit.ipynb b/idaes_examples/notebooks/docs/tut/core/flash_unit.ipynb index 97a4fbe6..6dc88109 100644 --- a/idaes_examples/notebooks/docs/tut/core/flash_unit.ipynb +++ b/idaes_examples/notebooks/docs/tut/core/flash_unit.ipynb @@ -514,7 +514,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now that the model has been defined and intialized, we can solve the model.\n", + "Now that the model has been defined and initialized, we can solve the model.\n", "\n", "
    \n", "Inline Exercise:\n", @@ -817,7 +817,7 @@ "source": [ "
    \n", "Inline Exercise:\n", - "Repeate the exercise above, but create a figure showing the heat duty vs. the mole fraction of Benzene in the vapor outlet. Remove any unnecessary printing to create cleaner results.\n", + "Repeat the exercise above, but create a figure showing the heat duty vs. the mole fraction of Benzene in the vapor outlet. Remove any unnecessary printing to create cleaner results.\n", "
    " ] }, diff --git a/idaes_examples/notebooks/docs/tut/core/flash_unit_doc.ipynb b/idaes_examples/notebooks/docs/tut/core/flash_unit_doc.ipynb index 9022c9a2..9432ccbe 100644 --- a/idaes_examples/notebooks/docs/tut/core/flash_unit_doc.ipynb +++ b/idaes_examples/notebooks/docs/tut/core/flash_unit_doc.ipynb @@ -552,7 +552,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now that the model has been defined and intialized, we can solve the model.\n", + "Now that the model has been defined and initialized, we can solve the model.\n", "\n", "
    \n", "Inline Exercise:\n", @@ -1275,7 +1275,7 @@ "source": [ "
    \n", "Inline Exercise:\n", - "Repeate the exercise above, but create a figure showing the heat duty vs. the mole fraction of Benzene in the vapor outlet. Remove any unnecessary printing to create cleaner results.\n", + "Repeat the exercise above, but create a figure showing the heat duty vs. the mole fraction of Benzene in the vapor outlet. Remove any unnecessary printing to create cleaner results.\n", "
    " ] }, @@ -1909,4 +1909,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/tut/core/flash_unit_exercise.ipynb b/idaes_examples/notebooks/docs/tut/core/flash_unit_exercise.ipynb index fc8c25ec..19e3b691 100644 --- a/idaes_examples/notebooks/docs/tut/core/flash_unit_exercise.ipynb +++ b/idaes_examples/notebooks/docs/tut/core/flash_unit_exercise.ipynb @@ -391,7 +391,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now that the model has been defined and intialized, we can solve the model.\n", + "Now that the model has been defined and initialized, we can solve the model.\n", "\n", "
    \n", "Inline Exercise:\n", @@ -572,7 +572,7 @@ "source": [ "
    \n", "Inline Exercise:\n", - "Repeate the exercise above, but create a figure showing the heat duty vs. the mole fraction of Benzene in the vapor outlet. Remove any unnecessary printing to create cleaner results.\n", + "Repeat the exercise above, but create a figure showing the heat duty vs. the mole fraction of Benzene in the vapor outlet. Remove any unnecessary printing to create cleaner results.\n", "
    " ] }, @@ -654,4 +654,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/tut/core/flash_unit_solution.ipynb b/idaes_examples/notebooks/docs/tut/core/flash_unit_solution.ipynb index 866c48fa..6b4b3752 100644 --- a/idaes_examples/notebooks/docs/tut/core/flash_unit_solution.ipynb +++ b/idaes_examples/notebooks/docs/tut/core/flash_unit_solution.ipynb @@ -486,7 +486,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now that the model has been defined and intialized, we can solve the model.\n", + "Now that the model has been defined and initialized, we can solve the model.\n", "\n", "
    \n", "Inline Exercise:\n", @@ -739,7 +739,7 @@ "source": [ "
    \n", "Inline Exercise:\n", - "Repeate the exercise above, but create a figure showing the heat duty vs. the mole fraction of Benzene in the vapor outlet. Remove any unnecessary printing to create cleaner results.\n", + "Repeat the exercise above, but create a figure showing the heat duty vs. the mole fraction of Benzene in the vapor outlet. Remove any unnecessary printing to create cleaner results.\n", "
    " ] }, @@ -893,4 +893,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/tut/core/flash_unit_test.ipynb b/idaes_examples/notebooks/docs/tut/core/flash_unit_test.ipynb index 3a2bff71..562af431 100644 --- a/idaes_examples/notebooks/docs/tut/core/flash_unit_test.ipynb +++ b/idaes_examples/notebooks/docs/tut/core/flash_unit_test.ipynb @@ -430,7 +430,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now that the model has been defined and intialized, we can solve the model.\n", + "Now that the model has been defined and initialized, we can solve the model.\n", "\n", "
    \n", "Inline Exercise:\n", @@ -664,7 +664,7 @@ "source": [ "
    \n", "Inline Exercise:\n", - "Repeate the exercise above, but create a figure showing the heat duty vs. the mole fraction of Benzene in the vapor outlet. Remove any unnecessary printing to create cleaner results.\n", + "Repeat the exercise above, but create a figure showing the heat duty vs. the mole fraction of Benzene in the vapor outlet. Remove any unnecessary printing to create cleaner results.\n", "
    " ] }, @@ -814,4 +814,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/tut/core/flash_unit_usr.ipynb b/idaes_examples/notebooks/docs/tut/core/flash_unit_usr.ipynb index 866c48fa..6b4b3752 100644 --- a/idaes_examples/notebooks/docs/tut/core/flash_unit_usr.ipynb +++ b/idaes_examples/notebooks/docs/tut/core/flash_unit_usr.ipynb @@ -486,7 +486,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now that the model has been defined and intialized, we can solve the model.\n", + "Now that the model has been defined and initialized, we can solve the model.\n", "\n", "
    \n", "Inline Exercise:\n", @@ -739,7 +739,7 @@ "source": [ "
    \n", "Inline Exercise:\n", - "Repeate the exercise above, but create a figure showing the heat duty vs. the mole fraction of Benzene in the vapor outlet. Remove any unnecessary printing to create cleaner results.\n", + "Repeat the exercise above, but create a figure showing the heat duty vs. the mole fraction of Benzene in the vapor outlet. Remove any unnecessary printing to create cleaner results.\n", "
    " ] }, @@ -893,4 +893,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/tut/core/hda_flowsheet.ipynb b/idaes_examples/notebooks/docs/tut/core/hda_flowsheet.ipynb index a9d3525b..3a4ad898 100644 --- a/idaes_examples/notebooks/docs/tut/core/hda_flowsheet.ipynb +++ b/idaes_examples/notebooks/docs/tut/core/hda_flowsheet.ipynb @@ -74,8 +74,7 @@ "The state variables chosen for the property package are **flows of component by phase, temperature and pressure**. The components considered are: **toluene, hydrogen, benzene and methane**. Therefore, every stream has 8 flow variables, 1 temperature and 1 pressure variable. \n", "\n", "![](HDA_flowsheet.png)\n", - "\n", - "" + "\n" ] }, { @@ -419,7 +418,7 @@ "source": [ "## Connecting Unit Models using Arcs\n", "\n", - "We have now added all the unit models we need to the flowsheet. However, we have not yet specifed how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the mixer(M101) to the inlet of the heater(H101). " + "We have now added all the unit models we need to the flowsheet. However, we have not yet specified how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the mixer(M101) to the inlet of the heater(H101). " ] }, { @@ -1176,7 +1175,7 @@ "source": [ "
    \n", "Inline Exercise:\n", - "You can querry additional variables here if you like. \n", + "You can query additional variables here if you like. \n", "\n", "Use Shift+Enter to run the cell once you have typed in your code. \n", "
    \n" diff --git a/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_doc.ipynb b/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_doc.ipynb index 3ac7ea93..44fe440f 100644 --- a/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_doc.ipynb +++ b/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_doc.ipynb @@ -392,7 +392,7 @@ "source": [ "## Connecting Unit Models using Arcs\n", "\n", - "We have now added all the unit models we need to the flowsheet. However, we have not yet specifed how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the mixer(M101) to the inlet of the heater(H101). " + "We have now added all the unit models we need to the flowsheet. However, we have not yet specified how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the mixer(M101) to the inlet of the heater(H101). " ] }, { @@ -1688,7 +1688,7 @@ "source": [ "
    \n", "Inline Exercise:\n", - "You can querry additional variables here if you like. \n", + "You can query additional variables here if you like. \n", "\n", "Use Shift+Enter to run the cell once you have typed in your code. \n", "
    \n" @@ -2209,4 +2209,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_exercise.ipynb b/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_exercise.ipynb index f28e8d79..cd42cc58 100644 --- a/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_exercise.ipynb +++ b/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_exercise.ipynb @@ -56,7 +56,7 @@ "example, toluene will be reacted with hydrogen gas at high temperatures\n", " to form benzene via the following reaction:\n", "\n", - "**C6H5CH3 + H2 \u2192 C6H6 + CH4**\n", + "**C6H5CH3 + H2 → C6H6 + CH4**\n", "\n", "\n", "This reaction is often accompanied by an equilibrium side reaction\n", @@ -74,8 +74,7 @@ "The state variables chosen for the property package are **flows of component by phase, temperature and pressure**. The components considered are: **toluene, hydrogen, benzene and methane**. Therefore, every stream has 8 flow variables, 1 temperature and 1 pressure variable. \n", "\n", "![](HDA_flowsheet.png)\n", - "\n", - "" + "\n" ] }, { @@ -385,7 +384,7 @@ "source": [ "## Connecting Unit Models using Arcs\n", "\n", - "We have now added all the unit models we need to the flowsheet. However, we have not yet specifed how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the mixer(M101) to the inlet of the heater(H101). " + "We have now added all the unit models we need to the flowsheet. However, we have not yet specified how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the mixer(M101) to the inlet of the heater(H101). " ] }, { @@ -1007,7 +1006,7 @@ "source": [ "
    \n", "Inline Exercise:\n", - "You can querry additional variables here if you like. \n", + "You can query additional variables here if you like. \n", "\n", "Use Shift+Enter to run the cell once you have typed in your code. \n", "
    \n" @@ -1335,4 +1334,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_solution.ipynb b/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_solution.ipynb index f54e0f4d..923daf60 100644 --- a/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_solution.ipynb +++ b/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_solution.ipynb @@ -56,7 +56,7 @@ "example, toluene will be reacted with hydrogen gas at high temperatures\n", " to form benzene via the following reaction:\n", "\n", - "**C6H5CH3 + H2 \u2192 C6H6 + CH4**\n", + "**C6H5CH3 + H2 → C6H6 + CH4**\n", "\n", "\n", "This reaction is often accompanied by an equilibrium side reaction\n", @@ -74,8 +74,7 @@ "The state variables chosen for the property package are **flows of component by phase, temperature and pressure**. The components considered are: **toluene, hydrogen, benzene and methane**. Therefore, every stream has 8 flow variables, 1 temperature and 1 pressure variable. \n", "\n", "![](HDA_flowsheet.png)\n", - "\n", - "" + "\n" ] }, { @@ -419,7 +418,7 @@ "source": [ "## Connecting Unit Models using Arcs\n", "\n", - "We have now added all the unit models we need to the flowsheet. However, we have not yet specifed how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the mixer(M101) to the inlet of the heater(H101). " + "We have now added all the unit models we need to the flowsheet. However, we have not yet specified how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the mixer(M101) to the inlet of the heater(H101). " ] }, { @@ -1101,7 +1100,7 @@ "source": [ "
    \n", "Inline Exercise:\n", - "You can querry additional variables here if you like. \n", + "You can query additional variables here if you like. \n", "\n", "Use Shift+Enter to run the cell once you have typed in your code. \n", "
    \n" @@ -1474,4 +1473,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_test.ipynb b/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_test.ipynb index 8aa3ab41..7098c670 100644 --- a/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_test.ipynb +++ b/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_test.ipynb @@ -56,7 +56,7 @@ "example, toluene will be reacted with hydrogen gas at high temperatures\n", " to form benzene via the following reaction:\n", "\n", - "**C6H5CH3 + H2 \u2192 C6H6 + CH4**\n", + "**C6H5CH3 + H2 → C6H6 + CH4**\n", "\n", "\n", "This reaction is often accompanied by an equilibrium side reaction\n", @@ -74,8 +74,7 @@ "The state variables chosen for the property package are **flows of component by phase, temperature and pressure**. The components considered are: **toluene, hydrogen, benzene and methane**. Therefore, every stream has 8 flow variables, 1 temperature and 1 pressure variable. \n", "\n", "![](HDA_flowsheet.png)\n", - "\n", - "" + "\n" ] }, { @@ -393,7 +392,7 @@ "source": [ "## Connecting Unit Models using Arcs\n", "\n", - "We have now added all the unit models we need to the flowsheet. However, we have not yet specifed how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the mixer(M101) to the inlet of the heater(H101). " + "We have now added all the unit models we need to the flowsheet. However, we have not yet specified how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the mixer(M101) to the inlet of the heater(H101). " ] }, { @@ -1095,7 +1094,7 @@ "source": [ "
    \n", "Inline Exercise:\n", - "You can querry additional variables here if you like. \n", + "You can query additional variables here if you like. \n", "\n", "Use Shift+Enter to run the cell once you have typed in your code. \n", "
    \n" @@ -1489,4 +1488,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_usr.ipynb b/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_usr.ipynb index f54e0f4d..923daf60 100644 --- a/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_usr.ipynb +++ b/idaes_examples/notebooks/docs/tut/core/hda_flowsheet_usr.ipynb @@ -56,7 +56,7 @@ "example, toluene will be reacted with hydrogen gas at high temperatures\n", " to form benzene via the following reaction:\n", "\n", - "**C6H5CH3 + H2 \u2192 C6H6 + CH4**\n", + "**C6H5CH3 + H2 → C6H6 + CH4**\n", "\n", "\n", "This reaction is often accompanied by an equilibrium side reaction\n", @@ -74,8 +74,7 @@ "The state variables chosen for the property package are **flows of component by phase, temperature and pressure**. The components considered are: **toluene, hydrogen, benzene and methane**. Therefore, every stream has 8 flow variables, 1 temperature and 1 pressure variable. \n", "\n", "![](HDA_flowsheet.png)\n", - "\n", - "" + "\n" ] }, { @@ -419,7 +418,7 @@ "source": [ "## Connecting Unit Models using Arcs\n", "\n", - "We have now added all the unit models we need to the flowsheet. However, we have not yet specifed how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the mixer(M101) to the inlet of the heater(H101). " + "We have now added all the unit models we need to the flowsheet. However, we have not yet specified how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the mixer(M101) to the inlet of the heater(H101). " ] }, { @@ -1101,7 +1100,7 @@ "source": [ "
    \n", "Inline Exercise:\n", - "You can querry additional variables here if you like. \n", + "You can query additional variables here if you like. \n", "\n", "Use Shift+Enter to run the cell once you have typed in your code. \n", "
    \n" @@ -1474,4 +1473,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/unit_models/custom_unit_models/custom_compressor.ipynb b/idaes_examples/notebooks/docs/unit_models/custom_unit_models/custom_compressor.ipynb index 27c351a3..47f203dd 100644 --- a/idaes_examples/notebooks/docs/unit_models/custom_unit_models/custom_compressor.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/custom_unit_models/custom_compressor.ipynb @@ -222,7 +222,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Finally, we can define the ideal-gas isentropic compressor. To do so, we create a class called ``IdealGasIsentropicCompressorData`` and use the ``declare_process_block_class`` decorator. For now, just consider the decorator to be boiler-plate. We then need to define the config block and write the ``build`` method. The ``build`` method should alwasy call ``super``. Next, we simply call the functions we wrote to build the control volume, energy balance, and electricity requirement performance equation. Finally, we need to call ``self.add_inlet_port()`` and ``self.add_outlet_port()``. These methods need to be called in order to create the ports which are used for connecting the unit to other units." + "Finally, we can define the ideal-gas isentropic compressor. To do so, we create a class called ``IdealGasIsentropicCompressorData`` and use the ``declare_process_block_class`` decorator. For now, just consider the decorator to be boiler-plate. We then need to define the config block and write the ``build`` method. The ``build`` method should always call ``super``. Next, we simply call the functions we wrote to build the control volume, energy balance, and electricity requirement performance equation. Finally, we need to call ``self.add_inlet_port()`` and ``self.add_outlet_port()``. These methods need to be called in order to create the ports which are used for connecting the unit to other units." ] }, { diff --git a/idaes_examples/notebooks/docs/unit_models/custom_unit_models/custom_compressor_doc.ipynb b/idaes_examples/notebooks/docs/unit_models/custom_unit_models/custom_compressor_doc.ipynb index 23657231..88f645ec 100644 --- a/idaes_examples/notebooks/docs/unit_models/custom_unit_models/custom_compressor_doc.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/custom_unit_models/custom_compressor_doc.ipynb @@ -222,7 +222,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Finally, we can define the ideal-gas isentropic compressor. To do so, we create a class called ``IdealGasIsentropicCompressorData`` and use the ``declare_process_block_class`` decorator. For now, just consider the decorator to be boiler-plate. We then need to define the config block and write the ``build`` method. The ``build`` method should alwasy call ``super``. Next, we simply call the functions we wrote to build the control volume, energy balance, and electricity requirement performance equation. Finally, we need to call ``self.add_inlet_port()`` and ``self.add_outlet_port()``. These methods need to be called in order to create the ports which are used for connecting the unit to other units." + "Finally, we can define the ideal-gas isentropic compressor. To do so, we create a class called ``IdealGasIsentropicCompressorData`` and use the ``declare_process_block_class`` decorator. For now, just consider the decorator to be boiler-plate. We then need to define the config block and write the ``build`` method. The ``build`` method should always call ``super``. Next, we simply call the functions we wrote to build the control volume, energy balance, and electricity requirement performance equation. Finally, we need to call ``self.add_inlet_port()`` and ``self.add_outlet_port()``. These methods need to be called in order to create the ports which are used for connecting the unit to other units." ] }, { @@ -396,4 +396,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/unit_models/custom_unit_models/custom_compressor_test.ipynb b/idaes_examples/notebooks/docs/unit_models/custom_unit_models/custom_compressor_test.ipynb index 2998d8b9..2aa3d42f 100644 --- a/idaes_examples/notebooks/docs/unit_models/custom_unit_models/custom_compressor_test.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/custom_unit_models/custom_compressor_test.ipynb @@ -222,7 +222,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Finally, we can define the ideal-gas isentropic compressor. To do so, we create a class called ``IdealGasIsentropicCompressorData`` and use the ``declare_process_block_class`` decorator. For now, just consider the decorator to be boiler-plate. We then need to define the config block and write the ``build`` method. The ``build`` method should alwasy call ``super``. Next, we simply call the functions we wrote to build the control volume, energy balance, and electricity requirement performance equation. Finally, we need to call ``self.add_inlet_port()`` and ``self.add_outlet_port()``. These methods need to be called in order to create the ports which are used for connecting the unit to other units." + "Finally, we can define the ideal-gas isentropic compressor. To do so, we create a class called ``IdealGasIsentropicCompressorData`` and use the ``declare_process_block_class`` decorator. For now, just consider the decorator to be boiler-plate. We then need to define the config block and write the ``build`` method. The ``build`` method should always call ``super``. Next, we simply call the functions we wrote to build the control volume, energy balance, and electricity requirement performance equation. Finally, we need to call ``self.add_inlet_port()`` and ``self.add_outlet_port()``. These methods need to be called in order to create the ports which are used for connecting the unit to other units." ] }, { @@ -344,4 +344,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/unit_models/custom_unit_models/custom_compressor_usr.ipynb b/idaes_examples/notebooks/docs/unit_models/custom_unit_models/custom_compressor_usr.ipynb index a5e63ef1..7441542a 100644 --- a/idaes_examples/notebooks/docs/unit_models/custom_unit_models/custom_compressor_usr.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/custom_unit_models/custom_compressor_usr.ipynb @@ -222,7 +222,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Finally, we can define the ideal-gas isentropic compressor. To do so, we create a class called ``IdealGasIsentropicCompressorData`` and use the ``declare_process_block_class`` decorator. For now, just consider the decorator to be boiler-plate. We then need to define the config block and write the ``build`` method. The ``build`` method should alwasy call ``super``. Next, we simply call the functions we wrote to build the control volume, energy balance, and electricity requirement performance equation. Finally, we need to call ``self.add_inlet_port()`` and ``self.add_outlet_port()``. These methods need to be called in order to create the ports which are used for connecting the unit to other units." + "Finally, we can define the ideal-gas isentropic compressor. To do so, we create a class called ``IdealGasIsentropicCompressorData`` and use the ``declare_process_block_class`` decorator. For now, just consider the decorator to be boiler-plate. We then need to define the config block and write the ``build`` method. The ``build`` method should always call ``super``. Next, we simply call the functions we wrote to build the control volume, energy balance, and electricity requirement performance equation. Finally, we need to call ``self.add_inlet_port()`` and ``self.add_outlet_port()``. These methods need to be called in order to create the ports which are used for connecting the unit to other units." ] }, { @@ -312,4 +312,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/unit_models/operations/compressor.ipynb b/idaes_examples/notebooks/docs/unit_models/operations/compressor.ipynb index 1573f978..f4e07086 100644 --- a/idaes_examples/notebooks/docs/unit_models/operations/compressor.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/operations/compressor.ipynb @@ -41,7 +41,7 @@ "## Learning Outcomes\n", "\n", "- Demonstrate use of the compressor unit model in IDAES\n", - "- Demonstarte use of the Span Wagner EOS for supercritical CO2 cycles\n", + "- Demonstrate use of the Span Wagner EOS for supercritical CO2 cycles\n", "- Demonstrate different simulation options available for the compressor unit model\n", "\n", "In this tutorial, we will simulate the main compressor for an indirect supercritical CO2 cycle using the Span-Wagner EOS as the property package. The input specifications for this tutorial are from the NETL report on indirect SCO2 cycles available [here](https://www.osti.gov/biblio/1490272). In this example, we will be compressing supercritical CO2 from 9.1 MPa to 34.5 MPa. \n", @@ -150,7 +150,7 @@ "# DOF = Number of Model Variables - Number of Model Constraints\n", "from idaes.core.util.model_statistics import degrees_of_freedom\n", "\n", - "# Call the degrees_of_freedom function, get intitial DOF\n", + "# Call the degrees_of_freedom function, get initial DOF\n", "DOF_initial = degrees_of_freedom(m)\n", "print(\"The initial DOF is {0}\".format(DOF_initial))" ] @@ -349,7 +349,7 @@ " thermodynamic_assumption=ThermodynamicAssumption.isentropic,\n", ")\n", "\n", - "# Call the degrees_of_freedom function, get intitial DOF\n", + "# Call the degrees_of_freedom function, get initial DOF\n", "DOF_initial = degrees_of_freedom(m.fs.compr_case_2)\n", "print(\"The initial DOF is {0}\".format(DOF_initial))" ] diff --git a/idaes_examples/notebooks/docs/unit_models/operations/compressor_doc.ipynb b/idaes_examples/notebooks/docs/unit_models/operations/compressor_doc.ipynb index 451aa3e8..d3f073fb 100644 --- a/idaes_examples/notebooks/docs/unit_models/operations/compressor_doc.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/operations/compressor_doc.ipynb @@ -41,7 +41,7 @@ "## Learning Outcomes\n", "\n", "- Demonstrate use of the compressor unit model in IDAES\n", - "- Demonstarte use of the Span Wagner EOS for supercritical CO2 cycles\n", + "- Demonstrate use of the Span Wagner EOS for supercritical CO2 cycles\n", "- Demonstrate different simulation options available for the compressor unit model\n", "\n", "In this tutorial, we will simulate the main compressor for an indirect supercritical CO2 cycle using the Span-Wagner EOS as the property package. The input specifications for this tutorial are from the NETL report on indirect SCO2 cycles available [here](https://www.osti.gov/biblio/1490272). In this example, we will be compressing supercritical CO2 from 9.1 MPa to 34.5 MPa. \n", @@ -158,7 +158,7 @@ "# DOF = Number of Model Variables - Number of Model Constraints\n", "from idaes.core.util.model_statistics import degrees_of_freedom\n", "\n", - "# Call the degrees_of_freedom function, get intitial DOF\n", + "# Call the degrees_of_freedom function, get initial DOF\n", "DOF_initial = degrees_of_freedom(m)\n", "print(\"The initial DOF is {0}\".format(DOF_initial))" ] @@ -445,7 +445,7 @@ " thermodynamic_assumption=ThermodynamicAssumption.isentropic,\n", ")\n", "\n", - "# Call the degrees_of_freedom function, get intitial DOF\n", + "# Call the degrees_of_freedom function, get initial DOF\n", "DOF_initial = degrees_of_freedom(m.fs.compr_case_2)\n", "print(\"The initial DOF is {0}\".format(DOF_initial))" ] @@ -710,4 +710,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/unit_models/operations/compressor_test.ipynb b/idaes_examples/notebooks/docs/unit_models/operations/compressor_test.ipynb index 9f081d50..7d354e12 100644 --- a/idaes_examples/notebooks/docs/unit_models/operations/compressor_test.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/operations/compressor_test.ipynb @@ -41,7 +41,7 @@ "## Learning Outcomes\n", "\n", "- Demonstrate use of the compressor unit model in IDAES\n", - "- Demonstarte use of the Span Wagner EOS for supercritical CO2 cycles\n", + "- Demonstrate use of the Span Wagner EOS for supercritical CO2 cycles\n", "- Demonstrate different simulation options available for the compressor unit model\n", "\n", "In this tutorial, we will simulate the main compressor for an indirect supercritical CO2 cycle using the Span-Wagner EOS as the property package. The input specifications for this tutorial are from the NETL report on indirect SCO2 cycles available [here](https://www.osti.gov/biblio/1490272). In this example, we will be compressing supercritical CO2 from 9.1 MPa to 34.5 MPa. \n", @@ -150,7 +150,7 @@ "# DOF = Number of Model Variables - Number of Model Constraints\n", "from idaes.core.util.model_statistics import degrees_of_freedom\n", "\n", - "# Call the degrees_of_freedom function, get intitial DOF\n", + "# Call the degrees_of_freedom function, get initial DOF\n", "DOF_initial = degrees_of_freedom(m)\n", "print(\"The initial DOF is {0}\".format(DOF_initial))" ] @@ -349,7 +349,7 @@ " thermodynamic_assumption=ThermodynamicAssumption.isentropic,\n", ")\n", "\n", - "# Call the degrees_of_freedom function, get intitial DOF\n", + "# Call the degrees_of_freedom function, get initial DOF\n", "DOF_initial = degrees_of_freedom(m.fs.compr_case_2)\n", "print(\"The initial DOF is {0}\".format(DOF_initial))" ] @@ -557,4 +557,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/unit_models/operations/compressor_usr.ipynb b/idaes_examples/notebooks/docs/unit_models/operations/compressor_usr.ipynb index 993c7a93..097aedb3 100644 --- a/idaes_examples/notebooks/docs/unit_models/operations/compressor_usr.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/operations/compressor_usr.ipynb @@ -41,7 +41,7 @@ "## Learning Outcomes\n", "\n", "- Demonstrate use of the compressor unit model in IDAES\n", - "- Demonstarte use of the Span Wagner EOS for supercritical CO2 cycles\n", + "- Demonstrate use of the Span Wagner EOS for supercritical CO2 cycles\n", "- Demonstrate different simulation options available for the compressor unit model\n", "\n", "In this tutorial, we will simulate the main compressor for an indirect supercritical CO2 cycle using the Span-Wagner EOS as the property package. The input specifications for this tutorial are from the NETL report on indirect SCO2 cycles available [here](https://www.osti.gov/biblio/1490272). In this example, we will be compressing supercritical CO2 from 9.1 MPa to 34.5 MPa. \n", @@ -150,7 +150,7 @@ "# DOF = Number of Model Variables - Number of Model Constraints\n", "from idaes.core.util.model_statistics import degrees_of_freedom\n", "\n", - "# Call the degrees_of_freedom function, get intitial DOF\n", + "# Call the degrees_of_freedom function, get initial DOF\n", "DOF_initial = degrees_of_freedom(m)\n", "print(\"The initial DOF is {0}\".format(DOF_initial))" ] @@ -292,7 +292,7 @@ " thermodynamic_assumption=ThermodynamicAssumption.isentropic,\n", ")\n", "\n", - "# Call the degrees_of_freedom function, get intitial DOF\n", + "# Call the degrees_of_freedom function, get initial DOF\n", "DOF_initial = degrees_of_freedom(m.fs.compr_case_2)\n", "print(\"The initial DOF is {0}\".format(DOF_initial))" ] @@ -431,4 +431,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/unit_models/operations/heat_exchanger_0d.ipynb b/idaes_examples/notebooks/docs/unit_models/operations/heat_exchanger_0d.ipynb index 35938194..d7f22f19 100644 --- a/idaes_examples/notebooks/docs/unit_models/operations/heat_exchanger_0d.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/operations/heat_exchanger_0d.ipynb @@ -144,7 +144,7 @@ " tube={\"property_package\": m.fs.properties_tube},\n", ")\n", "\n", - "# Call the degrees_of_freedom function, get intitial DOF\n", + "# Call the degrees_of_freedom function, get initial DOF\n", "DOF_initial = degrees_of_freedom(m)\n", "print(\"The initial DOF is {0}\".format(DOF_initial))" ] diff --git a/idaes_examples/notebooks/docs/unit_models/operations/heat_exchanger_0d_doc.ipynb b/idaes_examples/notebooks/docs/unit_models/operations/heat_exchanger_0d_doc.ipynb index aec04e6f..bd16e69e 100644 --- a/idaes_examples/notebooks/docs/unit_models/operations/heat_exchanger_0d_doc.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/operations/heat_exchanger_0d_doc.ipynb @@ -152,7 +152,7 @@ " tube={\"property_package\": m.fs.properties_tube},\n", ")\n", "\n", - "# Call the degrees_of_freedom function, get intitial DOF\n", + "# Call the degrees_of_freedom function, get initial DOF\n", "DOF_initial = degrees_of_freedom(m)\n", "print(\"The initial DOF is {0}\".format(DOF_initial))" ] @@ -534,4 +534,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/unit_models/operations/heat_exchanger_0d_test.ipynb b/idaes_examples/notebooks/docs/unit_models/operations/heat_exchanger_0d_test.ipynb index 4c392c89..573ea6df 100644 --- a/idaes_examples/notebooks/docs/unit_models/operations/heat_exchanger_0d_test.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/operations/heat_exchanger_0d_test.ipynb @@ -144,7 +144,7 @@ " tube={\"property_package\": m.fs.properties_tube},\n", ")\n", "\n", - "# Call the degrees_of_freedom function, get intitial DOF\n", + "# Call the degrees_of_freedom function, get initial DOF\n", "DOF_initial = degrees_of_freedom(m)\n", "print(\"The initial DOF is {0}\".format(DOF_initial))" ] @@ -357,4 +357,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/unit_models/operations/heat_exchanger_0d_usr.ipynb b/idaes_examples/notebooks/docs/unit_models/operations/heat_exchanger_0d_usr.ipynb index 970a6420..03106f87 100644 --- a/idaes_examples/notebooks/docs/unit_models/operations/heat_exchanger_0d_usr.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/operations/heat_exchanger_0d_usr.ipynb @@ -144,7 +144,7 @@ " tube={\"property_package\": m.fs.properties_tube},\n", ")\n", "\n", - "# Call the degrees_of_freedom function, get intitial DOF\n", + "# Call the degrees_of_freedom function, get initial DOF\n", "DOF_initial = degrees_of_freedom(m)\n", "print(\"The initial DOF is {0}\".format(DOF_initial))" ] @@ -286,4 +286,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/unit_models/operations/heater.ipynb b/idaes_examples/notebooks/docs/unit_models/operations/heater.ipynb index 8338e1d7..5774adcb 100644 --- a/idaes_examples/notebooks/docs/unit_models/operations/heater.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/operations/heater.ipynb @@ -116,7 +116,7 @@ "from idaes.core.util.model_statistics import degrees_of_freedom\n", "\n", "\n", - "# Call the degrees_of_freedom function, get intitial DOF\n", + "# Call the degrees_of_freedom function, get initial DOF\n", "DOF_initial = degrees_of_freedom(m)\n", "print(\"The initial DOF is {0}\".format(DOF_initial))" ] diff --git a/idaes_examples/notebooks/docs/unit_models/operations/heater_doc.ipynb b/idaes_examples/notebooks/docs/unit_models/operations/heater_doc.ipynb index 239de3fd..65fc12f9 100644 --- a/idaes_examples/notebooks/docs/unit_models/operations/heater_doc.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/operations/heater_doc.ipynb @@ -124,7 +124,7 @@ "from idaes.core.util.model_statistics import degrees_of_freedom\n", "\n", "\n", - "# Call the degrees_of_freedom function, get intitial DOF\n", + "# Call the degrees_of_freedom function, get initial DOF\n", "DOF_initial = degrees_of_freedom(m)\n", "print(\"The initial DOF is {0}\".format(DOF_initial))" ] @@ -726,4 +726,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/unit_models/operations/heater_test.ipynb b/idaes_examples/notebooks/docs/unit_models/operations/heater_test.ipynb index 28f8bfa6..c845805c 100644 --- a/idaes_examples/notebooks/docs/unit_models/operations/heater_test.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/operations/heater_test.ipynb @@ -116,7 +116,7 @@ "from idaes.core.util.model_statistics import degrees_of_freedom\n", "\n", "\n", - "# Call the degrees_of_freedom function, get intitial DOF\n", + "# Call the degrees_of_freedom function, get initial DOF\n", "DOF_initial = degrees_of_freedom(m)\n", "print(\"The initial DOF is {0}\".format(DOF_initial))" ] @@ -472,4 +472,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/unit_models/operations/heater_usr.ipynb b/idaes_examples/notebooks/docs/unit_models/operations/heater_usr.ipynb index c4969473..ea1b4363 100644 --- a/idaes_examples/notebooks/docs/unit_models/operations/heater_usr.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/operations/heater_usr.ipynb @@ -116,7 +116,7 @@ "from idaes.core.util.model_statistics import degrees_of_freedom\n", "\n", "\n", - "# Call the degrees_of_freedom function, get intitial DOF\n", + "# Call the degrees_of_freedom function, get initial DOF\n", "DOF_initial = degrees_of_freedom(m)\n", "print(\"The initial DOF is {0}\".format(DOF_initial))" ] @@ -366,4 +366,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/unit_models/operations/pump.ipynb b/idaes_examples/notebooks/docs/unit_models/operations/pump.ipynb index da4d0228..1fa67e77 100644 --- a/idaes_examples/notebooks/docs/unit_models/operations/pump.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/operations/pump.ipynb @@ -149,7 +149,7 @@ "# DOF = Number of Model Variables - Number of Model Constraints\n", "from idaes.core.util.model_statistics import degrees_of_freedom\n", "\n", - "# Call the degrees_of_freedom function, get intitial DOF\n", + "# Call the degrees_of_freedom function, get initial DOF\n", "DOF_initial = degrees_of_freedom(m)\n", "print(\"The initial DOF is {0}\".format(DOF_initial))" ] @@ -343,7 +343,7 @@ "# Specify that the property package to be used with the pump is the one we created earlier.\n", "m.fs.pump_case_2 = Pump(property_package=m.fs.properties)\n", "\n", - "# Call the degrees_of_freedom function, get intitial DOF\n", + "# Call the degrees_of_freedom function, get initial DOF\n", "DOF_initial = degrees_of_freedom(m.fs.pump_case_2)\n", "print(\"The initial DOF is {0}\".format(DOF_initial))" ] diff --git a/idaes_examples/notebooks/docs/unit_models/operations/pump_doc.ipynb b/idaes_examples/notebooks/docs/unit_models/operations/pump_doc.ipynb index 249fc935..a03e1227 100644 --- a/idaes_examples/notebooks/docs/unit_models/operations/pump_doc.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/operations/pump_doc.ipynb @@ -157,7 +157,7 @@ "# DOF = Number of Model Variables - Number of Model Constraints\n", "from idaes.core.util.model_statistics import degrees_of_freedom\n", "\n", - "# Call the degrees_of_freedom function, get intitial DOF\n", + "# Call the degrees_of_freedom function, get initial DOF\n", "DOF_initial = degrees_of_freedom(m)\n", "print(\"The initial DOF is {0}\".format(DOF_initial))" ] @@ -434,7 +434,7 @@ "# Specify that the property package to be used with the pump is the one we created earlier.\n", "m.fs.pump_case_2 = Pump(property_package=m.fs.properties)\n", "\n", - "# Call the degrees_of_freedom function, get intitial DOF\n", + "# Call the degrees_of_freedom function, get initial DOF\n", "DOF_initial = degrees_of_freedom(m.fs.pump_case_2)\n", "print(\"The initial DOF is {0}\".format(DOF_initial))" ] @@ -691,4 +691,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/unit_models/operations/pump_test.ipynb b/idaes_examples/notebooks/docs/unit_models/operations/pump_test.ipynb index 54fadf60..f1ba0ff3 100644 --- a/idaes_examples/notebooks/docs/unit_models/operations/pump_test.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/operations/pump_test.ipynb @@ -149,7 +149,7 @@ "# DOF = Number of Model Variables - Number of Model Constraints\n", "from idaes.core.util.model_statistics import degrees_of_freedom\n", "\n", - "# Call the degrees_of_freedom function, get intitial DOF\n", + "# Call the degrees_of_freedom function, get initial DOF\n", "DOF_initial = degrees_of_freedom(m)\n", "print(\"The initial DOF is {0}\".format(DOF_initial))" ] @@ -343,7 +343,7 @@ "# Specify that the property package to be used with the pump is the one we created earlier.\n", "m.fs.pump_case_2 = Pump(property_package=m.fs.properties)\n", "\n", - "# Call the degrees_of_freedom function, get intitial DOF\n", + "# Call the degrees_of_freedom function, get initial DOF\n", "DOF_initial = degrees_of_freedom(m.fs.pump_case_2)\n", "print(\"The initial DOF is {0}\".format(DOF_initial))" ] @@ -535,4 +535,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/unit_models/operations/pump_usr.ipynb b/idaes_examples/notebooks/docs/unit_models/operations/pump_usr.ipynb index 077bdb37..15e6db9a 100644 --- a/idaes_examples/notebooks/docs/unit_models/operations/pump_usr.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/operations/pump_usr.ipynb @@ -149,7 +149,7 @@ "# DOF = Number of Model Variables - Number of Model Constraints\n", "from idaes.core.util.model_statistics import degrees_of_freedom\n", "\n", - "# Call the degrees_of_freedom function, get intitial DOF\n", + "# Call the degrees_of_freedom function, get initial DOF\n", "DOF_initial = degrees_of_freedom(m)\n", "print(\"The initial DOF is {0}\".format(DOF_initial))" ] @@ -283,7 +283,7 @@ "# Specify that the property package to be used with the pump is the one we created earlier.\n", "m.fs.pump_case_2 = Pump(property_package=m.fs.properties)\n", "\n", - "# Call the degrees_of_freedom function, get intitial DOF\n", + "# Call the degrees_of_freedom function, get initial DOF\n", "DOF_initial = degrees_of_freedom(m.fs.pump_case_2)\n", "print(\"The initial DOF is {0}\".format(DOF_initial))" ] @@ -417,4 +417,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/unit_models/operations/skeleton_unit.ipynb b/idaes_examples/notebooks/docs/unit_models/operations/skeleton_unit.ipynb index 042becc3..922f495f 100644 --- a/idaes_examples/notebooks/docs/unit_models/operations/skeleton_unit.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/operations/skeleton_unit.ipynb @@ -47,7 +47,7 @@ "\n", "In many cases, a specific application requires a unique unit operation that does not exist in the IDAES repository. Custom user models may source from external scripts, import surrogate equations or use first-principles calculations. However, IDAES flowsheets adhere to a standardized modeling hierarchy and simple Pyomo models do not always follow these conventions. Additionally, simple flowsheet submodels often require integration with other IDAES unit models which requires consistency between corresponding port variables, stream properties and physical unit sets, as well as proper usage of `ControlVolume` blocks.\n", "\n", - "The IDAES `SkeletonUnitModel` allows custom creation of user models blocks that do not require `ControlVolume` blocks, and enabling connection with standard IDAES unit models that do contain `ControlVolume` blocks. To motivate the usefulness and versatility of this tool, we will consider a simple pervaporation unit. The custom model does not require rigourous thermodynamic calculations contained in adjacent unit models, and using a Skeleton model allows definition of only required variables and constraints. The new block does require state variable connections for the inlet and outlet streams. We will demonstrate this scenario below to highlight the usage and benefits of the Skeleton model." + "The IDAES `SkeletonUnitModel` allows custom creation of user models blocks that do not require `ControlVolume` blocks, and enabling connection with standard IDAES unit models that do contain `ControlVolume` blocks. To motivate the usefulness and versatility of this tool, we will consider a simple pervaporation unit. The custom model does not require rigorous thermodynamic calculations contained in adjacent unit models, and using a Skeleton model allows definition of only required variables and constraints. The new block does require state variable connections for the inlet and outlet streams. We will demonstrate this scenario below to highlight the usage and benefits of the Skeleton model." ] }, { @@ -56,7 +56,7 @@ "source": [ "# 2. Example - Pervaporation\n", "\n", - "Pervaporation is a low-energy separation process, and is particularly advantageous over distillation for azeotropic solutions or aqueous mixtures of heavy alcohols. Ethylene glycol is more environmentally friendly than typical chloride- and bromide-based dessicants, and is a common choice for commericial recovery of water from flue gas via liquid spray columns. Due to ethylene glycol's high boiling point, diffusion-based water recovery is economically favorable compared to distillation-based processes. The following example and flux correlation are taken from the literature source below:\n", + "Pervaporation is a low-energy separation process, and is particularly advantageous over distillation for azeotropic solutions or aqueous mixtures of heavy alcohols. Ethylene glycol is more environmentally friendly than typical chloride- and bromide-based dessicants, and is a common choice for commercial recovery of water from flue gas via liquid spray columns. Due to ethylene glycol's high boiling point, diffusion-based water recovery is economically favorable compared to distillation-based processes. The following example and flux correlation are taken from the literature source below:\n", "\n", "Jennifer Runhong Du, Amit Chakma, X. Feng, Dehydration of ethylene glycol by pervaporation using poly(N,N-dimethylaminoethyl methacrylate)/polysulfone composite membranes, Separation and Purification Technology, Volume 64, Issue 1, 2008, Pages 63-70, ISSN 1383-5866, https://doi.org/10.1016/j.seppur.2008.08.004.\n", "\n", @@ -429,7 +429,7 @@ "metadata": {}, "source": [ "## 2.4 Custom Initialization\n", - "In addition to allowing custom variable and constraint defintions, the Skeleton model enables implementation of a custom initialization scheme. Complex unit operations may present unique tractability issues, and users have precise control over piecewise unit model solving." + "In addition to allowing custom variable and constraint definitions, the Skeleton model enables implementation of a custom initialization scheme. Complex unit operations may present unique tractability issues, and users have precise control over piecewise unit model solving." ] }, { diff --git a/idaes_examples/notebooks/docs/unit_models/operations/skeleton_unit_doc.ipynb b/idaes_examples/notebooks/docs/unit_models/operations/skeleton_unit_doc.ipynb index 8a31d626..0273e79d 100644 --- a/idaes_examples/notebooks/docs/unit_models/operations/skeleton_unit_doc.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/operations/skeleton_unit_doc.ipynb @@ -47,7 +47,7 @@ "\n", "In many cases, a specific application requires a unique unit operation that does not exist in the IDAES repository. Custom user models may source from external scripts, import surrogate equations or use first-principles calculations. However, IDAES flowsheets adhere to a standardized modeling hierarchy and simple Pyomo models do not always follow these conventions. Additionally, simple flowsheet submodels often require integration with other IDAES unit models which requires consistency between corresponding port variables, stream properties and physical unit sets, as well as proper usage of `ControlVolume` blocks.\n", "\n", - "The IDAES `SkeletonUnitModel` allows custom creation of user models blocks that do not require `ControlVolume` blocks, and enabling connection with standard IDAES unit models that do contain `ControlVolume` blocks. To motivate the usefulness and versatility of this tool, we will consider a simple pervaporation unit. The custom model does not require rigourous thermodynamic calculations contained in adjacent unit models, and using a Skeleton model allows definition of only required variables and constraints. The new block does require state variable connections for the inlet and outlet streams. We will demonstrate this scenario below to highlight the usage and benefits of the Skeleton model." + "The IDAES `SkeletonUnitModel` allows custom creation of user models blocks that do not require `ControlVolume` blocks, and enabling connection with standard IDAES unit models that do contain `ControlVolume` blocks. To motivate the usefulness and versatility of this tool, we will consider a simple pervaporation unit. The custom model does not require rigorous thermodynamic calculations contained in adjacent unit models, and using a Skeleton model allows definition of only required variables and constraints. The new block does require state variable connections for the inlet and outlet streams. We will demonstrate this scenario below to highlight the usage and benefits of the Skeleton model." ] }, { @@ -56,7 +56,7 @@ "source": [ "# 2. Example - Pervaporation\n", "\n", - "Pervaporation is a low-energy separation process, and is particularly advantageous over distillation for azeotropic solutions or aqueous mixtures of heavy alcohols. Ethylene glycol is more environmentally friendly than typical chloride- and bromide-based dessicants, and is a common choice for commericial recovery of water from flue gas via liquid spray columns. Due to ethylene glycol's high boiling point, diffusion-based water recovery is economically favorable compared to distillation-based processes. The following example and flux correlation are taken from the literature source below:\n", + "Pervaporation is a low-energy separation process, and is particularly advantageous over distillation for azeotropic solutions or aqueous mixtures of heavy alcohols. Ethylene glycol is more environmentally friendly than typical chloride- and bromide-based dessicants, and is a common choice for commercial recovery of water from flue gas via liquid spray columns. Due to ethylene glycol's high boiling point, diffusion-based water recovery is economically favorable compared to distillation-based processes. The following example and flux correlation are taken from the literature source below:\n", "\n", "Jennifer Runhong Du, Amit Chakma, X. Feng, Dehydration of ethylene glycol by pervaporation using poly(N,N-dimethylaminoethyl methacrylate)/polysulfone composite membranes, Separation and Purification Technology, Volume 64, Issue 1, 2008, Pages 63-70, ISSN 1383-5866, https://doi.org/10.1016/j.seppur.2008.08.004.\n", "\n", @@ -437,7 +437,7 @@ "metadata": {}, "source": [ "## 2.4 Custom Initialization\n", - "In addition to allowing custom variable and constraint defintions, the Skeleton model enables implementation of a custom initialization scheme. Complex unit operations may present unique tractability issues, and users have precise control over piecewise unit model solving." + "In addition to allowing custom variable and constraint definitions, the Skeleton model enables implementation of a custom initialization scheme. Complex unit operations may present unique tractability issues, and users have precise control over piecewise unit model solving." ] }, { @@ -1205,4 +1205,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/unit_models/operations/skeleton_unit_test.ipynb b/idaes_examples/notebooks/docs/unit_models/operations/skeleton_unit_test.ipynb index 36155c95..9d9adfbe 100644 --- a/idaes_examples/notebooks/docs/unit_models/operations/skeleton_unit_test.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/operations/skeleton_unit_test.ipynb @@ -47,7 +47,7 @@ "\n", "In many cases, a specific application requires a unique unit operation that does not exist in the IDAES repository. Custom user models may source from external scripts, import surrogate equations or use first-principles calculations. However, IDAES flowsheets adhere to a standardized modeling hierarchy and simple Pyomo models do not always follow these conventions. Additionally, simple flowsheet submodels often require integration with other IDAES unit models which requires consistency between corresponding port variables, stream properties and physical unit sets, as well as proper usage of `ControlVolume` blocks.\n", "\n", - "The IDAES `SkeletonUnitModel` allows custom creation of user models blocks that do not require `ControlVolume` blocks, and enabling connection with standard IDAES unit models that do contain `ControlVolume` blocks. To motivate the usefulness and versatility of this tool, we will consider a simple pervaporation unit. The custom model does not require rigourous thermodynamic calculations contained in adjacent unit models, and using a Skeleton model allows definition of only required variables and constraints. The new block does require state variable connections for the inlet and outlet streams. We will demonstrate this scenario below to highlight the usage and benefits of the Skeleton model." + "The IDAES `SkeletonUnitModel` allows custom creation of user models blocks that do not require `ControlVolume` blocks, and enabling connection with standard IDAES unit models that do contain `ControlVolume` blocks. To motivate the usefulness and versatility of this tool, we will consider a simple pervaporation unit. The custom model does not require rigorous thermodynamic calculations contained in adjacent unit models, and using a Skeleton model allows definition of only required variables and constraints. The new block does require state variable connections for the inlet and outlet streams. We will demonstrate this scenario below to highlight the usage and benefits of the Skeleton model." ] }, { @@ -56,7 +56,7 @@ "source": [ "# 2. Example - Pervaporation\n", "\n", - "Pervaporation is a low-energy separation process, and is particularly advantageous over distillation for azeotropic solutions or aqueous mixtures of heavy alcohols. Ethylene glycol is more environmentally friendly than typical chloride- and bromide-based dessicants, and is a common choice for commericial recovery of water from flue gas via liquid spray columns. Due to ethylene glycol's high boiling point, diffusion-based water recovery is economically favorable compared to distillation-based processes. The following example and flux correlation are taken from the literature source below:\n", + "Pervaporation is a low-energy separation process, and is particularly advantageous over distillation for azeotropic solutions or aqueous mixtures of heavy alcohols. Ethylene glycol is more environmentally friendly than typical chloride- and bromide-based dessicants, and is a common choice for commercial recovery of water from flue gas via liquid spray columns. Due to ethylene glycol's high boiling point, diffusion-based water recovery is economically favorable compared to distillation-based processes. The following example and flux correlation are taken from the literature source below:\n", "\n", "Jennifer Runhong Du, Amit Chakma, X. Feng, Dehydration of ethylene glycol by pervaporation using poly(N,N-dimethylaminoethyl methacrylate)/polysulfone composite membranes, Separation and Purification Technology, Volume 64, Issue 1, 2008, Pages 63-70, ISSN 1383-5866, https://doi.org/10.1016/j.seppur.2008.08.004.\n", "\n", @@ -429,7 +429,7 @@ "metadata": {}, "source": [ "## 2.4 Custom Initialization\n", - "In addition to allowing custom variable and constraint defintions, the Skeleton model enables implementation of a custom initialization scheme. Complex unit operations may present unique tractability issues, and users have precise control over piecewise unit model solving." + "In addition to allowing custom variable and constraint definitions, the Skeleton model enables implementation of a custom initialization scheme. Complex unit operations may present unique tractability issues, and users have precise control over piecewise unit model solving." ] }, { @@ -724,4 +724,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/unit_models/operations/skeleton_unit_usr.ipynb b/idaes_examples/notebooks/docs/unit_models/operations/skeleton_unit_usr.ipynb index 36155c95..9d9adfbe 100644 --- a/idaes_examples/notebooks/docs/unit_models/operations/skeleton_unit_usr.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/operations/skeleton_unit_usr.ipynb @@ -47,7 +47,7 @@ "\n", "In many cases, a specific application requires a unique unit operation that does not exist in the IDAES repository. Custom user models may source from external scripts, import surrogate equations or use first-principles calculations. However, IDAES flowsheets adhere to a standardized modeling hierarchy and simple Pyomo models do not always follow these conventions. Additionally, simple flowsheet submodels often require integration with other IDAES unit models which requires consistency between corresponding port variables, stream properties and physical unit sets, as well as proper usage of `ControlVolume` blocks.\n", "\n", - "The IDAES `SkeletonUnitModel` allows custom creation of user models blocks that do not require `ControlVolume` blocks, and enabling connection with standard IDAES unit models that do contain `ControlVolume` blocks. To motivate the usefulness and versatility of this tool, we will consider a simple pervaporation unit. The custom model does not require rigourous thermodynamic calculations contained in adjacent unit models, and using a Skeleton model allows definition of only required variables and constraints. The new block does require state variable connections for the inlet and outlet streams. We will demonstrate this scenario below to highlight the usage and benefits of the Skeleton model." + "The IDAES `SkeletonUnitModel` allows custom creation of user models blocks that do not require `ControlVolume` blocks, and enabling connection with standard IDAES unit models that do contain `ControlVolume` blocks. To motivate the usefulness and versatility of this tool, we will consider a simple pervaporation unit. The custom model does not require rigorous thermodynamic calculations contained in adjacent unit models, and using a Skeleton model allows definition of only required variables and constraints. The new block does require state variable connections for the inlet and outlet streams. We will demonstrate this scenario below to highlight the usage and benefits of the Skeleton model." ] }, { @@ -56,7 +56,7 @@ "source": [ "# 2. Example - Pervaporation\n", "\n", - "Pervaporation is a low-energy separation process, and is particularly advantageous over distillation for azeotropic solutions or aqueous mixtures of heavy alcohols. Ethylene glycol is more environmentally friendly than typical chloride- and bromide-based dessicants, and is a common choice for commericial recovery of water from flue gas via liquid spray columns. Due to ethylene glycol's high boiling point, diffusion-based water recovery is economically favorable compared to distillation-based processes. The following example and flux correlation are taken from the literature source below:\n", + "Pervaporation is a low-energy separation process, and is particularly advantageous over distillation for azeotropic solutions or aqueous mixtures of heavy alcohols. Ethylene glycol is more environmentally friendly than typical chloride- and bromide-based dessicants, and is a common choice for commercial recovery of water from flue gas via liquid spray columns. Due to ethylene glycol's high boiling point, diffusion-based water recovery is economically favorable compared to distillation-based processes. The following example and flux correlation are taken from the literature source below:\n", "\n", "Jennifer Runhong Du, Amit Chakma, X. Feng, Dehydration of ethylene glycol by pervaporation using poly(N,N-dimethylaminoethyl methacrylate)/polysulfone composite membranes, Separation and Purification Technology, Volume 64, Issue 1, 2008, Pages 63-70, ISSN 1383-5866, https://doi.org/10.1016/j.seppur.2008.08.004.\n", "\n", @@ -429,7 +429,7 @@ "metadata": {}, "source": [ "## 2.4 Custom Initialization\n", - "In addition to allowing custom variable and constraint defintions, the Skeleton model enables implementation of a custom initialization scheme. Complex unit operations may present unique tractability issues, and users have precise control over piecewise unit model solving." + "In addition to allowing custom variable and constraint definitions, the Skeleton model enables implementation of a custom initialization scheme. Complex unit operations may present unique tractability issues, and users have precise control over piecewise unit model solving." ] }, { @@ -724,4 +724,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/unit_models/operations/turbine.ipynb b/idaes_examples/notebooks/docs/unit_models/operations/turbine.ipynb index 48bcc8fd..3979dd95 100644 --- a/idaes_examples/notebooks/docs/unit_models/operations/turbine.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/operations/turbine.ipynb @@ -148,7 +148,7 @@ "# DOF = Number of Model Variables - Number of Model Constraints\n", "from idaes.core.util.model_statistics import degrees_of_freedom\n", "\n", - "# Call the degrees_of_freedom function, get intitial DOF\n", + "# Call the degrees_of_freedom function, get initial DOF\n", "DOF_initial = degrees_of_freedom(m)\n", "print(\"The initial DOF is {0}\".format(DOF_initial))" ] @@ -347,7 +347,7 @@ "# Specify that the property package to be used with the turbine is the one we created earlier.\n", "m.fs.turbine_case_2 = Turbine(property_package=m.fs.properties)\n", "\n", - "# Call the degrees_of_freedom function, get intitial DOF\n", + "# Call the degrees_of_freedom function, get initial DOF\n", "DOF_initial = degrees_of_freedom(m.fs.turbine_case_2)\n", "print(\"The initial DOF is {0}\".format(DOF_initial))" ] diff --git a/idaes_examples/notebooks/docs/unit_models/operations/turbine_doc.ipynb b/idaes_examples/notebooks/docs/unit_models/operations/turbine_doc.ipynb index fd3828e2..e2f39fcc 100644 --- a/idaes_examples/notebooks/docs/unit_models/operations/turbine_doc.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/operations/turbine_doc.ipynb @@ -156,7 +156,7 @@ "# DOF = Number of Model Variables - Number of Model Constraints\n", "from idaes.core.util.model_statistics import degrees_of_freedom\n", "\n", - "# Call the degrees_of_freedom function, get intitial DOF\n", + "# Call the degrees_of_freedom function, get initial DOF\n", "DOF_initial = degrees_of_freedom(m)\n", "print(\"The initial DOF is {0}\".format(DOF_initial))" ] @@ -448,7 +448,7 @@ "# Specify that the property package to be used with the turbine is the one we created earlier.\n", "m.fs.turbine_case_2 = Turbine(property_package=m.fs.properties)\n", "\n", - "# Call the degrees_of_freedom function, get intitial DOF\n", + "# Call the degrees_of_freedom function, get initial DOF\n", "DOF_initial = degrees_of_freedom(m.fs.turbine_case_2)\n", "print(\"The initial DOF is {0}\".format(DOF_initial))" ] @@ -721,4 +721,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/unit_models/operations/turbine_test.ipynb b/idaes_examples/notebooks/docs/unit_models/operations/turbine_test.ipynb index 463e407c..d3fff7d0 100644 --- a/idaes_examples/notebooks/docs/unit_models/operations/turbine_test.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/operations/turbine_test.ipynb @@ -148,7 +148,7 @@ "# DOF = Number of Model Variables - Number of Model Constraints\n", "from idaes.core.util.model_statistics import degrees_of_freedom\n", "\n", - "# Call the degrees_of_freedom function, get intitial DOF\n", + "# Call the degrees_of_freedom function, get initial DOF\n", "DOF_initial = degrees_of_freedom(m)\n", "print(\"The initial DOF is {0}\".format(DOF_initial))" ] @@ -347,7 +347,7 @@ "# Specify that the property package to be used with the turbine is the one we created earlier.\n", "m.fs.turbine_case_2 = Turbine(property_package=m.fs.properties)\n", "\n", - "# Call the degrees_of_freedom function, get intitial DOF\n", + "# Call the degrees_of_freedom function, get initial DOF\n", "DOF_initial = degrees_of_freedom(m.fs.turbine_case_2)\n", "print(\"The initial DOF is {0}\".format(DOF_initial))" ] @@ -549,4 +549,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/unit_models/operations/turbine_usr.ipynb b/idaes_examples/notebooks/docs/unit_models/operations/turbine_usr.ipynb index ba1eb147..bcebdfef 100644 --- a/idaes_examples/notebooks/docs/unit_models/operations/turbine_usr.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/operations/turbine_usr.ipynb @@ -148,7 +148,7 @@ "# DOF = Number of Model Variables - Number of Model Constraints\n", "from idaes.core.util.model_statistics import degrees_of_freedom\n", "\n", - "# Call the degrees_of_freedom function, get intitial DOF\n", + "# Call the degrees_of_freedom function, get initial DOF\n", "DOF_initial = degrees_of_freedom(m)\n", "print(\"The initial DOF is {0}\".format(DOF_initial))" ] @@ -300,7 +300,7 @@ "# Specify that the property package to be used with the turbine is the one we created earlier.\n", "m.fs.turbine_case_2 = Turbine(property_package=m.fs.properties)\n", "\n", - "# Call the degrees_of_freedom function, get intitial DOF\n", + "# Call the degrees_of_freedom function, get initial DOF\n", "DOF_initial = degrees_of_freedom(m.fs.turbine_case_2)\n", "print(\"The initial DOF is {0}\".format(DOF_initial))" ] @@ -440,4 +440,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/unit_models/reactors/cstr.ipynb b/idaes_examples/notebooks/docs/unit_models/reactors/cstr.ipynb index d028a0d2..95e99c96 100644 --- a/idaes_examples/notebooks/docs/unit_models/reactors/cstr.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/reactors/cstr.ipynb @@ -257,7 +257,7 @@ "source": [ "## Connecting Unit Models Using Arcs\n", "\n", - "We have now added all the unit models we need to the flowsheet. However, we have not yet specifed how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the `Mixer` to the inlet of the `Heater`, and the outlet of the `Heater` to the inlet of the `CSTR`. Additionally, we will connect the `Feed` and `Product` blocks to the flowsheet:" + "We have now added all the unit models we need to the flowsheet. However, we have not yet specified how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the `Mixer` to the inlet of the `Heater`, and the outlet of the `Heater` to the inlet of the `CSTR`. Additionally, we will connect the `Feed` and `Product` blocks to the flowsheet:" ] }, { @@ -295,7 +295,7 @@ "source": [ "## Adding Expressions to Compute Operating Costs\n", "\n", - "In this section, we will add a few Expressions that allows us to evaluate the performance. `Expressions` provide a convenient way of calculating certain values that are a function of the variables defined in the model. For more details on `Expressions`, please refer to the [Pyomo Expression documentaiton]( https://pyomo.readthedocs.io/en/stable/pyomo_modeling_components/Expressions.html).\n", + "In this section, we will add a few Expressions that allows us to evaluate the performance. `Expressions` provide a convenient way of calculating certain values that are a function of the variables defined in the model. For more details on `Expressions`, please refer to the [Pyomo Expression documentation]( https://pyomo.readthedocs.io/en/stable/pyomo_modeling_components/Expressions.html).\n", "\n", "For this flowsheet, we are interested in computing ethylene glycol production in millions of pounds per year, as well as the total costs due to cooling and heating utilities." ] diff --git a/idaes_examples/notebooks/docs/unit_models/reactors/cstr_doc.ipynb b/idaes_examples/notebooks/docs/unit_models/reactors/cstr_doc.ipynb index b1bc553b..0186ee75 100644 --- a/idaes_examples/notebooks/docs/unit_models/reactors/cstr_doc.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/reactors/cstr_doc.ipynb @@ -257,7 +257,7 @@ "source": [ "## Connecting Unit Models Using Arcs\n", "\n", - "We have now added all the unit models we need to the flowsheet. However, we have not yet specifed how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the `Mixer` to the inlet of the `Heater`, and the outlet of the `Heater` to the inlet of the `CSTR`. Additionally, we will connect the `Feed` and `Product` blocks to the flowsheet:" + "We have now added all the unit models we need to the flowsheet. However, we have not yet specified how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the `Mixer` to the inlet of the `Heater`, and the outlet of the `Heater` to the inlet of the `CSTR`. Additionally, we will connect the `Feed` and `Product` blocks to the flowsheet:" ] }, { @@ -295,7 +295,7 @@ "source": [ "## Adding Expressions to Compute Operating Costs\n", "\n", - "In this section, we will add a few Expressions that allows us to evaluate the performance. `Expressions` provide a convenient way of calculating certain values that are a function of the variables defined in the model. For more details on `Expressions`, please refer to the [Pyomo Expression documentaiton]( https://pyomo.readthedocs.io/en/stable/pyomo_modeling_components/Expressions.html).\n", + "In this section, we will add a few Expressions that allows us to evaluate the performance. `Expressions` provide a convenient way of calculating certain values that are a function of the variables defined in the model. For more details on `Expressions`, please refer to the [Pyomo Expression documentation]( https://pyomo.readthedocs.io/en/stable/pyomo_modeling_components/Expressions.html).\n", "\n", "For this flowsheet, we are interested in computing ethylene glycol production in millions of pounds per year, as well as the total costs due to cooling and heating utilities." ] @@ -1251,4 +1251,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/unit_models/reactors/cstr_test.ipynb b/idaes_examples/notebooks/docs/unit_models/reactors/cstr_test.ipynb index 46b442c2..517309b5 100644 --- a/idaes_examples/notebooks/docs/unit_models/reactors/cstr_test.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/reactors/cstr_test.ipynb @@ -54,7 +54,7 @@ "\n", "Ethylene glycol (EG) is a high-demand chemical, with billions of pounds produced every year for applications such as vehicle anti-freeze. EG may be readily obtained from the hydrolysis of ethylene oxide in the presence of a catalytic intermediate. In this example, an aqueous solution of ethylene oxide hydrolizes after mixing with an aqueous solution of sulfuric acid catalyst:\n", "\n", - "**C2H4O + H2O + H2SO4 \u2192 C2H6O2 + H2SO4**\n", + "**C2H4O + H2O + H2SO4 → C2H6O2 + H2SO4**\n", "\n", "This reaction often occurs by two mechanisms, as the catalyst may bind to either reactant before the final hydrolysis step; we will simplify the reaction to a single step for this example.\n", "\n", @@ -257,7 +257,7 @@ "source": [ "## Connecting Unit Models Using Arcs\n", "\n", - "We have now added all the unit models we need to the flowsheet. However, we have not yet specifed how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the `Mixer` to the inlet of the `Heater`, and the outlet of the `Heater` to the inlet of the `CSTR`. Additionally, we will connect the `Feed` and `Product` blocks to the flowsheet:" + "We have now added all the unit models we need to the flowsheet. However, we have not yet specified how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the `Mixer` to the inlet of the `Heater`, and the outlet of the `Heater` to the inlet of the `CSTR`. Additionally, we will connect the `Feed` and `Product` blocks to the flowsheet:" ] }, { @@ -295,7 +295,7 @@ "source": [ "## Adding Expressions to Compute Operating Costs\n", "\n", - "In this section, we will add a few Expressions that allows us to evaluate the performance. `Expressions` provide a convenient way of calculating certain values that are a function of the variables defined in the model. For more details on `Expressions`, please refer to the [Pyomo Expression documentaiton]( https://pyomo.readthedocs.io/en/stable/pyomo_modeling_components/Expressions.html).\n", + "In this section, we will add a few Expressions that allows us to evaluate the performance. `Expressions` provide a convenient way of calculating certain values that are a function of the variables defined in the model. For more details on `Expressions`, please refer to the [Pyomo Expression documentation]( https://pyomo.readthedocs.io/en/stable/pyomo_modeling_components/Expressions.html).\n", "\n", "For this flowsheet, we are interested in computing ethylene glycol production in millions of pounds per year, as well as the total costs due to cooling and heating utilities." ] @@ -856,4 +856,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/unit_models/reactors/cstr_usr.ipynb b/idaes_examples/notebooks/docs/unit_models/reactors/cstr_usr.ipynb index 7a73538b..40b3f0a5 100644 --- a/idaes_examples/notebooks/docs/unit_models/reactors/cstr_usr.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/reactors/cstr_usr.ipynb @@ -54,7 +54,7 @@ "\n", "Ethylene glycol (EG) is a high-demand chemical, with billions of pounds produced every year for applications such as vehicle anti-freeze. EG may be readily obtained from the hydrolysis of ethylene oxide in the presence of a catalytic intermediate. In this example, an aqueous solution of ethylene oxide hydrolizes after mixing with an aqueous solution of sulfuric acid catalyst:\n", "\n", - "**C2H4O + H2O + H2SO4 \u2192 C2H6O2 + H2SO4**\n", + "**C2H4O + H2O + H2SO4 → C2H6O2 + H2SO4**\n", "\n", "This reaction often occurs by two mechanisms, as the catalyst may bind to either reactant before the final hydrolysis step; we will simplify the reaction to a single step for this example.\n", "\n", @@ -257,7 +257,7 @@ "source": [ "## Connecting Unit Models Using Arcs\n", "\n", - "We have now added all the unit models we need to the flowsheet. However, we have not yet specifed how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the `Mixer` to the inlet of the `Heater`, and the outlet of the `Heater` to the inlet of the `CSTR`. Additionally, we will connect the `Feed` and `Product` blocks to the flowsheet:" + "We have now added all the unit models we need to the flowsheet. However, we have not yet specified how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the `Mixer` to the inlet of the `Heater`, and the outlet of the `Heater` to the inlet of the `CSTR`. Additionally, we will connect the `Feed` and `Product` blocks to the flowsheet:" ] }, { @@ -295,7 +295,7 @@ "source": [ "## Adding Expressions to Compute Operating Costs\n", "\n", - "In this section, we will add a few Expressions that allows us to evaluate the performance. `Expressions` provide a convenient way of calculating certain values that are a function of the variables defined in the model. For more details on `Expressions`, please refer to the [Pyomo Expression documentaiton]( https://pyomo.readthedocs.io/en/stable/pyomo_modeling_components/Expressions.html).\n", + "In this section, we will add a few Expressions that allows us to evaluate the performance. `Expressions` provide a convenient way of calculating certain values that are a function of the variables defined in the model. For more details on `Expressions`, please refer to the [Pyomo Expression documentation]( https://pyomo.readthedocs.io/en/stable/pyomo_modeling_components/Expressions.html).\n", "\n", "For this flowsheet, we are interested in computing ethylene glycol production in millions of pounds per year, as well as the total costs due to cooling and heating utilities." ] @@ -722,4 +722,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/unit_models/reactors/equilibrium_reactor.ipynb b/idaes_examples/notebooks/docs/unit_models/reactors/equilibrium_reactor.ipynb index 7a95e819..e8b02ceb 100644 --- a/idaes_examples/notebooks/docs/unit_models/reactors/equilibrium_reactor.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/reactors/equilibrium_reactor.ipynb @@ -63,8 +63,7 @@ "\n", "The state variables chosen for the property package are **total molar flows of each stream, temperature of each stream and pressure of each stream, and mole fractions of each component in each stream**. The components considered are: **CH4, H2O, CO, CO2, and H2** and the process occurs in vapor phase only. Therefore, every stream has 1 flow variable, 5 mole fraction variables, 1 temperature and 1 pressure variable. \n", "\n", - "![](msr_flowsheet.png)\n", - "" + "![](msr_flowsheet.png)\n" ] }, { @@ -272,7 +271,7 @@ "source": [ "## Connecting Unit Models Using Arcs\n", "\n", - "We have now added all the unit models we need to the flowsheet. However, we have not yet specifed how the units are to be connected. To do this, we will be using the `Arc` which is a Pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the `Mixer` to the inlet of the `Compressor`, the outlet of the compressor `Compressor` to the inlet of the `Heater`, and the outlet of the `Heater` to the inlet of the `EquilibriumReactor`. Additionally, we will connect the `Feed` and `Product` blocks to the flowsheet:" + "We have now added all the unit models we need to the flowsheet. However, we have not yet specified how the units are to be connected. To do this, we will be using the `Arc` which is a Pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the `Mixer` to the inlet of the `Compressor`, the outlet of the compressor `Compressor` to the inlet of the `Heater`, and the outlet of the `Heater` to the inlet of the `EquilibriumReactor`. Additionally, we will connect the `Feed` and `Product` blocks to the flowsheet:" ] }, { diff --git a/idaes_examples/notebooks/docs/unit_models/reactors/equilibrium_reactor_doc.ipynb b/idaes_examples/notebooks/docs/unit_models/reactors/equilibrium_reactor_doc.ipynb index a0290f0b..0a3935a7 100644 --- a/idaes_examples/notebooks/docs/unit_models/reactors/equilibrium_reactor_doc.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/reactors/equilibrium_reactor_doc.ipynb @@ -271,7 +271,7 @@ "source": [ "## Connecting Unit Models Using Arcs\n", "\n", - "We have now added all the unit models we need to the flowsheet. However, we have not yet specifed how the units are to be connected. To do this, we will be using the `Arc` which is a Pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the `Mixer` to the inlet of the `Compressor`, the outlet of the compressor `Compressor` to the inlet of the `Heater`, and the outlet of the `Heater` to the inlet of the `EquilibriumReactor`. Additionally, we will connect the `Feed` and `Product` blocks to the flowsheet:" + "We have now added all the unit models we need to the flowsheet. However, we have not yet specified how the units are to be connected. To do this, we will be using the `Arc` which is a Pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the `Mixer` to the inlet of the `Compressor`, the outlet of the compressor `Compressor` to the inlet of the `Heater`, and the outlet of the `Heater` to the inlet of the `EquilibriumReactor`. Additionally, we will connect the `Feed` and `Product` blocks to the flowsheet:" ] }, { @@ -1349,4 +1349,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/unit_models/reactors/equilibrium_reactor_test.ipynb b/idaes_examples/notebooks/docs/unit_models/reactors/equilibrium_reactor_test.ipynb index 464604d2..9adb969e 100644 --- a/idaes_examples/notebooks/docs/unit_models/reactors/equilibrium_reactor_test.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/reactors/equilibrium_reactor_test.ipynb @@ -54,8 +54,8 @@ "\n", "Steam methane reforming (SMR) is one of the most common pathways for hydrogen production, taking advantage of chemical equilibria in natural gas systems. The process is typically done in two steps: methane reformation at a high temperature to partially oxidize methane, and water gas shift at a low temperature to complete the oxidation reaction:\n", "\n", - "**CH4 + H2O \u2192 CO + 3H2** \n", - "**CO + H2O \u2192 CO2 + H2**\n", + "**CH4 + H2O → CO + 3H2** \n", + "**CO + H2O → CO2 + H2**\n", "\n", "This reaction is often carried out in two separate reactors to allow for different reaction temperatures and pressures; in this example, we will minimize operating cost for a single reactor.\n", "\n", @@ -63,8 +63,7 @@ "\n", "The state variables chosen for the property package are **total molar flows of each stream, temperature of each stream and pressure of each stream, and mole fractions of each component in each stream**. The components considered are: **CH4, H2O, CO, CO2, and H2** and the process occurs in vapor phase only. Therefore, every stream has 1 flow variable, 5 mole fraction variables, 1 temperature and 1 pressure variable. \n", "\n", - "![](msr_flowsheet.png)\n", - "" + "![](msr_flowsheet.png)\n" ] }, { @@ -272,7 +271,7 @@ "source": [ "## Connecting Unit Models Using Arcs\n", "\n", - "We have now added all the unit models we need to the flowsheet. However, we have not yet specifed how the units are to be connected. To do this, we will be using the `Arc` which is a Pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the `Mixer` to the inlet of the `Compressor`, the outlet of the compressor `Compressor` to the inlet of the `Heater`, and the outlet of the `Heater` to the inlet of the `EquilibriumReactor`. Additionally, we will connect the `Feed` and `Product` blocks to the flowsheet:" + "We have now added all the unit models we need to the flowsheet. However, we have not yet specified how the units are to be connected. To do this, we will be using the `Arc` which is a Pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the `Mixer` to the inlet of the `Compressor`, the outlet of the compressor `Compressor` to the inlet of the `Heater`, and the outlet of the `Heater` to the inlet of the `EquilibriumReactor`. Additionally, we will connect the `Feed` and `Product` blocks to the flowsheet:" ] }, { @@ -867,4 +866,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/unit_models/reactors/equilibrium_reactor_usr.ipynb b/idaes_examples/notebooks/docs/unit_models/reactors/equilibrium_reactor_usr.ipynb index 90cc9c29..20b6e5a8 100644 --- a/idaes_examples/notebooks/docs/unit_models/reactors/equilibrium_reactor_usr.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/reactors/equilibrium_reactor_usr.ipynb @@ -54,8 +54,8 @@ "\n", "Steam methane reforming (SMR) is one of the most common pathways for hydrogen production, taking advantage of chemical equilibria in natural gas systems. The process is typically done in two steps: methane reformation at a high temperature to partially oxidize methane, and water gas shift at a low temperature to complete the oxidation reaction:\n", "\n", - "**CH4 + H2O \u2192 CO + 3H2** \n", - "**CO + H2O \u2192 CO2 + H2**\n", + "**CH4 + H2O → CO + 3H2** \n", + "**CO + H2O → CO2 + H2**\n", "\n", "This reaction is often carried out in two separate reactors to allow for different reaction temperatures and pressures; in this example, we will minimize operating cost for a single reactor.\n", "\n", @@ -63,8 +63,7 @@ "\n", "The state variables chosen for the property package are **total molar flows of each stream, temperature of each stream and pressure of each stream, and mole fractions of each component in each stream**. The components considered are: **CH4, H2O, CO, CO2, and H2** and the process occurs in vapor phase only. Therefore, every stream has 1 flow variable, 5 mole fraction variables, 1 temperature and 1 pressure variable. \n", "\n", - "![](msr_flowsheet.png)\n", - "" + "![](msr_flowsheet.png)\n" ] }, { @@ -272,7 +271,7 @@ "source": [ "## Connecting Unit Models Using Arcs\n", "\n", - "We have now added all the unit models we need to the flowsheet. However, we have not yet specifed how the units are to be connected. To do this, we will be using the `Arc` which is a Pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the `Mixer` to the inlet of the `Compressor`, the outlet of the compressor `Compressor` to the inlet of the `Heater`, and the outlet of the `Heater` to the inlet of the `EquilibriumReactor`. Additionally, we will connect the `Feed` and `Product` blocks to the flowsheet:" + "We have now added all the unit models we need to the flowsheet. However, we have not yet specified how the units are to be connected. To do this, we will be using the `Arc` which is a Pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the `Mixer` to the inlet of the `Compressor`, the outlet of the compressor `Compressor` to the inlet of the `Heater`, and the outlet of the `Heater` to the inlet of the `EquilibriumReactor`. Additionally, we will connect the `Feed` and `Product` blocks to the flowsheet:" ] }, { @@ -733,4 +732,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/unit_models/reactors/plug_flow_reactor.ipynb b/idaes_examples/notebooks/docs/unit_models/reactors/plug_flow_reactor.ipynb index 8b0887c1..2fe06cf1 100644 --- a/idaes_examples/notebooks/docs/unit_models/reactors/plug_flow_reactor.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/reactors/plug_flow_reactor.ipynb @@ -53,7 +53,7 @@ "\n", "Chemical reaction:\n", "\n", - "**C2H4O + H2O + H2SO4 \u2192 C2H6O2 + H2SO4**\n", + "**C2H4O + H2O + H2SO4 → C2H6O2 + H2SO4**\n", "\n", "Property Packages:\n", "\n", @@ -256,7 +256,7 @@ "source": [ "## Connecting Unit Models Using Arcs\n", "\n", - "We have now added all the unit models we need to the flowsheet. However, we have not yet specifed how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the `Mixer` to the inlet of the `Heater`, and the outlet of the `Heater` to the inlet of the `PFR`. Additionally, we will connect the `Feed` and `Product` blocks to the flowsheet:" + "We have now added all the unit models we need to the flowsheet. However, we have not yet specified how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the `Mixer` to the inlet of the `Heater`, and the outlet of the `Heater` to the inlet of the `PFR`. Additionally, we will connect the `Feed` and `Product` blocks to the flowsheet:" ] }, { @@ -294,7 +294,7 @@ "source": [ "## Adding Expressions to Compute Operating Costs\n", "\n", - "In this section, we will add a few Expressions that allows us to evaluate the performance. `Expressions` provide a convenient way of calculating certain values that are a function of the variables defined in the model. For more details on `Expressions`, please refer to the [Pyomo Expression documentaiton]( https://pyomo.readthedocs.io/en/stable/pyomo_modeling_components/Expressions.html).\n", + "In this section, we will add a few Expressions that allows us to evaluate the performance. `Expressions` provide a convenient way of calculating certain values that are a function of the variables defined in the model. For more details on `Expressions`, please refer to the [Pyomo Expression documentation]( https://pyomo.readthedocs.io/en/stable/pyomo_modeling_components/Expressions.html).\n", "\n", "For this flowsheet, we are interested in computing ethylene glycol production in millions of pounds per year, as well as the total costs due to cooling and heating utilities." ] @@ -977,4 +977,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/unit_models/reactors/plug_flow_reactor_doc.ipynb b/idaes_examples/notebooks/docs/unit_models/reactors/plug_flow_reactor_doc.ipynb index 5e4b7f03..3ecaff51 100644 --- a/idaes_examples/notebooks/docs/unit_models/reactors/plug_flow_reactor_doc.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/reactors/plug_flow_reactor_doc.ipynb @@ -256,7 +256,7 @@ "source": [ "## Connecting Unit Models Using Arcs\n", "\n", - "We have now added all the unit models we need to the flowsheet. However, we have not yet specifed how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the `Mixer` to the inlet of the `Heater`, and the outlet of the `Heater` to the inlet of the `PFR`. Additionally, we will connect the `Feed` and `Product` blocks to the flowsheet:" + "We have now added all the unit models we need to the flowsheet. However, we have not yet specified how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the `Mixer` to the inlet of the `Heater`, and the outlet of the `Heater` to the inlet of the `PFR`. Additionally, we will connect the `Feed` and `Product` blocks to the flowsheet:" ] }, { @@ -294,7 +294,7 @@ "source": [ "## Adding Expressions to Compute Operating Costs\n", "\n", - "In this section, we will add a few Expressions that allows us to evaluate the performance. `Expressions` provide a convenient way of calculating certain values that are a function of the variables defined in the model. For more details on `Expressions`, please refer to the [Pyomo Expression documentaiton]( https://pyomo.readthedocs.io/en/stable/pyomo_modeling_components/Expressions.html).\n", + "In this section, we will add a few Expressions that allows us to evaluate the performance. `Expressions` provide a convenient way of calculating certain values that are a function of the variables defined in the model. For more details on `Expressions`, please refer to the [Pyomo Expression documentation]( https://pyomo.readthedocs.io/en/stable/pyomo_modeling_components/Expressions.html).\n", "\n", "For this flowsheet, we are interested in computing ethylene glycol production in millions of pounds per year, as well as the total costs due to cooling and heating utilities." ] @@ -1337,4 +1337,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/unit_models/reactors/plug_flow_reactor_test.ipynb b/idaes_examples/notebooks/docs/unit_models/reactors/plug_flow_reactor_test.ipynb index 299620c2..dcfe84f8 100644 --- a/idaes_examples/notebooks/docs/unit_models/reactors/plug_flow_reactor_test.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/reactors/plug_flow_reactor_test.ipynb @@ -53,7 +53,7 @@ "\n", "Chemical reaction:\n", "\n", - "**C2H4O + H2O + H2SO4 \u2192 C2H6O2 + H2SO4**\n", + "**C2H4O + H2O + H2SO4 → C2H6O2 + H2SO4**\n", "\n", "Property Packages:\n", "\n", @@ -256,7 +256,7 @@ "source": [ "## Connecting Unit Models Using Arcs\n", "\n", - "We have now added all the unit models we need to the flowsheet. However, we have not yet specifed how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the `Mixer` to the inlet of the `Heater`, and the outlet of the `Heater` to the inlet of the `PFR`. Additionally, we will connect the `Feed` and `Product` blocks to the flowsheet:" + "We have now added all the unit models we need to the flowsheet. However, we have not yet specified how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the `Mixer` to the inlet of the `Heater`, and the outlet of the `Heater` to the inlet of the `PFR`. Additionally, we will connect the `Feed` and `Product` blocks to the flowsheet:" ] }, { @@ -294,7 +294,7 @@ "source": [ "## Adding Expressions to Compute Operating Costs\n", "\n", - "In this section, we will add a few Expressions that allows us to evaluate the performance. `Expressions` provide a convenient way of calculating certain values that are a function of the variables defined in the model. For more details on `Expressions`, please refer to the [Pyomo Expression documentaiton]( https://pyomo.readthedocs.io/en/stable/pyomo_modeling_components/Expressions.html).\n", + "In this section, we will add a few Expressions that allows us to evaluate the performance. `Expressions` provide a convenient way of calculating certain values that are a function of the variables defined in the model. For more details on `Expressions`, please refer to the [Pyomo Expression documentation]( https://pyomo.readthedocs.io/en/stable/pyomo_modeling_components/Expressions.html).\n", "\n", "For this flowsheet, we are interested in computing ethylene glycol production in millions of pounds per year, as well as the total costs due to cooling and heating utilities." ] @@ -977,4 +977,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/unit_models/reactors/plug_flow_reactor_usr.ipynb b/idaes_examples/notebooks/docs/unit_models/reactors/plug_flow_reactor_usr.ipynb index 5253a423..b0473332 100644 --- a/idaes_examples/notebooks/docs/unit_models/reactors/plug_flow_reactor_usr.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/reactors/plug_flow_reactor_usr.ipynb @@ -53,7 +53,7 @@ "\n", "Chemical reaction:\n", "\n", - "**C2H4O + H2O + H2SO4 \u2192 C2H6O2 + H2SO4**\n", + "**C2H4O + H2O + H2SO4 → C2H6O2 + H2SO4**\n", "\n", "Property Packages:\n", "\n", @@ -256,7 +256,7 @@ "source": [ "## Connecting Unit Models Using Arcs\n", "\n", - "We have now added all the unit models we need to the flowsheet. However, we have not yet specifed how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the `Mixer` to the inlet of the `Heater`, and the outlet of the `Heater` to the inlet of the `PFR`. Additionally, we will connect the `Feed` and `Product` blocks to the flowsheet:" + "We have now added all the unit models we need to the flowsheet. However, we have not yet specified how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the `Mixer` to the inlet of the `Heater`, and the outlet of the `Heater` to the inlet of the `PFR`. Additionally, we will connect the `Feed` and `Product` blocks to the flowsheet:" ] }, { @@ -294,7 +294,7 @@ "source": [ "## Adding Expressions to Compute Operating Costs\n", "\n", - "In this section, we will add a few Expressions that allows us to evaluate the performance. `Expressions` provide a convenient way of calculating certain values that are a function of the variables defined in the model. For more details on `Expressions`, please refer to the [Pyomo Expression documentaiton]( https://pyomo.readthedocs.io/en/stable/pyomo_modeling_components/Expressions.html).\n", + "In this section, we will add a few Expressions that allows us to evaluate the performance. `Expressions` provide a convenient way of calculating certain values that are a function of the variables defined in the model. For more details on `Expressions`, please refer to the [Pyomo Expression documentation]( https://pyomo.readthedocs.io/en/stable/pyomo_modeling_components/Expressions.html).\n", "\n", "For this flowsheet, we are interested in computing ethylene glycol production in millions of pounds per year, as well as the total costs due to cooling and heating utilities." ] @@ -806,4 +806,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/unit_models/reactors/stoichiometric_reactor.ipynb b/idaes_examples/notebooks/docs/unit_models/reactors/stoichiometric_reactor.ipynb index 68e2729a..c12fd541 100644 --- a/idaes_examples/notebooks/docs/unit_models/reactors/stoichiometric_reactor.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/reactors/stoichiometric_reactor.ipynb @@ -62,8 +62,7 @@ "\n", "Flowsheet:\n", "\n", - "![](egprod_flowsheet.png)\n", - "" + "![](egprod_flowsheet.png)\n" ] }, { @@ -240,7 +239,7 @@ "source": [ "## Connecting Unit Models Using Arcs\n", "\n", - "We have now added all the unit models we need to the flowsheet. However, we have not yet specifed how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the `Mixer` to the inlet of the `Heater`, and the outlet of the `Heater` to the inlet of the `StoichiometricReactor`. Additionally, we will connect the `Feed` and `Product` blocks to the flowsheet:" + "We have now added all the unit models we need to the flowsheet. However, we have not yet specified how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the `Mixer` to the inlet of the `Heater`, and the outlet of the `Heater` to the inlet of the `StoichiometricReactor`. Additionally, we will connect the `Feed` and `Product` blocks to the flowsheet:" ] }, { @@ -278,7 +277,7 @@ "source": [ "## Adding Expressions to Compute Operating Costs\n", "\n", - "In this section, we will add a few Expressions that allows us to evaluate the performance. `Expressions` provide a convenient way of calculating certain values that are a function of the variables defined in the model. For more details on `Expressions`, please refer to the [Pyomo Expression documentaiton]( https://pyomo.readthedocs.io/en/stable/pyomo_modeling_components/Expressions.html).\n", + "In this section, we will add a few Expressions that allows us to evaluate the performance. `Expressions` provide a convenient way of calculating certain values that are a function of the variables defined in the model. For more details on `Expressions`, please refer to the [Pyomo Expression documentation]( https://pyomo.readthedocs.io/en/stable/pyomo_modeling_components/Expressions.html).\n", "\n", "For this flowsheet, we are interested in computing ethylene glycol production in millions of pounds per year, as well as the total costs due to cooling and heating utilities." ] diff --git a/idaes_examples/notebooks/docs/unit_models/reactors/stoichiometric_reactor_doc.ipynb b/idaes_examples/notebooks/docs/unit_models/reactors/stoichiometric_reactor_doc.ipynb index 9d4995aa..d7b699c7 100644 --- a/idaes_examples/notebooks/docs/unit_models/reactors/stoichiometric_reactor_doc.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/reactors/stoichiometric_reactor_doc.ipynb @@ -239,7 +239,7 @@ "source": [ "## Connecting Unit Models Using Arcs\n", "\n", - "We have now added all the unit models we need to the flowsheet. However, we have not yet specifed how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the `Mixer` to the inlet of the `Heater`, and the outlet of the `Heater` to the inlet of the `StoichiometricReactor`. Additionally, we will connect the `Feed` and `Product` blocks to the flowsheet:" + "We have now added all the unit models we need to the flowsheet. However, we have not yet specified how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the `Mixer` to the inlet of the `Heater`, and the outlet of the `Heater` to the inlet of the `StoichiometricReactor`. Additionally, we will connect the `Feed` and `Product` blocks to the flowsheet:" ] }, { @@ -277,7 +277,7 @@ "source": [ "## Adding Expressions to Compute Operating Costs\n", "\n", - "In this section, we will add a few Expressions that allows us to evaluate the performance. `Expressions` provide a convenient way of calculating certain values that are a function of the variables defined in the model. For more details on `Expressions`, please refer to the [Pyomo Expression documentaiton]( https://pyomo.readthedocs.io/en/stable/pyomo_modeling_components/Expressions.html).\n", + "In this section, we will add a few Expressions that allows us to evaluate the performance. `Expressions` provide a convenient way of calculating certain values that are a function of the variables defined in the model. For more details on `Expressions`, please refer to the [Pyomo Expression documentation]( https://pyomo.readthedocs.io/en/stable/pyomo_modeling_components/Expressions.html).\n", "\n", "For this flowsheet, we are interested in computing ethylene glycol production in millions of pounds per year, as well as the total costs due to cooling and heating utilities." ] @@ -1207,4 +1207,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/unit_models/reactors/stoichiometric_reactor_test.ipynb b/idaes_examples/notebooks/docs/unit_models/reactors/stoichiometric_reactor_test.ipynb index cf48355a..6ae99dc8 100644 --- a/idaes_examples/notebooks/docs/unit_models/reactors/stoichiometric_reactor_test.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/reactors/stoichiometric_reactor_test.ipynb @@ -53,7 +53,7 @@ "\n", "Chemical reaction:\n", "\n", - "**C2H4O + H2O + H2SO4 \u2192 C2H6O2 + H2SO4**\n", + "**C2H4O + H2O + H2SO4 → C2H6O2 + H2SO4**\n", "\n", "Property Packages:\n", "\n", @@ -62,8 +62,7 @@ "\n", "Flowsheet:\n", "\n", - "![](egprod_flowsheet.png)\n", - "" + "![](egprod_flowsheet.png)\n" ] }, { @@ -240,7 +239,7 @@ "source": [ "## Connecting Unit Models Using Arcs\n", "\n", - "We have now added all the unit models we need to the flowsheet. However, we have not yet specifed how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the `Mixer` to the inlet of the `Heater`, and the outlet of the `Heater` to the inlet of the `StoichiometricReactor`. Additionally, we will connect the `Feed` and `Product` blocks to the flowsheet:" + "We have now added all the unit models we need to the flowsheet. However, we have not yet specified how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the `Mixer` to the inlet of the `Heater`, and the outlet of the `Heater` to the inlet of the `StoichiometricReactor`. Additionally, we will connect the `Feed` and `Product` blocks to the flowsheet:" ] }, { @@ -278,7 +277,7 @@ "source": [ "## Adding Expressions to Compute Operating Costs\n", "\n", - "In this section, we will add a few Expressions that allows us to evaluate the performance. `Expressions` provide a convenient way of calculating certain values that are a function of the variables defined in the model. For more details on `Expressions`, please refer to the [Pyomo Expression documentaiton]( https://pyomo.readthedocs.io/en/stable/pyomo_modeling_components/Expressions.html).\n", + "In this section, we will add a few Expressions that allows us to evaluate the performance. `Expressions` provide a convenient way of calculating certain values that are a function of the variables defined in the model. For more details on `Expressions`, please refer to the [Pyomo Expression documentation]( https://pyomo.readthedocs.io/en/stable/pyomo_modeling_components/Expressions.html).\n", "\n", "For this flowsheet, we are interested in computing ethylene glycol production in millions of pounds per year, as well as the total costs due to cooling and heating utilities." ] @@ -825,4 +824,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/unit_models/reactors/stoichiometric_reactor_usr.ipynb b/idaes_examples/notebooks/docs/unit_models/reactors/stoichiometric_reactor_usr.ipynb index ee24e013..06425641 100644 --- a/idaes_examples/notebooks/docs/unit_models/reactors/stoichiometric_reactor_usr.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/reactors/stoichiometric_reactor_usr.ipynb @@ -53,7 +53,7 @@ "\n", "Chemical reaction:\n", "\n", - "**C2H4O + H2O + H2SO4 \u2192 C2H6O2 + H2SO4**\n", + "**C2H4O + H2O + H2SO4 → C2H6O2 + H2SO4**\n", "\n", "Property Packages:\n", "\n", @@ -62,8 +62,7 @@ "\n", "Flowsheet:\n", "\n", - "![](egprod_flowsheet.png)\n", - "" + "![](egprod_flowsheet.png)\n" ] }, { @@ -240,7 +239,7 @@ "source": [ "## Connecting Unit Models Using Arcs\n", "\n", - "We have now added all the unit models we need to the flowsheet. However, we have not yet specifed how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the `Mixer` to the inlet of the `Heater`, and the outlet of the `Heater` to the inlet of the `StoichiometricReactor`. Additionally, we will connect the `Feed` and `Product` blocks to the flowsheet:" + "We have now added all the unit models we need to the flowsheet. However, we have not yet specified how the units are to be connected. To do this, we will be using the `Arc` which is a pyomo component that takes in two arguments: `source` and `destination`. Let us connect the outlet of the `Mixer` to the inlet of the `Heater`, and the outlet of the `Heater` to the inlet of the `StoichiometricReactor`. Additionally, we will connect the `Feed` and `Product` blocks to the flowsheet:" ] }, { @@ -278,7 +277,7 @@ "source": [ "## Adding Expressions to Compute Operating Costs\n", "\n", - "In this section, we will add a few Expressions that allows us to evaluate the performance. `Expressions` provide a convenient way of calculating certain values that are a function of the variables defined in the model. For more details on `Expressions`, please refer to the [Pyomo Expression documentaiton]( https://pyomo.readthedocs.io/en/stable/pyomo_modeling_components/Expressions.html).\n", + "In this section, we will add a few Expressions that allows us to evaluate the performance. `Expressions` provide a convenient way of calculating certain values that are a function of the variables defined in the model. For more details on `Expressions`, please refer to the [Pyomo Expression documentation]( https://pyomo.readthedocs.io/en/stable/pyomo_modeling_components/Expressions.html).\n", "\n", "For this flowsheet, we are interested in computing ethylene glycol production in millions of pounds per year, as well as the total costs due to cooling and heating utilities." ] @@ -693,4 +692,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/held/flowsheets/CO2_adsorption_desorption/CO2_Adsorption_Desorption_1DFixedBed.ipynb b/idaes_examples/notebooks/held/flowsheets/CO2_adsorption_desorption/CO2_Adsorption_Desorption_1DFixedBed.ipynb index 750ef5c6..f90e547b 100644 --- a/idaes_examples/notebooks/held/flowsheets/CO2_adsorption_desorption/CO2_Adsorption_Desorption_1DFixedBed.ipynb +++ b/idaes_examples/notebooks/held/flowsheets/CO2_adsorption_desorption/CO2_Adsorption_Desorption_1DFixedBed.ipynb @@ -107,7 +107,7 @@ "metadata": {}, "source": [ "\n", - "### Import Pyomo pakages\n", + "### Import Pyomo packages\n", "For the flowsheet, we will need several components from the pyomo libraries.\n", "\n", "- ConcreteModel (to create the Pyomo model that will contain the IDAES flowsheet)\n", @@ -493,7 +493,9 @@ "cell_type": "code", "execution_count": 11, "metadata": { - "tags": ["testing"] + "tags": [ + "testing" + ] }, "outputs": [], "source": [ @@ -701,7 +703,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "In the temporal plots below, quantities are reported as functions of time and contoured for six points along the length of the bed. The time and spatial dimensions are exchanged in the spatial plots, with quantities reported as functions of lengh and contoured for five time points.\n", + "In the temporal plots below, quantities are reported as functions of time and contoured for six points along the length of the bed. The time and spatial dimensions are exchanged in the spatial plots, with quantities reported as functions of length and contoured for five time points.\n", "\n", "The gas flowrate is constant at the inlet and decreases over the length of the bed as CO2 is removed from the gas. At each spatial point, the CO2 content of the gas increases over time as the bed becomes more saturated with CO2 and the mass transfer driving force decreases. Assessing the two gas flowrate plots, adsorption occurs steadily over time with a much larger capture rate in the initial spatial region; this region grows from 10% to 25% of the bed length as the bed becomes more saturated with CO2 over time.\n", "\n", @@ -999,7 +1001,7 @@ "\n", "The CO2 content of the gas sharply rises initially, and steadily decreases as CO2 is carried away in the sweep gas. A greater amount of CO2 is recovered closer to the reactor inlet. As the sweep gas is nearly pure water vapor, the water concentration in the gas sharply drops as CO2 is desorbed from the bed and recovers to near unity towards the temporal end of the simulation.\n", "\n", - "Carbamate disappears quickly as CO2 is recovered and the hydrate is broken down, occuring evenly across the length of the reactor bed." + "Carbamate disappears quickly as CO2 is recovered and the hydrate is broken down, occurring evenly across the length of the reactor bed." ] }, { diff --git a/idaes_examples/notebooks/held/flowsheets/CO2_adsorption_desorption/CO2_Adsorption_Desorption_1DFixedBed_doc.ipynb b/idaes_examples/notebooks/held/flowsheets/CO2_adsorption_desorption/CO2_Adsorption_Desorption_1DFixedBed_doc.ipynb index 9a67262c..8440fb43 100644 --- a/idaes_examples/notebooks/held/flowsheets/CO2_adsorption_desorption/CO2_Adsorption_Desorption_1DFixedBed_doc.ipynb +++ b/idaes_examples/notebooks/held/flowsheets/CO2_adsorption_desorption/CO2_Adsorption_Desorption_1DFixedBed_doc.ipynb @@ -36,7 +36,7 @@ "\n", "\n", "This jupyter notebook shows an example of a CO2 Adsorption Desorption cycle with the IDAES 1D FixedBed model. The IDAES 1D FixedBed model is a dynamic and axially varying reactor/adsorption model which is able to model the gas and solid interactions of the modeled species in detail. The sorbent used for this example is the NETL_32D sorbent with its details and parameters obtained from the following references: \n", - "- A. Lee, D.C. Miller, A One-Dimensional (1-D) Three-Region Model for a Bubbling Fluidized-Bed Adsorber, Ind. Eng. Chem. Res. 52 (2013) 469\u2013484\n", + "- A. Lee, D.C. Miller, A One-Dimensional (1-D) Three-Region Model for a Bubbling Fluidized-Bed Adsorber, Ind. Eng. Chem. Res. 52 (2013) 469–484\n", "- Lee, A.; Mebane, D.; Fauth, D. J.; Miller, D. C. A Model for the Adsorption Kinetics of CO2 on Amine-Impregnated Mesoporous Sorbents in the Presence of Water. Presented at the 28th International Pittsburgh Coal Conference, Pittsburgh, PA, 2011.\n", "\n", "The notebook demonstrates how to use the IDAES 1DFixedBed model for an adsorption/desorption application with distinct adsorption and desorption steps. This example leverages custom libraries and functions specific to the NETL_32D solid sorbent and associated gas phase properties and surface reactions. In this system, the silicon monoxide (SiO(s)) sorbent reduces carbon dioxide (CO2(g)) to carbamate (denoted Car(s)) while simultaneously absorbing water vapor (H2O(g)) to produce a solid solution-state hydrate (H2O(s)). The solid phase is considered a one-dimensional domain with three regions for bubble, cloud wake and emulsion properties for bubbling bed systems; in the case of a fixed bed reactor non-bulk gas behavior is neglected and assumed to be homogeneous everywhere not near the solid surface.\n", @@ -107,7 +107,7 @@ "metadata": {}, "source": [ "\n", - "### Import Pyomo pakages\n", + "### Import Pyomo packages\n", "For the flowsheet, we will need several components from the pyomo libraries.\n", "\n", "- ConcreteModel (to create the Pyomo model that will contain the IDAES flowsheet)\n", @@ -689,7 +689,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "In the temporal plots below, quantities are reported as functions of time and contoured for six points along the length of the bed. The time and spatial dimensions are exchanged in the spatial plots, with quantities reported as functions of lengh and contoured for five time points.\n", + "In the temporal plots below, quantities are reported as functions of time and contoured for six points along the length of the bed. The time and spatial dimensions are exchanged in the spatial plots, with quantities reported as functions of length and contoured for five time points.\n", "\n", "The gas flowrate is constant at the inlet and decreases over the length of the bed as CO2 is removed from the gas. At each spatial point, the CO2 content of the gas increases over time as the bed becomes more saturated with CO2 and the mass transfer driving force decreases. Assessing the two gas flowrate plots, adsorption occurs steadily over time with a much larger capture rate in the initial spatial region; this region grows from 10% to 25% of the bed length as the bed becomes more saturated with CO2 over time.\n", "\n", @@ -987,7 +987,7 @@ "\n", "The CO2 content of the gas sharply rises initially, and steadily decreases as CO2 is carried away in the sweep gas. A greater amount of CO2 is recovered closer to the reactor inlet. As the sweep gas is nearly pure water vapor, the water concentration in the gas sharply drops as CO2 is desorbed from the bed and recovers to near unity towards the temporal end of the simulation.\n", "\n", - "Carbamate disappears quickly as CO2 is recovered and the hydrate is broken down, occuring evenly across the length of the reactor bed." + "Carbamate disappears quickly as CO2 is recovered and the hydrate is broken down, occurring evenly across the length of the reactor bed." ] }, { @@ -1109,4 +1109,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/held/flowsheets/CO2_adsorption_desorption/CO2_Adsorption_Desorption_1DFixedBed_test.ipynb b/idaes_examples/notebooks/held/flowsheets/CO2_adsorption_desorption/CO2_Adsorption_Desorption_1DFixedBed_test.ipynb index 28855348..0b57769a 100644 --- a/idaes_examples/notebooks/held/flowsheets/CO2_adsorption_desorption/CO2_Adsorption_Desorption_1DFixedBed_test.ipynb +++ b/idaes_examples/notebooks/held/flowsheets/CO2_adsorption_desorption/CO2_Adsorption_Desorption_1DFixedBed_test.ipynb @@ -36,7 +36,7 @@ "\n", "\n", "This jupyter notebook shows an example of a CO2 Adsorption Desorption cycle with the IDAES 1D FixedBed model. The IDAES 1D FixedBed model is a dynamic and axially varying reactor/adsorption model which is able to model the gas and solid interactions of the modeled species in detail. The sorbent used for this example is the NETL_32D sorbent with its details and parameters obtained from the following references: \n", - "- A. Lee, D.C. Miller, A One-Dimensional (1-D) Three-Region Model for a Bubbling Fluidized-Bed Adsorber, Ind. Eng. Chem. Res. 52 (2013) 469\u2013484\n", + "- A. Lee, D.C. Miller, A One-Dimensional (1-D) Three-Region Model for a Bubbling Fluidized-Bed Adsorber, Ind. Eng. Chem. Res. 52 (2013) 469–484\n", "- Lee, A.; Mebane, D.; Fauth, D. J.; Miller, D. C. A Model for the Adsorption Kinetics of CO2 on Amine-Impregnated Mesoporous Sorbents in the Presence of Water. Presented at the 28th International Pittsburgh Coal Conference, Pittsburgh, PA, 2011.\n", "\n", "The notebook demonstrates how to use the IDAES 1DFixedBed model for an adsorption/desorption application with distinct adsorption and desorption steps. This example leverages custom libraries and functions specific to the NETL_32D solid sorbent and associated gas phase properties and surface reactions. In this system, the silicon monoxide (SiO(s)) sorbent reduces carbon dioxide (CO2(g)) to carbamate (denoted Car(s)) while simultaneously absorbing water vapor (H2O(g)) to produce a solid solution-state hydrate (H2O(s)). The solid phase is considered a one-dimensional domain with three regions for bubble, cloud wake and emulsion properties for bubbling bed systems; in the case of a fixed bed reactor non-bulk gas behavior is neglected and assumed to be homogeneous everywhere not near the solid surface.\n", @@ -107,7 +107,7 @@ "metadata": {}, "source": [ "\n", - "### Import Pyomo pakages\n", + "### Import Pyomo packages\n", "For the flowsheet, we will need several components from the pyomo libraries.\n", "\n", "- ConcreteModel (to create the Pyomo model that will contain the IDAES flowsheet)\n", @@ -703,7 +703,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "In the temporal plots below, quantities are reported as functions of time and contoured for six points along the length of the bed. The time and spatial dimensions are exchanged in the spatial plots, with quantities reported as functions of lengh and contoured for five time points.\n", + "In the temporal plots below, quantities are reported as functions of time and contoured for six points along the length of the bed. The time and spatial dimensions are exchanged in the spatial plots, with quantities reported as functions of length and contoured for five time points.\n", "\n", "The gas flowrate is constant at the inlet and decreases over the length of the bed as CO2 is removed from the gas. At each spatial point, the CO2 content of the gas increases over time as the bed becomes more saturated with CO2 and the mass transfer driving force decreases. Assessing the two gas flowrate plots, adsorption occurs steadily over time with a much larger capture rate in the initial spatial region; this region grows from 10% to 25% of the bed length as the bed becomes more saturated with CO2 over time.\n", "\n", @@ -1001,7 +1001,7 @@ "\n", "The CO2 content of the gas sharply rises initially, and steadily decreases as CO2 is carried away in the sweep gas. A greater amount of CO2 is recovered closer to the reactor inlet. As the sweep gas is nearly pure water vapor, the water concentration in the gas sharply drops as CO2 is desorbed from the bed and recovers to near unity towards the temporal end of the simulation.\n", "\n", - "Carbamate disappears quickly as CO2 is recovered and the hydrate is broken down, occuring evenly across the length of the reactor bed." + "Carbamate disappears quickly as CO2 is recovered and the hydrate is broken down, occurring evenly across the length of the reactor bed." ] }, { @@ -1123,4 +1123,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/held/flowsheets/CO2_adsorption_desorption/CO2_Adsorption_Desorption_1DFixedBed_usr.ipynb b/idaes_examples/notebooks/held/flowsheets/CO2_adsorption_desorption/CO2_Adsorption_Desorption_1DFixedBed_usr.ipynb index 9a67262c..8440fb43 100644 --- a/idaes_examples/notebooks/held/flowsheets/CO2_adsorption_desorption/CO2_Adsorption_Desorption_1DFixedBed_usr.ipynb +++ b/idaes_examples/notebooks/held/flowsheets/CO2_adsorption_desorption/CO2_Adsorption_Desorption_1DFixedBed_usr.ipynb @@ -36,7 +36,7 @@ "\n", "\n", "This jupyter notebook shows an example of a CO2 Adsorption Desorption cycle with the IDAES 1D FixedBed model. The IDAES 1D FixedBed model is a dynamic and axially varying reactor/adsorption model which is able to model the gas and solid interactions of the modeled species in detail. The sorbent used for this example is the NETL_32D sorbent with its details and parameters obtained from the following references: \n", - "- A. Lee, D.C. Miller, A One-Dimensional (1-D) Three-Region Model for a Bubbling Fluidized-Bed Adsorber, Ind. Eng. Chem. Res. 52 (2013) 469\u2013484\n", + "- A. Lee, D.C. Miller, A One-Dimensional (1-D) Three-Region Model for a Bubbling Fluidized-Bed Adsorber, Ind. Eng. Chem. Res. 52 (2013) 469–484\n", "- Lee, A.; Mebane, D.; Fauth, D. J.; Miller, D. C. A Model for the Adsorption Kinetics of CO2 on Amine-Impregnated Mesoporous Sorbents in the Presence of Water. Presented at the 28th International Pittsburgh Coal Conference, Pittsburgh, PA, 2011.\n", "\n", "The notebook demonstrates how to use the IDAES 1DFixedBed model for an adsorption/desorption application with distinct adsorption and desorption steps. This example leverages custom libraries and functions specific to the NETL_32D solid sorbent and associated gas phase properties and surface reactions. In this system, the silicon monoxide (SiO(s)) sorbent reduces carbon dioxide (CO2(g)) to carbamate (denoted Car(s)) while simultaneously absorbing water vapor (H2O(g)) to produce a solid solution-state hydrate (H2O(s)). The solid phase is considered a one-dimensional domain with three regions for bubble, cloud wake and emulsion properties for bubbling bed systems; in the case of a fixed bed reactor non-bulk gas behavior is neglected and assumed to be homogeneous everywhere not near the solid surface.\n", @@ -107,7 +107,7 @@ "metadata": {}, "source": [ "\n", - "### Import Pyomo pakages\n", + "### Import Pyomo packages\n", "For the flowsheet, we will need several components from the pyomo libraries.\n", "\n", "- ConcreteModel (to create the Pyomo model that will contain the IDAES flowsheet)\n", @@ -689,7 +689,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "In the temporal plots below, quantities are reported as functions of time and contoured for six points along the length of the bed. The time and spatial dimensions are exchanged in the spatial plots, with quantities reported as functions of lengh and contoured for five time points.\n", + "In the temporal plots below, quantities are reported as functions of time and contoured for six points along the length of the bed. The time and spatial dimensions are exchanged in the spatial plots, with quantities reported as functions of length and contoured for five time points.\n", "\n", "The gas flowrate is constant at the inlet and decreases over the length of the bed as CO2 is removed from the gas. At each spatial point, the CO2 content of the gas increases over time as the bed becomes more saturated with CO2 and the mass transfer driving force decreases. Assessing the two gas flowrate plots, adsorption occurs steadily over time with a much larger capture rate in the initial spatial region; this region grows from 10% to 25% of the bed length as the bed becomes more saturated with CO2 over time.\n", "\n", @@ -987,7 +987,7 @@ "\n", "The CO2 content of the gas sharply rises initially, and steadily decreases as CO2 is carried away in the sweep gas. A greater amount of CO2 is recovered closer to the reactor inlet. As the sweep gas is nearly pure water vapor, the water concentration in the gas sharply drops as CO2 is desorbed from the bed and recovers to near unity towards the temporal end of the simulation.\n", "\n", - "Carbamate disappears quickly as CO2 is recovered and the hydrate is broken down, occuring evenly across the length of the reactor bed." + "Carbamate disappears quickly as CO2 is recovered and the hydrate is broken down, occurring evenly across the length of the reactor bed." ] }, { @@ -1109,4 +1109,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/pyproject.toml b/pyproject.toml index 779b3940..1f057421 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -143,3 +143,35 @@ markers = [ "needs_solver" ] testpaths = "idaes_examples" + +[tool.typos.files] +extend-exclude = [ + "*.svg", + "*.json", + "*.css", + "*.yml", +] + +[tool.typos.default.extend-words] +# Ignore IDAES +IDAES = "IDAES" +# Ignore HDA, assumes it's on purpose and not a typo of "had" +HDA = "HDA" +# Ignore Attemp - assume it is abbreviating attemperator +Attemp = "Attemp" +# Ignore equil, assumes it's on purpose and not a typo of "equal" +equil = "equil" +# Atomic elements +Nd = "Nd" +Ba = "Ba" # ba is also used in block names in RSOFC-SOEC example +# Numpy +arange = "arange" +[tool.typos.default] +extend-ignore-re = [ + # Jupyter notebooks: ignore hexadecimal values in "id" cell metadata field + '"id": "[0-9a-f]+",', + # ser is used as a variable name for pd.Series, so we exclude it when followed by a dot + # as of 2024-04-25, the false positive are all due to warnings in the output of certain notebooks + # which should be resolved regardless (see IDAES/examples#108) + "ser[.].*", +] diff --git a/tutorial.md b/tutorial.md index c42aac66..0a1c477b 100644 --- a/tutorial.md +++ b/tutorial.md @@ -94,7 +94,7 @@ To demonstrate how the tags work, we will add tags to a couple of these cells: 2. Add the tag `noauto` to the cell with the print statement. This will skip this cell in the versions of the notebook used for documentation and testing. 3. Add the tag `testing` to the cell with the assert statement. This will only - include this cell in the version fo the notebook used for testing. + include this cell in the version of the notebook used for testing. ### Run preprocessing