From 7725c44002ce4e452937697add421fe17b6a195e Mon Sep 17 00:00:00 2001 From: Brandon Paul Date: Tue, 9 Apr 2024 10:30:29 -0700 Subject: [PATCH 01/47] CI framework for spell check test --- .github/workflows/core.yml | 10 ++++++++++ pyproject.toml | 24 ++++++++++++++++++++++++ 2 files changed, 34 insertions(+) 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/pyproject.toml b/pyproject.toml index b743fe33..8d622a62 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -149,3 +149,27 @@ markers = [ "needs_solver" ] testpaths = "idaes_examples" + +[tool.typos.files] +extend-exclude = [ + "*.svg", + "*.json", + "*.css", +] + +[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 ba in hexadecimal values, or block names +ba = "ba" +# Ignore equil, assumes it's on purpose and not a typo of "equal" +equil = "equil" +# Atomic elements +#Nd = "Nd" +[tool.typos.default] +extend-ignore-re = [ + # Jupyter notebooks: ignore hexadecimal values in "id" cell metadata field + '"id": "[0-9a-f]+",' +] From 4c4c7e038bfd80ff62a4df3f443e49d5d1771144 Mon Sep 17 00:00:00 2001 From: Brandon Paul Date: Tue, 9 Apr 2024 10:30:50 -0700 Subject: [PATCH 02/47] fix some typos --- .../notebooks/docs/tut/core/flash_unit.ipynb | 4 ++-- .../notebooks/docs/tut/core/flash_unit_doc.ipynb | 6 +++--- .../notebooks/docs/tut/core/flash_unit_exercise.ipynb | 6 +++--- .../notebooks/docs/tut/core/flash_unit_solution.ipynb | 6 +++--- .../notebooks/docs/tut/core/flash_unit_test.ipynb | 6 +++--- .../notebooks/docs/tut/core/flash_unit_usr.ipynb | 6 +++--- .../notebooks/docs/tut/core/hda_flowsheet.ipynb | 7 +++---- .../notebooks/docs/tut/core/hda_flowsheet_doc.ipynb | 6 +++--- .../docs/tut/core/hda_flowsheet_exercise.ipynb | 11 +++++------ .../docs/tut/core/hda_flowsheet_solution.ipynb | 11 +++++------ .../notebooks/docs/tut/core/hda_flowsheet_test.ipynb | 11 +++++------ .../notebooks/docs/tut/core/hda_flowsheet_usr.ipynb | 11 +++++------ .../custom_unit_models/custom_compressor.ipynb | 2 +- .../custom_unit_models/custom_compressor_doc.ipynb | 4 ++-- .../custom_unit_models/custom_compressor_test.ipynb | 4 ++-- .../custom_unit_models/custom_compressor_usr.ipynb | 4 ++-- .../docs/unit_models/operations/compressor.ipynb | 6 +++--- .../docs/unit_models/operations/compressor_doc.ipynb | 8 ++++---- .../docs/unit_models/operations/compressor_test.ipynb | 8 ++++---- .../docs/unit_models/operations/compressor_usr.ipynb | 8 ++++---- .../unit_models/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 +- .../docs/unit_models/operations/heater_doc.ipynb | 4 ++-- .../docs/unit_models/operations/heater_test.ipynb | 4 ++-- .../docs/unit_models/operations/heater_usr.ipynb | 4 ++-- .../notebooks/docs/unit_models/operations/pump.ipynb | 4 ++-- .../docs/unit_models/operations/pump_doc.ipynb | 6 +++--- .../docs/unit_models/operations/pump_test.ipynb | 6 +++--- .../docs/unit_models/operations/pump_usr.ipynb | 6 +++--- .../docs/unit_models/operations/skeleton_unit.ipynb | 6 +++--- .../unit_models/operations/skeleton_unit_doc.ipynb | 8 ++++---- .../unit_models/operations/skeleton_unit_test.ipynb | 8 ++++---- .../unit_models/operations/skeleton_unit_usr.ipynb | 8 ++++---- .../docs/unit_models/operations/turbine.ipynb | 4 ++-- .../docs/unit_models/operations/turbine_doc.ipynb | 6 +++--- .../docs/unit_models/operations/turbine_test.ipynb | 6 +++--- .../docs/unit_models/operations/turbine_usr.ipynb | 6 +++--- .../notebooks/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 ++++---- .../unit_models/reactors/equilibrium_reactor.ipynb | 5 ++--- .../reactors/equilibrium_reactor_doc.ipynb | 4 ++-- .../reactors/equilibrium_reactor_test.ipynb | 11 +++++------ .../reactors/equilibrium_reactor_usr.ipynb | 11 +++++------ .../docs/unit_models/reactors/plug_flow_reactor.ipynb | 8 ++++---- .../unit_models/reactors/plug_flow_reactor_doc.ipynb | 6 +++--- .../unit_models/reactors/plug_flow_reactor_test.ipynb | 8 ++++---- .../unit_models/reactors/plug_flow_reactor_usr.ipynb | 8 ++++---- .../unit_models/reactors/stoichiometric_reactor.ipynb | 5 ++--- .../reactors/stoichiometric_reactor_doc.ipynb | 4 ++-- .../reactors/stoichiometric_reactor_test.ipynb | 11 +++++------ .../reactors/stoichiometric_reactor_usr.ipynb | 11 +++++------ .../CO2_Adsorption_Desorption_1DFixedBed.ipynb | 10 ++++++---- .../CO2_Adsorption_Desorption_1DFixedBed_doc.ipynb | 10 +++++----- .../CO2_Adsorption_Desorption_1DFixedBed_test.ipynb | 10 +++++----- .../CO2_Adsorption_Desorption_1DFixedBed_usr.ipynb | 10 +++++----- tutorial.md | 2 +- 61 files changed, 194 insertions(+), 203 deletions(-) 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..fbe5d2e4 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:" ] }, { 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..f82846a3 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:" ] }, { @@ -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/tutorial.md b/tutorial.md index 73663b7b..4920df80 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 From 4b805f3f04a67e37e0cf3f228d7cdb53a7bdf86d Mon Sep 17 00:00:00 2001 From: Andrew Lee Date: Fri, 12 Apr 2024 12:20:16 -0400 Subject: [PATCH 03/47] Fixing typos in idaes_examples/mod --- .../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 | 6 ++--- 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 ++-- idaes_examples/mod/power_gen/soec.py | 6 ++--- .../thermophysical_property_example.py | 6 ++--- 13 files changed, 46 insertions(+), 46 deletions(-) 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..5c9d7c70 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: @@ -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..0604c992 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 indicies 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/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. From 516509c6be0c747dd3d4f935dde0963a644a5357 Mon Sep 17 00:00:00 2001 From: Andrew Lee Date: Fri, 12 Apr 2024 12:25:03 -0400 Subject: [PATCH 04/47] Fixing some missed typos --- idaes_examples/mod/methanol/methanol_state_block_VLE.py | 2 +- idaes_examples/mod/power_gen/SOFC_ROM.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/idaes_examples/mod/methanol/methanol_state_block_VLE.py b/idaes_examples/mod/methanol/methanol_state_block_VLE.py index 5c9d7c70..ce803ef2 100644 --- a/idaes_examples/mod/methanol/methanol_state_block_VLE.py +++ b/idaes_examples/mod/methanol/methanol_state_block_VLE.py @@ -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 diff --git a/idaes_examples/mod/power_gen/SOFC_ROM.py b/idaes_examples/mod/power_gen/SOFC_ROM.py index 0604c992..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 indicies 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)) From 875155087d55d5c2f16bdae8d25105baca1973fe Mon Sep 17 00:00:00 2001 From: Andrew Lee Date: Fri, 12 Apr 2024 17:11:25 -0400 Subject: [PATCH 05/47] Fixing more typos --- .../notebooks/active/power_gen/ngcc/ngcc.ipynb | 2 +- .../docs/diagnostics/diagnostics_toolbox.ipynb | 6 +++--- .../diagnostics/diagnostics_toolbox_doc.ipynb | 4 ++-- .../diagnostics_toolbox_solution.ipynb | 8 ++++---- .../diagnostics/diagnostics_toolbox_test.ipynb | 4 ++-- .../diagnostics/diagnostics_toolbox_usr.ipynb | 8 ++++---- .../best_practices_optimization.ipynb | 6 +++--- .../best_practices_optimization_doc.ipynb | 6 +++--- .../best_practices_optimization_test.ipynb | 6 +++--- .../best_practices_optimization_usr.ipynb | 6 +++--- .../sco2/pysmo/flowsheet_optimization.ipynb | 2 +- .../pysmo/flowsheet_optimization_doc.ipynb | 2 +- .../pysmo/flowsheet_optimization_test.ipynb | 2 +- .../pysmo/flowsheet_optimization_usr.ipynb | 2 +- .../surrogates/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 | 18 +++++++++--------- .../sco2/pysmo/surrogate_embedding_doc.ipynb | 18 +++++++++--------- .../sco2/pysmo/surrogate_embedding_test.ipynb | 18 +++++++++--------- .../sco2/pysmo/surrogate_embedding_usr.ipynb | 18 +++++++++--------- 22 files changed, 76 insertions(+), 76 deletions(-) diff --git a/idaes_examples/notebooks/active/power_gen/ngcc/ngcc.ipynb b/idaes_examples/notebooks/active/power_gen/ngcc/ngcc.ipynb index 0438bacc..7a640f1f 100644 --- a/idaes_examples/notebooks/active/power_gen/ngcc/ngcc.ipynb +++ b/idaes_examples/notebooks/active/power_gen/ngcc/ngcc.ipynb @@ -189,7 +189,7 @@ "metadata": {}, "outputs": [], "source": [ - "# Assert results approximatly agree with baseline reoprt\n", + "# Assert results approximately agree with baseline report\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", diff --git a/idaes_examples/notebooks/docs/diagnostics/diagnostics_toolbox.ipynb b/idaes_examples/notebooks/docs/diagnostics/diagnostics_toolbox.ipynb index 42a51d1f..74dfd06a 100755 --- a/idaes_examples/notebooks/docs/diagnostics/diagnostics_toolbox.ipynb +++ b/idaes_examples/notebooks/docs/diagnostics/diagnostics_toolbox.ipynb @@ -604,7 +604,7 @@ }, "outputs": [], "source": [ - "# Call the report_strucutral_issues() method" + "# Call the report_structural_issues() method" ] }, { @@ -1586,7 +1586,7 @@ }, "outputs": [], "source": [ - "# Check for new strucutral issues" + "# Check for new structural issues" ] }, { @@ -2077,7 +2077,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", diff --git a/idaes_examples/notebooks/docs/diagnostics/diagnostics_toolbox_doc.ipynb b/idaes_examples/notebooks/docs/diagnostics/diagnostics_toolbox_doc.ipynb index f75092f1..3730cf0f 100644 --- a/idaes_examples/notebooks/docs/diagnostics/diagnostics_toolbox_doc.ipynb +++ b/idaes_examples/notebooks/docs/diagnostics/diagnostics_toolbox_doc.ipynb @@ -1741,7 +1741,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", @@ -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_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/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/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/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..f3425544 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 algebriac, we will use the ML surrogates and relate enthalpy and entropy with the pressure and temperature as an algebriac 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..628b0469 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,7 +345,7 @@ " - 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", @@ -356,7 +356,7 @@ " 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..8891f469 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,7 +345,7 @@ " - 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", @@ -356,7 +356,7 @@ " 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..4b2d577b 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,7 +347,7 @@ " - 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", @@ -358,7 +358,7 @@ " 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..8012c1c4 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,7 +345,7 @@ " - 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", @@ -356,7 +356,7 @@ " 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", From 85b062fba7269b55008f50e5e3495e21982df5a7 Mon Sep 17 00:00:00 2001 From: Andrew Lee Date: Fri, 12 Apr 2024 17:14:05 -0400 Subject: [PATCH 06/47] Adding a couple of exclusions --- pyproject.toml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 8d622a62..0a67380b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -162,12 +162,16 @@ extend-exclude = [ 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 ba in hexadecimal values, or block names ba = "ba" # Ignore equil, assumes it's on purpose and not a typo of "equal" equil = "equil" # Atomic elements #Nd = "Nd" +# Numpy +arange = "arange" [tool.typos.default] extend-ignore-re = [ # Jupyter notebooks: ignore hexadecimal values in "id" cell metadata field From 198b5199081428bd9537bf4d0f1adf9a6097ed5e Mon Sep 17 00:00:00 2001 From: Keith Beattie Date: Fri, 12 Apr 2024 17:15:29 -0700 Subject: [PATCH 07/47] `documentaiton` should be `documentation` --- .../docs/unit_models/reactors/stoichiometric_reactor.ipynb | 2 +- .../docs/unit_models/reactors/stoichiometric_reactor_doc.ipynb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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 fbe5d2e4..c12fd541 100644 --- a/idaes_examples/notebooks/docs/unit_models/reactors/stoichiometric_reactor.ipynb +++ b/idaes_examples/notebooks/docs/unit_models/reactors/stoichiometric_reactor.ipynb @@ -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." ] 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 f82846a3..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 @@ -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." ] From 96ba0498530dda512f29345db9bcf07bec0b4407 Mon Sep 17 00:00:00 2001 From: Keith Beattie Date: Fri, 12 Apr 2024 17:17:18 -0700 Subject: [PATCH 08/47] `varaibles` should be `variables` --- .../notebooks/docs/surrogates/sco2/alamo/properties.py | 2 +- .../docs/surrogates/sco2/alamo/surrogate_embedding.ipynb | 2 +- .../docs/surrogates/sco2/alamo/surrogate_embedding_doc.ipynb | 2 +- .../docs/surrogates/sco2/alamo/surrogate_embedding_test.ipynb | 2 +- .../docs/surrogates/sco2/alamo/surrogate_embedding_usr.ipynb | 2 +- .../notebooks/docs/surrogates/sco2/omlt/properties.py | 2 +- .../docs/surrogates/sco2/omlt/surrogate_embedding.ipynb | 2 +- .../docs/surrogates/sco2/omlt/surrogate_embedding_doc.ipynb | 2 +- .../docs/surrogates/sco2/omlt/surrogate_embedding_test.ipynb | 2 +- .../docs/surrogates/sco2/omlt/surrogate_embedding_usr.ipynb | 2 +- .../notebooks/docs/surrogates/sco2/pysmo/properties.py | 2 +- .../docs/surrogates/sco2/pysmo/surrogate_embedding.ipynb | 2 +- .../docs/surrogates/sco2/pysmo/surrogate_embedding_doc.ipynb | 2 +- .../docs/surrogates/sco2/pysmo/surrogate_embedding_test.ipynb | 2 +- .../docs/surrogates/sco2/pysmo/surrogate_embedding_usr.ipynb | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/alamo/properties.py b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/properties.py index 3b2f8bbb..64da1da6 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/alamo/properties.py +++ b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/properties.py @@ -129,7 +129,7 @@ def initialize(blk, state_args=None, hold_state=False, outlvl=1, 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. 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..af0b1c9b 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding.ipynb @@ -353,7 +353,7 @@ " 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", 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..a143e3c9 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 @@ -353,7 +353,7 @@ " 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", 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..e9d92cf0 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 @@ -353,7 +353,7 @@ " 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", 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..aa7e726f 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 @@ -356,7 +356,7 @@ " 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", diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/omlt/properties.py b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/properties.py index 64101604..8b97b624 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/omlt/properties.py +++ b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/properties.py @@ -134,7 +134,7 @@ def initialize(blk, state_args=None, hold_state=False, outlvl=1, 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. 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..8736c421 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding.ipynb @@ -348,7 +348,7 @@ " 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", 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..dc82f2eb 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 @@ -347,7 +347,7 @@ " 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", 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..37d9adb9 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 @@ -349,7 +349,7 @@ " 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", 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..6f75f5b9 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 @@ -347,7 +347,7 @@ " 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", diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/properties.py b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/properties.py index e8c8528f..b4c149bc 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/properties.py +++ b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/properties.py @@ -135,7 +135,7 @@ def initialize(blk, state_args=None, hold_state=False, outlvl=1, 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. 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 628b0469..acf8997a 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/surrogate_embedding.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/surrogate_embedding.ipynb @@ -350,7 +350,7 @@ " 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", 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 8891f469..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 @@ -350,7 +350,7 @@ " 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", 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 4b2d577b..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 @@ -352,7 +352,7 @@ " 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", 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 8012c1c4..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 @@ -350,7 +350,7 @@ " 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", From dfa50193fa8a72dd9d56579568fabb3bdc77251f Mon Sep 17 00:00:00 2001 From: Keith Beattie Date: Fri, 12 Apr 2024 17:19:51 -0700 Subject: [PATCH 09/47] algebriac to algebraic --- .../docs/surrogates/sco2/pysmo/pysmo_training_doc.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 f3425544..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 algebriac, we will use the ML surrogates and relate enthalpy and entropy with the pressure and temperature as an algebriac 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", From 4246adb0c7f0eaa98ca0884933a3e78099fa6de1 Mon Sep 17 00:00:00 2001 From: Keith Beattie Date: Fri, 12 Apr 2024 17:21:47 -0700 Subject: [PATCH 10/47] `relase` should be `release` --- .../notebooks/docs/surrogates/sco2/alamo/properties.py | 4 ++-- .../docs/surrogates/sco2/alamo/surrogate_embedding.ipynb | 4 ++-- .../docs/surrogates/sco2/alamo/surrogate_embedding_doc.ipynb | 4 ++-- .../docs/surrogates/sco2/alamo/surrogate_embedding_test.ipynb | 4 ++-- .../docs/surrogates/sco2/alamo/surrogate_embedding_usr.ipynb | 4 ++-- .../notebooks/docs/surrogates/sco2/omlt/properties.py | 4 ++-- .../docs/surrogates/sco2/omlt/surrogate_embedding.ipynb | 4 ++-- .../docs/surrogates/sco2/omlt/surrogate_embedding_doc.ipynb | 4 ++-- .../docs/surrogates/sco2/omlt/surrogate_embedding_test.ipynb | 4 ++-- .../docs/surrogates/sco2/omlt/surrogate_embedding_usr.ipynb | 4 ++-- .../notebooks/docs/surrogates/sco2/pysmo/properties.py | 4 ++-- 11 files changed, 22 insertions(+), 22 deletions(-) diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/alamo/properties.py b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/properties.py index 64da1da6..275ba9b4 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/alamo/properties.py +++ b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/properties.py @@ -135,7 +135,7 @@ def initialize(blk, state_args=None, hold_state=False, outlvl=1, 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 af0b1c9b..85baea79 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding.ipynb @@ -359,7 +359,7 @@ " 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 a143e3c9..d77b2452 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 @@ -359,7 +359,7 @@ " 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 e9d92cf0..91fcccd5 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 @@ -359,7 +359,7 @@ " 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 aa7e726f..8dd034e1 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 @@ -362,7 +362,7 @@ " 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/properties.py b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/properties.py index 8b97b624..55049005 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/omlt/properties.py +++ b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/properties.py @@ -140,7 +140,7 @@ def initialize(blk, state_args=None, hold_state=False, outlvl=1, 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 8736c421..bd0dd607 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding.ipynb @@ -354,7 +354,7 @@ " 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 dc82f2eb..c9d48a4a 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 @@ -353,7 +353,7 @@ " 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 37d9adb9..f6e28d12 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 @@ -355,7 +355,7 @@ " 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 6f75f5b9..89e3572c 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 @@ -353,7 +353,7 @@ " 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/properties.py b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/properties.py index b4c149bc..248b90b5 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/properties.py +++ b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/properties.py @@ -141,7 +141,7 @@ def initialize(blk, state_args=None, hold_state=False, outlvl=1, 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 From 96ab1584abe9a23728192f7481d751d4e51fd5a6 Mon Sep 17 00:00:00 2001 From: Keith Beattie Date: Fri, 12 Apr 2024 17:23:53 -0700 Subject: [PATCH 11/47] `whcih` should be `which` --- idaes_examples/archive/power_gen/rsofc/cpu.py | 2 +- .../notebooks/docs/surrogates/sco2/alamo/properties.py | 2 +- .../docs/surrogates/sco2/alamo/surrogate_embedding.ipynb | 2 +- .../docs/surrogates/sco2/alamo/surrogate_embedding_doc.ipynb | 2 +- .../docs/surrogates/sco2/alamo/surrogate_embedding_test.ipynb | 2 +- .../docs/surrogates/sco2/alamo/surrogate_embedding_usr.ipynb | 2 +- .../notebooks/docs/surrogates/sco2/omlt/properties.py | 2 +- .../docs/surrogates/sco2/omlt/surrogate_embedding.ipynb | 2 +- .../docs/surrogates/sco2/omlt/surrogate_embedding_doc.ipynb | 2 +- .../docs/surrogates/sco2/omlt/surrogate_embedding_test.ipynb | 2 +- .../docs/surrogates/sco2/omlt/surrogate_embedding_usr.ipynb | 2 +- .../notebooks/docs/surrogates/sco2/pysmo/properties.py | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/idaes_examples/archive/power_gen/rsofc/cpu.py b/idaes_examples/archive/power_gen/rsofc/cpu.py index c7c6d9fe..0138249c 100644 --- a/idaes_examples/archive/power_gen/rsofc/cpu.py +++ b/idaes_examples/archive/power_gen/rsofc/cpu.py @@ -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/notebooks/docs/surrogates/sco2/alamo/properties.py b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/properties.py index 275ba9b4..6b88bd69 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/alamo/properties.py +++ b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/properties.py @@ -124,7 +124,7 @@ 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 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 85baea79..8721ccc2 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding.ipynb @@ -348,7 +348,7 @@ " - 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", 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 d77b2452..944365fd 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 @@ -348,7 +348,7 @@ " - 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", 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 91fcccd5..d771e1ab 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 @@ -348,7 +348,7 @@ " - 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", 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 8dd034e1..417b2bb0 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 @@ -351,7 +351,7 @@ " - 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", diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/omlt/properties.py b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/properties.py index 55049005..5bcc8a9a 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/omlt/properties.py +++ b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/properties.py @@ -129,7 +129,7 @@ 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 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 bd0dd607..8fd96971 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding.ipynb @@ -343,7 +343,7 @@ " - 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", 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 c9d48a4a..ee1a5d79 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 @@ -342,7 +342,7 @@ " - 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", 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 f6e28d12..b9ede92b 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 @@ -344,7 +344,7 @@ " - 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", 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 89e3572c..ae3988fb 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 @@ -342,7 +342,7 @@ " - 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", diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/properties.py b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/properties.py index 248b90b5..b9e8d3ba 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/properties.py +++ b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/properties.py @@ -130,7 +130,7 @@ 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 From 06ca41781e685df15b9d92ce8b7aa71398de46b5 Mon Sep 17 00:00:00 2001 From: Keith Beattie Date: Fri, 12 Apr 2024 17:27:05 -0700 Subject: [PATCH 12/47] `addtional` should be `additional` --- .../archive/data_reconciliation/econ_recon_src.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/idaes_examples/archive/data_reconciliation/econ_recon_src.ipynb b/idaes_examples/archive/data_reconciliation/econ_recon_src.ipynb index 797b63df..a81f2c14 100644 --- a/idaes_examples/archive/data_reconciliation/econ_recon_src.ipynb +++ b/idaes_examples/archive/data_reconciliation/econ_recon_src.ipynb @@ -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}\")" ] From dc61ba552029fcb21a3dd20707f477deac7f15d9 Mon Sep 17 00:00:00 2001 From: Keith Beattie Date: Fri, 12 Apr 2024 17:28:32 -0700 Subject: [PATCH 13/47] `upadate` should be `update` --- .../data_reconciliation/boiler_flowsheet_recon_src.ipynb | 2 +- idaes_examples/archive/data_reconciliation/econ_recon_src.ipynb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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 a81f2c14..b86bacd6 100644 --- a/idaes_examples/archive/data_reconciliation/econ_recon_src.ipynb +++ b/idaes_examples/archive/data_reconciliation/econ_recon_src.ipynb @@ -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)" ] }, { From f5626ab012ff5923620326e9b06f1eadd77e9eb5 Mon Sep 17 00:00:00 2001 From: Keith Beattie Date: Fri, 12 Apr 2024 17:29:50 -0700 Subject: [PATCH 14/47] `deafault` should be `default` --- idaes_examples/archive/data_reconciliation/econ_recon_src.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/idaes_examples/archive/data_reconciliation/econ_recon_src.ipynb b/idaes_examples/archive/data_reconciliation/econ_recon_src.ipynb index b86bacd6..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.\"" ] }, { From 3510eca78bbb1e420ca4cc64d4c71a4a36f5aa5f Mon Sep 17 00:00:00 2001 From: Keith Beattie Date: Fri, 12 Apr 2024 17:35:30 -0700 Subject: [PATCH 15/47] `indepedent` should be `independent` --- idaes_examples/archive/matopt/nanowire_design_src.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/idaes_examples/archive/matopt/nanowire_design_src.ipynb b/idaes_examples/archive/matopt/nanowire_design_src.ipynb index 2111fb33..31e8b7bd 100644 --- a/idaes_examples/archive/matopt/nanowire_design_src.ipynb +++ b/idaes_examples/archive/matopt/nanowire_design_src.ipynb @@ -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." ] }, { From c3b15d8b57c327997ab21681aea20cf1d9542b5c Mon Sep 17 00:00:00 2001 From: Keith Beattie Date: Fri, 12 Apr 2024 17:37:01 -0700 Subject: [PATCH 16/47] `convienience` should be `convenience` --- .../archive/matopt/bifunctional_surface_design_src.ipynb | 2 +- .../archive/matopt/bimetallic_nanocluster_design_src.ipynb | 2 +- idaes_examples/archive/matopt/nanowire_design_src.ipynb | 2 +- idaes_examples/archive/matopt/surface_design_src.ipynb | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/idaes_examples/archive/matopt/bifunctional_surface_design_src.ipynb b/idaes_examples/archive/matopt/bifunctional_surface_design_src.ipynb index d9a0ce4e..cf5a448e 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. " ] }, { 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/nanowire_design_src.ipynb b/idaes_examples/archive/matopt/nanowire_design_src.ipynb index 31e8b7bd..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. " ] }, { diff --git a/idaes_examples/archive/matopt/surface_design_src.ipynb b/idaes_examples/archive/matopt/surface_design_src.ipynb index 8923413b..edcc5f9a 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. " ] }, { From 2781743f17ad7df7e0bb69c32c0336061d65bbd6 Mon Sep 17 00:00:00 2001 From: Keith Beattie Date: Fri, 12 Apr 2024 17:38:08 -0700 Subject: [PATCH 17/47] `memeory` should be `memory` --- .../archive/matopt/monometallic_nanocluster_design_src.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/idaes_examples/archive/matopt/monometallic_nanocluster_design_src.ipynb b/idaes_examples/archive/matopt/monometallic_nanocluster_design_src.ipynb index 32b4955b..032963d9 100644 --- a/idaes_examples/archive/matopt/monometallic_nanocluster_design_src.ipynb +++ b/idaes_examples/archive/matopt/monometallic_nanocluster_design_src.ipynb @@ -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", From fe65eedc64b6e4acd8065132e3e32e7069a52c80 Mon Sep 17 00:00:00 2001 From: Keith Beattie Date: Fri, 12 Apr 2024 17:39:18 -0700 Subject: [PATCH 18/47] `desriptors` should be `descriptors` --- .../archive/matopt/monometallic_nanocluster_design_src.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/idaes_examples/archive/matopt/monometallic_nanocluster_design_src.ipynb b/idaes_examples/archive/matopt/monometallic_nanocluster_design_src.ipynb index 032963d9..dbabba33 100644 --- a/idaes_examples/archive/matopt/monometallic_nanocluster_design_src.ipynb +++ b/idaes_examples/archive/matopt/monometallic_nanocluster_design_src.ipynb @@ -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", From c3b060315bc0f6e857e2584afeacf1e8cb78e29e Mon Sep 17 00:00:00 2001 From: Keith Beattie Date: Fri, 12 Apr 2024 17:46:56 -0700 Subject: [PATCH 19/47] `Curent` should be `Current` --- idaes_examples/archive/power_gen/ngfc/NGFC_results.svg | 2 +- idaes_examples/archive/power_gen/ngfc/NGFC_results_template.svg | 2 +- idaes_examples/archive/power_gen/ngfc/ngfc_flowsheet_src.ipynb | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/idaes_examples/archive/power_gen/ngfc/NGFC_results.svg b/idaes_examples/archive/power_gen/ngfc/NGFC_results.svg index 6588363e..353a39d8 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,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. Curent 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 +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):\n", "\t\t\tPre-Reformer\t\t\n", "\t\n", - "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. Curent 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:" + "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": [ "" From 1f8c0b23ec02c977fee4cfc6fdc455741766453c Mon Sep 17 00:00:00 2001 From: Keith Beattie Date: Fri, 12 Apr 2024 17:50:00 -0700 Subject: [PATCH 20/47] `coversion` should be `conversion` --- idaes_examples/archive/power_gen/soec/soec.ipynb | 4 ++-- .../archive/power_gen/soec/soec_standalone_template.svg | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) 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_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: Date: Fri, 12 Apr 2024 17:52:10 -0700 Subject: [PATCH 21/47] `intialization` should be `initialization` --- .../supercritical_power_plant_src.ipynb | 32 +++++++++---------- .../supercritical_steam_cycle_src.ipynb | 32 +++++++++---------- 2 files changed, 32 insertions(+), 32 deletions(-) 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", From a72ec91bba3b7d228c83dcba0be51c488893dce1 Mon Sep 17 00:00:00 2001 From: Keith Beattie Date: Thu, 18 Apr 2024 15:11:34 -0700 Subject: [PATCH 22/47] `refered` should be `referred` --- .../archive/matopt/monometallic_nanocluster_design_src.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/idaes_examples/archive/matopt/monometallic_nanocluster_design_src.ipynb b/idaes_examples/archive/matopt/monometallic_nanocluster_design_src.ipynb index dbabba33..924b4f12 100644 --- a/idaes_examples/archive/matopt/monometallic_nanocluster_design_src.ipynb +++ b/idaes_examples/archive/matopt/monometallic_nanocluster_design_src.ipynb @@ -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", From acc1e8943b46a542a5c5e731a9231e46f3b9446b Mon Sep 17 00:00:00 2001 From: Keith Beattie Date: Thu, 18 Apr 2024 15:22:44 -0700 Subject: [PATCH 23/47] `optmization` should be `optimization` --- .../archive/matopt/monometallic_nanocluster_design_src.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/idaes_examples/archive/matopt/monometallic_nanocluster_design_src.ipynb b/idaes_examples/archive/matopt/monometallic_nanocluster_design_src.ipynb index 924b4f12..ecd93f1f 100644 --- a/idaes_examples/archive/matopt/monometallic_nanocluster_design_src.ipynb +++ b/idaes_examples/archive/matopt/monometallic_nanocluster_design_src.ipynb @@ -37,7 +37,7 @@ "We have designed the interface with severl 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", From 011f4c53b19de1afb35a6fdf406fe06c89ce4d87 Mon Sep 17 00:00:00 2001 From: Keith Beattie Date: Thu, 18 Apr 2024 15:28:38 -0700 Subject: [PATCH 24/47] `severl` should be `several` --- .../archive/matopt/monometallic_nanocluster_design_src.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/idaes_examples/archive/matopt/monometallic_nanocluster_design_src.ipynb b/idaes_examples/archive/matopt/monometallic_nanocluster_design_src.ipynb index ecd93f1f..b4a900c3 100644 --- a/idaes_examples/archive/matopt/monometallic_nanocluster_design_src.ipynb +++ b/idaes_examples/archive/matopt/monometallic_nanocluster_design_src.ipynb @@ -34,7 +34,7 @@ "\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 optimization models** or the syntax of the Pyomo package. \n", From af4ebe781fb2f4aded2c3c9594e4aad374363df6 Mon Sep 17 00:00:00 2001 From: Keith Beattie Date: Thu, 18 Apr 2024 17:16:21 -0700 Subject: [PATCH 25/47] `compressio` should be `compressor` --- idaes_examples/archive/power_gen/rsofc/rsofc_soec_mode_PFD.svg | 2 +- .../archive/power_gen/rsofc/rsofc_soec_mode_template.svg | 2 +- idaes_examples/archive/power_gen/rsofc/rsofc_soec_results.svg | 2 +- idaes_examples/archive/power_gen/rsofc/rsofc_soec_src.ipynb | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) 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..ca053c17 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">compressorn compression + id="tspan124110">compressorn Nitrogen ASU - Hydrogen purification andcompression + Hydrogen purification andcompressorn 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..13db1cc5 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 andcompressorn\n", " Water_in\n", " Water_out1\n", " Water_out2\n", From 92dc60a5645a59efcc928e05d6f4bc8566db544b Mon Sep 17 00:00:00 2001 From: Keith Beattie Date: Thu, 18 Apr 2024 17:23:22 -0700 Subject: [PATCH 26/47] `consitute` should be `constitute` --- idaes_examples/archive/matopt/surface_design_src.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/idaes_examples/archive/matopt/surface_design_src.ipynb b/idaes_examples/archive/matopt/surface_design_src.ipynb index edcc5f9a..bf0f3d0c 100644 --- a/idaes_examples/archive/matopt/surface_design_src.ipynb +++ b/idaes_examples/archive/matopt/surface_design_src.ipynb @@ -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 auxilliary 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. " ] From 32c2ed32308fe7fdc67e64ee6bc89b9dd616a1ed Mon Sep 17 00:00:00 2001 From: Keith Beattie Date: Thu, 18 Apr 2024 17:25:59 -0700 Subject: [PATCH 27/47] `auxilliary` should be `auxiliary` --- idaes_examples/archive/matopt/surface_design_src.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/idaes_examples/archive/matopt/surface_design_src.ipynb b/idaes_examples/archive/matopt/surface_design_src.ipynb index bf0f3d0c..330f2053 100644 --- a/idaes_examples/archive/matopt/surface_design_src.ipynb +++ b/idaes_examples/archive/matopt/surface_design_src.ipynb @@ -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 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", + "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. " ] From 186f4c3a741545c9e1ebb4a77b1273212673d215 Mon Sep 17 00:00:00 2001 From: Keith Beattie Date: Thu, 18 Apr 2024 17:32:09 -0700 Subject: [PATCH 28/47] piecwise -> piecewise thtat -> that symetry -> symmetry --- idaes_examples/archive/matopt/surface_design_src.ipynb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/idaes_examples/archive/matopt/surface_design_src.ipynb b/idaes_examples/archive/matopt/surface_design_src.ipynb index 330f2053..49861f88 100644 --- a/idaes_examples/archive/matopt/surface_design_src.ipynb +++ b/idaes_examples/archive/matopt/surface_design_src.ipynb @@ -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. " ] }, { From 43a488c24d265d32107edf7edc01e758038e56a3 Mon Sep 17 00:00:00 2001 From: Keith Beattie Date: Thu, 18 Apr 2024 17:36:15 -0700 Subject: [PATCH 29/47] `acitivity` should be `activity` --- .../archive/matopt/bifunctional_surface_design_src.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/idaes_examples/archive/matopt/bifunctional_surface_design_src.ipynb b/idaes_examples/archive/matopt/bifunctional_surface_design_src.ipynb index cf5a448e..b123df61 100644 --- a/idaes_examples/archive/matopt/bifunctional_surface_design_src.ipynb +++ b/idaes_examples/archive/matopt/bifunctional_surface_design_src.ipynb @@ -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. " ] }, From a7dfd61b461edda40b81806439287a23fb48568d Mon Sep 17 00:00:00 2001 From: Keith Beattie Date: Thu, 18 Apr 2024 17:42:56 -0700 Subject: [PATCH 30/47] `seperation` should be `separation` --- idaes_examples/archive/power_gen/rsofc/rsofc_soec_flowsheet.py | 2 +- idaes_examples/archive/power_gen/sofc/sofc.py | 2 +- idaes_examples/archive/power_gen/sofc_soec/sofc_with_soec.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) 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..81d00db4 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) diff --git a/idaes_examples/archive/power_gen/sofc/sofc.py b/idaes_examples/archive/power_gen/sofc/sofc.py index d8dcae33..468e5d6b 100644 --- a/idaes_examples/archive/power_gen/sofc/sofc.py +++ b/idaes_examples/archive/power_gen/sofc/sofc.py @@ -738,7 +738,7 @@ def set_inputs(m): m.fs.intercooler_s2.outlet.temperature.fix(310.93) # K (100 F) m.fs.intercooler_s2.deltaP.fix(-3.447) # kPa (-0.5 psi) - # air seperation unit + # air separation unit m.fs.asu.O2_outlet.mole_frac_comp[0, "CO2"].fix(1e-19) m.fs.asu.O2_outlet.mole_frac_comp[0, "H2O"].fix(1e-19) m.fs.asu.split_fraction[0, "O2_outlet", "N2"].fix(0.0005) diff --git a/idaes_examples/archive/power_gen/sofc_soec/sofc_with_soec.py b/idaes_examples/archive/power_gen/sofc_soec/sofc_with_soec.py index 90a0a6ff..e85dc76f 100644 --- a/idaes_examples/archive/power_gen/sofc_soec/sofc_with_soec.py +++ b/idaes_examples/archive/power_gen/sofc_soec/sofc_with_soec.py @@ -766,7 +766,7 @@ def set_inputs(m): m.fs.asu_ic02.outlet.temperature.fix(310.93) # K (100 F) m.fs.asu_ic02.deltaP.fix(-3447) # kPa (-0.5 psi) - # air seperation unit + # air separation unit m.fs.asu_split.split_fraction[0, "o2_outlet", "N2"].fix(0.0005) m.fs.asu_split.split_fraction[0, "o2_outlet", "O2"].fix(0.9691) m.fs.asu_split.split_fraction[0, "o2_outlet", "Ar"].fix(0.0673) From f9353c5d8981e3288211f34de0055c88557b85b1 Mon Sep 17 00:00:00 2001 From: Keith Beattie Date: Thu, 18 Apr 2024 18:03:20 -0700 Subject: [PATCH 31/47] `temeprature` should be `temperature` `constrant` should be `constraint` `origional` should be `original` --- idaes_examples/archive/power_gen/sofc/sofc_rom.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/idaes_examples/archive/power_gen/sofc/sofc_rom.py b/idaes_examples/archive/power_gen/sofc/sofc_rom.py index a019ab47..d0cea0ce 100644 --- a/idaes_examples/archive/power_gen/sofc/sofc_rom.py +++ b/idaes_examples/archive/power_gen/sofc/sofc_rom.py @@ -22,7 +22,7 @@ The inputs include: - current density, A/m2 - fuel inlet temperature, C - - air inlet temeprature, C + - air inlet temperature, C - air recirculation fraction - fuel oxygen to carbon ratio (OTC) - fuel utilization fraction @@ -166,11 +166,11 @@ def build(self): def norm_input_rule(b, i): return b.norm_input[i] == (b.input[i] - b.mean_X[i])/b.std_X[i] - self.norm_input_constrant = Constraint(self.X_set, rule=norm_input_rule) + self.norm_input_constraint = Constraint(self.X_set, rule=norm_input_rule) def output_rule(b, i): return b.output[i] == b.norm_output[i]*b.std_Y[i] + b.mean_Y[i] - self.output_constrant = Constraint(self.Y_set, rule=output_rule) + self.output_constraint = Constraint(self.Y_set, rule=output_rule) # this loop creates parameter and variables for lr in range(layers): @@ -363,7 +363,7 @@ def initialize(self, ) init_log.info_high("Initialization Step 1 Complete.") - # return variables to origional state + # return variables to original state if unfix_vars: for var in vars_to_unfix: var.unfix() From 9cbd8473e46d3c2906dff887818b653c23e3cf38 Mon Sep 17 00:00:00 2001 From: Javal Vyas Date: Fri, 19 Apr 2024 02:47:42 -0400 Subject: [PATCH 32/47] Fixing some more typos --- .../power_gen/ngfc/ngfc_flowsheet_src.ipynb | 4 +- idaes_examples/archive/power_gen/rsofc/cpu.py | 4 +- .../power_gen/rsofc/rsofc_soec_flowsheet.py | 4 +- idaes_examples/archive/power_gen/soec/soec.py | 2 +- .../subcritical/subcritical_boiler_src.ipynb | 12 +-- idaes_examples/archive/ripe/clc_nb_src.ipynb | 4 +- idaes_examples/archive/ripe/cracsim.py | 2 +- .../ripe/ripe_isothermal_cstr_src.ipynb | 2 +- .../active/power_gen/ngcc/ngcc_doc.ipynb | 4 +- .../active/power_gen/ngcc/ngcc_test.ipynb | 4 +- .../active/power_gen/ngcc/ngcc_usr.ipynb | 4 +- .../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_toolbox_exercise.ipynb | 4 +- .../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 | 2 +- .../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 +- .../custom_physical_property_packages.ipynb | 4 +- ...ustom_physical_property_packages_doc.ipynb | 6 +- ...stom_physical_property_packages_test.ipynb | 76 +++++++++---------- ...ustom_physical_property_packages_usr.ipynb | 76 +++++++++---------- .../properties/parameter_estimation_pr.ipynb | 2 +- .../parameter_estimation_pr_doc.ipynb | 4 +- .../parameter_estimation_pr_test.ipynb | 4 +- .../parameter_estimation_pr_usr.ipynb | 4 +- .../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/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 +- .../sco2/omlt/surrogate_embedding.ipynb | 12 +-- .../sco2/omlt/surrogate_embedding_doc.ipynb | 12 +-- .../sco2/omlt/surrogate_embedding_test.ipynb | 12 +-- .../sco2/omlt/surrogate_embedding_usr.ipynb | 12 +-- 63 files changed, 243 insertions(+), 251 deletions(-) diff --git a/idaes_examples/archive/power_gen/ngfc/ngfc_flowsheet_src.ipynb b/idaes_examples/archive/power_gen/ngfc/ngfc_flowsheet_src.ipynb index ffc37f3a..7c2db5ab 100644 --- a/idaes_examples/archive/power_gen/ngfc/ngfc_flowsheet_src.ipynb +++ b/idaes_examples/archive/power_gen/ngfc/ngfc_flowsheet_src.ipynb @@ -69,7 +69,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABnEAAAR6CAYAAACUQ1JDAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAFxEAABcRAcom8z8AAP+lSURBVHhe7P0PzBz5fd95Nh/KFONoxlw7GtM5acTLZSyuDSh0JM3xno0cnqFN6IkSMF7Dy5szEh4sPOBhnT1OlLvwECmcu9sNgThaPgpuQ2gQLOXsrp5RFjYDwUsiHp2fERZeXrQ7RzgrgJkQAm8crLgTG+LJuAOlmOTvvp96+vfw17/+Vlf136quer8wn+HT3dXV1f+e7qrP86saAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoIVesty0/L4lDKOfX7P8lGUZXrBo/j9WnHpKp79licvxq5a2+JQlLpei0wAAAAAAAAAAAAunguYblrSY8KKy5X2WRYjljearsoYSBwAAAAAAAAAAIJEXElX5mmURRY5KmThPShwAAAAAAAAAAICERuCku06rm0UUKpQ4AAAAAAAAAAAADo2m0aiatIxQofOKJR1p4+1qzStdpkWJAwAAAAAAAAAA4MhH4ehnnefxCp/PWHIvWW5a0uk0X50X563rpZfniWWNV+JoOVQypcuteev4OpPE4+/k91fnlV1Xt/V5i3dbdUoc7/pvW/KSDAAAAAAAAAAAYERepnilTEoljEqIXxn+nFNhkc7Py1nLrCXOr1nyIilGRUnZaJiq21Py+54XXGl0/hez8/LbnnR9RSOb5h3JBAAAAAAAAAAAOirdnZkKB6+YqSsdmZLOS6NW0iJGP/+95LSXshKnKip48hEudQqcmFjkaB5lZVFZ0hKn7nJ7ywsAAAAAAAAAAHouLypUOswzMiQthPJRLWmRkhY86XW82/fKEC1z3P2Z5pNenhdR+jkdDaOfNRIo0s/55bpOWkgpGjUTb1OPmzfiKC1x0vulpOVQft18BA8AAAAAAAAAAOi5RZc4kyyqxPGmKZu3pPPPL4vyokfXqXO9vKiJZUy+zJoulT/u+eUAAAAAAAAAAKDnll3iHLW8ZHnNEm9DmafE0fJquVNlJU5+/7zrSj6dRt0oVdfLR+vEEicvheIonFS6zIt+3AEAAAAAAAAAQAfUGXEyDe1yLC9t8sxT4nijVtIyJZ13netG6XLkKbteXtbEEicvd6pCiQMAAAAAAAAAAMakI0IUb9RISsXF2xYVNZ/QGQmvvLhp0WicS8l5lDijocQBAAAAAAAAAABj8iIiLUE8edkRS5+8MMl3QZaWRasqcdqyO7V4PgAAAAAAAAAAQG15gaGogHjFkhYXKibSYiNOFwuTquKiiRJH0vnnl0X5smtZ61wvnUaJ97nOMgMAAAAAAAAAAFTKS4y6ScsJrwiJ8qIoLUXKypJYIM1b4uTLpZ/PWiL9nF+u66TzVFRg6Xg/omX7vCW9XEmLq7zg0e7k4n3S7uXiLun0c1qWAQAAAAAAAAAAjFCZkZYOVVGpkY6aycsW/azSo6rwSEfopIllzbwljuSFyqTE8knLnY9Qqkpa4uTl0aSkhRcAAAAAAAAAAMAYjQqpUzyUHSOmrJDxEouLsrJjkSWOeEVSGl3v05aUbjvfhVya1y3psqUljuh01eNZ9lgCAAAAAAAAAACMUKGgMuemJS0bVEZo919eQZLSiB7tKixeTz/H4+ukI2LS8kK3l5Ylui3tfkwWVeKIRgbpPqTLF+9X3FVaTsuo5U/LGD02WuZ82fISR45aVCDltxnnAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDxY5ZvWUKN/L7lpuUlS5lftcTpNV/NHwAAAAAAAAAAAFOapsRJ8zXL+yw5ShwAAAAAAAAAAIAFmLXEUVTY5ChxAAAAAAAAAAAAFmCeEscraShxAAAAAAAAAAAAFiAvcbzRNdELlm9Y4rQ6Rs5PWVKUOAAAAAAAAAAAAAswTYkjn7HEaWcpcVQEvWbRddP56Dxdlktvz5ufbj+dl3esnk9Z4uWKTmuaz1vS675tecXiHesnnYeWI96PeJ7KLW/5AQAAAAAAAAAAZjJNifMJSzqtV5hMKnHSQqYsmiaVlzQqU1J5QaNpq4qllyzpPPOokMnLorzEeSM5Hc/LrwMAAAAAAAAAADCzvMSpm7LSoqzEqVPgxKRFjkoilUXeZZLenjdNfn2VL3Xub15Q5WVRnny5AAAAAAAAAAAA5jJLiaOCo2zXYV6Jk4+m0c9nLZF+zi9PR9Ok80zLlbJl1/RRftt5YvmieWr3aull6agfr8RJ7wMAAAAAAAAAAMBCzVLiKGXHgPFKnPS8vKCJ8rIlLWLSAiW9ftnomHi7opLGm0ZJb0PyUTtly6DkI3UAAAAAAAAAAAAWatYSR0nLkigvcVT0pMVIWfmRFyjpdPkyxhEyaUGjUknRz7HoyeeZx9sFWjrP9P7lJY53XQAAAAAAAAAAgIXJC5J8dEpKxUgsSsrKjLzE0XXqzj+/bloQpZfp57yg0XKk0+h0ft9+O/m5TtJlyEucWCQBAAAAAAAAAAAsxTQljuTT5yNr8iJmUSVOWqLospcscfdrceRNOo3mpWPWxNOa5nPJ6TpJl4ESBwAAAAAAAAAArNSyS5xF7E5N0ttVIfPF4c9KLFtU5MRiR+e9MfxZ0fw+YYmXK9MUMZQ4AAAAAAAAAABgpaYpcfJCRsnLFm80TXpeHDWTSwsYxTvmTDqfNHGZ8yIojbd7tUn3NUeJAwAAAAAAAAAAViovNqZN1TFx8hEyin7Wrs4i/Zxf7hU9uq04TZq0UPGmSeeXF0GXLLGE0i7a3ra8Nvw5LacocQAAAAAAAAAAwErNU+LEkibllTiSlyeT4o3CkbwMUvJlyMsWJR0t5M2jLOlyUOIAAAAAAAAAAICVmrXEKRstU1biyOct6TzyaJ6ftpTxdpeW787Nuz95KaQCpqrIyedLiQMAAAAAAAAAAFZq2hLnty2vWNKCIzWpxBEdV0e7K9Nuy+J0KlR0ni6rku8uzRu1ky5DWdl01KJSKV+OmxbtSi1HiQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD03hHLdct9y23LeQsAAAAAAAAAAAAadNii4iY9toxyy3LcAgAAAAAAAAAAgAacsuQFTsxDy0ULgP56yXLT8vuW+LtBP79m+SnLMrxg0fx/rDj1lE5/yxKX41ctbfEpS1wuRaeXZdrHQZfHaXW9+Lh+xhLPnyZ6/vW6SJdBKbvPep2kr590GQAAAAAAAABMoJIm3QjnRRtwj1oA9Ic2vH/D4v1OSKOy5X2WRYjljebrbeinxNnThhJHr4/8PnvPmV4bX7Ok0+l2AQAAAAAAANTwqiXduFaWB5ZzFgDdl2+cr4o20i+iyCkrGyJKnD1tKXEknbeSL0t+G4t6rQAAAAAAAAC9ULfEiWFUDtBt+a6v6mYRhUpZ2RBR4uxpU4mTL4sS73v+WkqvBwAAAAAAAKCGaUscRaNyTlsAdIu36ytteH/Fko6e0Ib4fFdrXukyLUqceqZ9HKoe19Qsj3HZaJv0dhV2owYAAAAAAABMaZYSJ+aa5YgFQDdMM3LCK3zyjfQ6+L1G76XTaJ46L51v1YiQWCR4BYOWQyVTutyav46vM0k8/k5+f3Ve2XV1W5+3eLdVVeJ4133bkhdkdbStxPFeC7+dna66XQAAAAAAAACOeUoc5b6FUTlAN+RlStXICRUxKiJ+ZfhzSoVFOi8vZy0ya4nza5a8PIhRWVI2Gqbq9pT8vucFVxqd/8XsvPS2J11X0aimaQqOaYuWZZc4UnUflzkyCQAAAAAAAOis8hLniHNeea5aDlsArK90Y782yOfFTF3pqJR0PhqxkhYEsVCYtcSpStytV6pOgRMTixxvpElVYmlRd5m9ZS0z7eOQJj7mZfJ51y1xpOyxnWYeAAAAAAAAABLlJc4vWU5k503OHctJC4D1kxcVVRv7J0nLoHxES7qhPy+K0ut5t++VF1rmuPszzSu9PJ+/fk5Hi+jnOBpI9HN+ua6TllKKRs7E29Tj5o06iiVOep+UtBjKr1d3tIr3ONRN1fOaz3uaAsZbrvw5AAAAAAAAADCF8hJna5iftfzg8Lx6uWxhVA6wXhZZ4kyyyBLHm6bu/MvKBZ2ny+J0uk6d66XTKCpk8uXVNKn8Mc8vL5PPd5p4j1mqapkn8Zar6vYAAAAAAAAATFBd4ijnLD9u8abzo1E5JywA1sMyS5yjlpcsr1nS3xPzljhaXi13qqzEye+fd13Jp9OoG6XqevloHZ3OC6E4CieVLm/dxzx/HKZJ1W3k856mxEnvS5pp5gEAAAAAAAAgUa/EiZluVM5Dy0ULgPWQlihlI07q0u7G8tImz7wljlcOpGVKOv9pyol0OfKUXS8vbLQcebFTlaqCJZq2aEnvT9VtTDvvKL//efRYAAAAAAAAAJjSdCWOolE5H7R41/Fzy3LcAqDd8pEU3siRlDbcv21RWfMJnTHklRc3LRqNcyk5jxJnNFUFSzRt0ZLen6rbmHbeko9eUn47O133vgEAAAAAAABITF/ixJyyHLJ41x0Po3KA9suLiLxkyeVlh0qfvATIdz+WFkWrLHHyoqFst2j5dIvcnZrOW4Rpi5aqxzU17bwlL//ibaS3q9SZFwAAAAAAAIDE7CWO8ouW6Ubl6K/xdXwMAO2TFxiKSohXLGlxoXIiLTbidDq/qrhoqsSRdP75ZVG+/FreOtdLp1G0HLMUInVMO9902bzHNTXtvPPHS4nPeX5Z2WMHAAAAAAAAoMR8JU7Mn7EctHjzGc8DyzkLgPbxNsrXSdzYn19fJUiUl0T5Rv20bEgviwXSvCVOvmz6+awl0s/55bpOOk9FBZaO+SNats9b0suVWGSk90nR7uTi/dHu5eLu6PRzWpRN0qYSJ79/+fT5KJ2ykUwAAAAAAAAAHIspcZRfsDxn8eblh1E5QDupzPDes2VRqRGLgbwE0M8qPKrKDsk3+MfEYqBOwTCpxJG8dJiUWEBp2fMRSlWJ9ysvjiYlLbwmmado0fXic+WZZt55ueXN23vs6t5PAAAAAAAAoPcWV+LEvGiZblTOaQuAdtHIkDrlgzeyoqyM8ZJu0C8rPGKRsIgSR7wyKY2u92lLSred70IuzeuWdNnScko/Vz2W04xQmaZokWWUOPl0Slk5k5c9Zc8LAAAAAAAAgMziSxxFo3J+xOLN1881yxELgPZQqaAyR6Pm0verNsJrF2CTNsRrNI92FRavo5/jsXXSUiEvL3R7aVmi29IuyKROwVCnxBGNDtJ9SJcx3q+4q7ScllP3QdPF6+ix0TLny5aWOKJRhyqP8tuL159G3aIlWkaJk85TqSqh8umrlhkAAAAAAACAWU6Jo/yS5YTFm7ef+xZG5QAAAAAAAAAAAJjllTgxZyxHLN5t+NGonMMWAAAAAAAAAACA3lp+iaNMPyrnjuWkBQAAAAAAAAAAoJdWU+LE/KzlBy3e7fm5bGFUDgAAAAAAAAAA6J3VljjKOcuPW7zb9MOoHAAAAAAAAAAA0DurL3FiphuV89By0QL02QmL3rOE9Cl63QMAAAAAAAC9pA1kXmniFy+LjkblHLN4t+/nluW4BeibCxbvPUFIH6LXPwAAAAAAANA7zZY4MacshyzecoyHUTnom2MWve699wMhfYhe/3ofAAAAAAAAAL3SjhJH+UXLBy3esvjZtRy1AF13xuK9BwjpU/Q+AAAAAAAAAHqlPSVOjEblHLR4yzSeB5ZzFqDL9Br3Xv+E9Cn8rgcAAAAAAEDvtK/EUX7B8pzFWy4/Ny2MykFXUeIQQokDAAAAAACAHmpniRPzomW6UTnsbgddRIlDCCUOAAAAAAAAeqjdJY4y/aica5YjFqArSkucv3HlE+E//i/+HCGdiF7P3ut8GEocAAAAAAAA9E77SxzllywnLN5y+rlvOW0BuoASh/QilDgAAAAAAADAqPUocWLOWI5YvOX1o1E5hy3AOqPEIb0IJQ4AAAAAAAAwar1KHGX6UTl3LCctwLqixCG9CCUOAAAAAAAAMGr9SpyYT1l+0OItu5/LFkblYB1R4pBehBIHAAAAAACgu04No+OgxJ85uH219S1xlHOWH7d4y++HUTlYR5Q4pBehxAEAAAAAAOgGjaY4a9k5cODA9+xfb2NPmusWbfyh1Bm33iVOzM9a6o/KeWhR2QesC0oc0otQ4gAAAAAAAKy3o5YraXFz5syZcOnSpXDlypWwu7u7n6tXrxbnnz17Nrz3ve99Eqe37FiOW7CnGyWOolE5xyzefRnPAwuwLihxSC9CiQMAAAAAALCeNPLm1YMHD/6B/RtOnz4drl27Fh48eBDqePjwYdjZ2SkKHV1/mKsWlUJ9150SJ+aU5ZDFu0+jOWEB1gElDulFKHEAAAAAAADWz7GNjY137N9w8uTJYpTNPO7du1eM3tH8hqVQ33er1b0SR/lFywct3v16Gh03CVgHlDikF6HEAQAAAAAAWC8nNzY2vqvdoWkkzSLdvn07PP/884/tNrRh6Hxxa/3UzRIn5kWLd9/2QomDdUGJQ3oRShwAAAAAAID1cWZjY+P7P/RDP/REhcsy3L9/P3zkIx+JRY7KjD7qdonzKYt33/ZCiYN1QYlDehFKHAAAAAAAgPVwQgXOhz70oSfa/dky6Xg5OsaO3abSxxE5lDhA+1HikF6EEgcAAAAAAKD9jr7nPe/5V88+++zjZRc4kYqcF1988bGKI7v9vm3Yp8QB2o8Sh/QilDgAAAAAAADtdnhjY+N37N+wu7s7rFjG3dDG+f2NOlvhxvD8Se7e2A5bm5vJ9QZhc3MrbN+4W1yuwui5555TkfNdu+yYpS8ocYD2o8QhvQglDgAAAAAAQLtdsITLly8XxYrr7nbYHNmoU1Xi3A3bm+n049ncumFThXDr1q143nVLX1DiAO1HiUN6EUocAAAAAACA9tIonHd/9Ed/9Il2b+YaK3CUSSVOdYGzn629uZw5cyaed8LSB5Q4QPtR4pBehBIHAAAAAACgvYpROFeuXCnKlFF3w43t0V2hPc2EEufGljN9WTbD9t0Qbt++Hc9rcDTOk7O2CIeHJ5aNEgdYiHDEcmZ4YtEocUgvQokDAAAAAADQUhsbG//8Qx/6UDYK5264e2MrbE4cTVNW4jijcDa3w/AQOHbxjbCVXqYMR+OcPXs22PJ83847YmlAsOV59HAweLyzgkKHEgdYiHDMYq+rRw/svXvVfl7k64sSh/QilDgAAAAAAADtdNQSLl26VJQo0Q1thB/fiJOlpMQZ2/Xa3kibEWMjdfbmtbu7G887a2mANgSnKQqda/bzMv7KnxIHWIhY4oy8d+8vqNChxCG9CCUOAAAAAABAOxUbKLUrs9RYibO5FW6MlTMlJU5e0Gxuh7zDsYmy0ThPi55nnnnmkZ13zdKAfENwmuKv/BdZ6FDiAAvhlThpHt2z9+4V+3mW421R4pBehBIHAAAAAACghQ4cOPBPn3/++cd79clTT0uczbC1fWOvhKlZ4tzNj6Ez3FXaqPFdrsXJzp07p12qfdfOa4C3AdjLQv7KnxIHWIiqEidNUehctp+PD69chRKH9CKUOAAAAAAAAC30nve85/dUmuRubG2Gza1heRPVLHHyUTybY/tS21M23bVr1+J5dTeyLpC30bcqsdB5cnI4k7oocYCFmKbESfPojv1r78OJhQ4lDulFKHEAAAAAAADaKVy4cKEoTyqtqMS5fv16PK+BDf3eht5pMtVumyhxgIWYtcRJo0LnyQX72eY1ghKH9CKUOAAAAAAAoMPCYcspy0WL/qp7TfLfbmvhL1++XJQnlVZU4ty6dWt43l//J/aPs9xLjd3uolK52ya7vdHHYD9pGbKu2S9xjlhOWV5N8t9/yS7KH3tCZsxj+13mvQdnzaPbw0LnqL2GhyXOUctpy9PX8eaf/8/Cz/zcf056mk//rb8RPvfaz7mFyDqGEgcAAAAAAHSUNvI9umX/hvXLXlmi3ZfVsqIS5969e8PzLlu85V7HuLttstOjj8F+0jJkXVOUOCct9y3eY0LIOuR37b171f79bnY+ISE880PfCb/8H//v3VJk3UKJAwAAAAAAOqo4uH1Yz1DiNJO426aTxUgoN2kZsq4pSpw7Fu8xIISQbuT9f/x33VJk3UKJAwAAAAAAOkoHtfc37LQ/e2VJe3ends3iLXeXcttywXLMkjweaRmyrjl13O6Ld58JIaRbufB3f8ktRtYplDgAAAAAAKCj1rnEUQbhwoULRXlSqWaJc3d7M5nGsuVOFbY3k2kscbLr168Pz9u1eMvcpVDiEELIukfHx/GKkXUKJQ4AAAAAAOiodd6dWggHDx4J586d22tPqtQsccKNrWQay+Z2GB+LcyNspdMMNkMcsKPdu+2dp4LDX+71DrtTI4SQLoUSBwAAAAAAoLXCkcHg8a79G9YxGxunw/PPH9trT6rULXHGpnta0OzLi55kXiqVNjaO2HkPLf5yr19U3IRXLcft/kZ2On0MknilyLqlKHFOWChyyDrnd+29+5/Yv+9m5xPyNJQ4AAAAAAAArRdOWE6tXz75n2jh79y5M6xQJqhb4ji7StNonBuxyLmbj8KxJLtc+2N/7P2PBoMP/D/sbGd5lx5bnkXl0b3B4PFl+zktblI9KHFiTmX5wgU723v8CZkhT87av/a6WlQe3d4bLReO2utXG6/tvMOW0dfxv/8f/IfFxnvSj/yFX7xqz7v3eqHEAQAAAAAAwPIcs4TLly8PK5QJapc4mjQ7Ls7EPB2pc+vWrXh+QxuM/A109VMUN1fs5xPDGU7SoxJnLKcswIIE+z3mvR+nSdzNoeY1YljijEcbvb2N4aSbUVFjT7sbShwAAAAAAAAszcbGxj//yEc+8nivRplgihLHHY1TlmQUztmzZ4Mtz/ft/COWBvgb6Cbn0f29YyM9OTmcSV2UOMBCzFriuLs5zFHikCKUOAAAAAAAAGjKBUu4fv36sEopMVWJI9VFzubWDZtqz+3bt+P51y0N8TfQjScWN9qV08wocYCFmKbEqdzNYY4ShxShxAEAAAAAAEBTDm9sbLz7wgsvPHr48OGwUnFMXeLsuXtjO2xtju5ebXNzK2zvHyRnz5kzZ+IonHx3Rivkb6Dby6MHg8Hja/bzmeHE86LEARaiqsSZajeHOUocUoQSBwAAAAAAAE0qRuPUOjbOEiTHwrmihWlOvnHu0cMFFzcpShxgIbwSZyGj5YQShxShxAEAAAAAAECTNBrndw4dOvR4d3d3WK2sxv3798MHPvCBP7Tb/64tx9G9xWmKNsgVxc3OYPDkrJ0+PLxgGShxgIWIJU4xWm4RxU2KEocUocQBAAAAAABA045qt2rPPvvs43v37g0rluXS7ttefPHFx3bb2kjUgg37Sy9uUpQ4wEKEI5ZljJYTShxShBIHAAAAAAAAbXBSx6X5yEc+8vjBgwfDqmV5zp07FzcQaXdufUOJA7QfJQ4pQokDAAAAAACAtjirIuf5559/fOfOnWHdslgqiD75yU/GETgNHwenMZQ4QPtR4pAilDgAAAAAAADr41OWfAPHZyx1/KolXudblh+ztNHJgwcP/utnnnnm0bVr14bVy2Lcvn07vPDCC49UFNntnN+7uV6ixAHajxKHFKHEAQAAAAAAWB9pERPzNcv7LFXWpcSRYxsbG//c/g0nT54Mt27dGtYws7l//344e/Zscd9tvt+1f/u+IZ8SB2g/ShxShBIHAAAAAABgPah0UfmSb+D4fctPWaqsU4kjRyyXDxw48D37N5w5cybs7OyEhw8fDquZaru7u+H8+fPh0KFDcfdp1yxHLX1HiQO0HyUOKUKJAwAAAAAAsB68XanFqKDpqmOW65bivr73ve99olE1ly5dCjdv3iyKmjSXL18uipv3v//9j+J1LLuWExbsocQB2o8ShxShxAEAAAAAAFgP6Uiab1jeSE6vw8iaeWlkjjbm7Bc6FbltuWBRCYRRlDhA+1HikCKUOAAAAAAAAO2n3aVpt2lxo8ZnLPnIHJ2exNudWjoPnfeC5bXkPJVFOq+Njlu0Qf60RaXE2eHpkxZMRokDtB8lDilCiQMAAAAAANB+Km3iBo14DJz8GDlVu1SrU+Kko3vS6dAtlDhA+1HikCKUOAAAAAAAAO32PsvXLHGDhn7WeZIWM7HcKVNV4nhReYTuocQB2o8ShxShxAEAAAAAAGg3b1dqUV7CTCpd6pY42i0Zuo0SB2g/ShxShBIHAAAAAACg3bxdqUWTRunk6pQ4k66P7uhuiXPG8pzFu297ocTBuqDEIUX6UuKc/IlBuHZxEHa3n+Z3Xx/cefzmYJcQQjqeq2G3ON4nAAAAgDVUp6RJSx5FxYynTonD7tP6oXslzjnLT1i8+zQaShysC0ocUqQPJc7pF+3OvEkIIf3NozcHD5/sDk7a5zwAAACANVOnZMl3t6ayxlOnxCkrgNAt3Spx/ozlkMW7P+M5ZgHWASUOKdKHEufOP7I742zUJISQPkWjcuxzHgAAAMCaSYuXuokFTY4SB1E3SpzqXafluWMB1gUlDinS9RLn4hf+HXdjJiGE9C0ajWOf8wAAAADWiEoWlS1hhngjdihxEK13iVN/12lp7lkYhYN1QolDivRhJM79X7c742zQJISQvsU+5wEAAACskbxgmSbesXMocRCtb4kz3a7TYi5bjliAdUKJQ4r0ocQ5/5fszjgbMwkhpG+xz3kAAAAAayQtXXTMGx37powKGxU3k6anxEG0fiXO9LtOU7Rf8eMWYB1R4pAifShx9Lo+d3oQbv0Du1PORk1CCOlL7PchAAAAgDWR70rNG1mTywsZlTYpShxE61PizLbrtPuWsxZgnVHikCJ9KXFKovcBsFRhEM5Z7E3lhl2xYuHC7uBVr8BRhpMAAAAAWAM6pk26EcM7xk0uL35iURNR4iBajxKHXaeh3yhxSBFKHGC5AiUOVowSBwAAAFh/dXaNViYtapS0lKHEQdTuEoddpwFCiUOKUOIAyxUocbBilDgAAAAAgCrtLHFm33XaGQvQNZQ4pAglDrBcgRIHK0aJAwAAAACo0r4SZ/pdpz20aNdphy1AF1HikCKUOMByBUocrBglDgAAAACgSntKnNl2nXbTwq7T0HWUOKQIJQ6wXIESBytGiQMAAAAAqNJ8icOu04AqlDikCCUOsFyBEgcrRokDAAAAAKjSbInDrtOAOihxSBFKHGC5AiUOVowSBwAAAABQpZkSh12nAdOgxCFFKHGA5QqUOFgxShwAAAAAQJXVlji/aPlxi3d75WHXaeg7ShxShBIHWK5AiYMVo8QBAAAAAFRZXYnzv7Kw6zRgFpQ4pAglDrBcgRIHK0aJAwAAAACosvwSR7tO+xGLdxvlYddpwFOUOKQIJQ6wXIESBytGiQMAAAAAqLK8Eme2Xafds7DrNGAUJQ4pQokDLFegxMGKUeIAAAAAAKosp8SZbddpWhZ2nQaMo8QhRShxgOUKlDhYMUocAAAAAECVxZY4s+86jQ0jQDlKHFKEEgdYrkCJgxWjxAEAAAAAVFlMiTP7rtNOWwBMRolDilDiAMsVKHGwYpQ4AAAAAIAq85c47DoNWDZKHFKEEgdYrkCJgxWjxAEAAAAAVJm9xGHXacCqUOKQIpQ4wHIFShysGCUOAAAAAKDK9CUOu04DVo0ShxShxAGWK1DiYMUocQAAAAAAVaYrcdh1GtAEShxShBIHWK5AiYMVo8QBAAAAAFSpV+Kw6zSgSZQ4pAglDrBcgRIHK0aJAwAAAACoMrnEYddpQBtQ4pAilDjAcgVKHKwYJQ4AAAAAoEp5iTPbrtMuWth1GrBYlDikCCUOsFyBEgcrRokDAAAAAKhSXuJMl+uWoxYAi0eJQ4pQ4gDLFShxsGKUOAAAAACAKvOWOHcs7DoNWC5KHFKEEgdYrkCJgxWjxAEAAAAAVJm1xGHXacDqUOKQIpQ4wHIFShysGCUOAAAAAKDKLCUOu04DVosShxShxAGWK1DiYMUocQAAAAAAVaYpcdh1GtAMShxShBIHWK5AiYMVo8QBAAAAAFTRLtHyDWV52HUa0CxKHFKEEgdYrkCJgxWjxAEAAAAAVDlhyTeUpWHXaUDzKHFIEUocYLkCJQ5WjBIHAAAAAFDHbUu+sYxdpwHtQYlDilDiAMsVKHGwYpQ4AAAAAIA6jliuWu5bVOict7DrNKA9KHFIEUocYLkCJQ5WjBIHAAAAAABg/VHikCKUOMByBUocrBglDgAAAAAAwPqjxCFFKHGA5QqUOFgxShwAAAAAAID1R4lDilDiAMsVKHGwYpQ4AAAAAAAA648ShxShxAGWK1DiYMUocQAAAAAAANYfJQ4pQokDLFegxMGKUeKgJX7M8i1L/tlblU9Z5pXf9q9auu4Fy2sW3XcAAAAAQAdQ4pAilDjAcgVKHKwYJQ5aghJnNWJ5o/up+0yJAwAAAAAdQYlDilDiAMsVKHGwYpQ4aAlKnNXQfYv3kxIHAAAAADqEEocUocQBlitQ4mDFKHHQEpQ4q0GJAwAAAAAdRYlDilDiAMsVKHGwYpQ4aIm8SPmMZVUocQAAAAAAa48ShxShxAGWK1DiYMUocdAS85Y4GpETr6vkBUU+//Ty/DIVHe+zvGL5/eF5yk2LjimTe8miy+J0iq6n837KkvNuL1dVtsTle9sSp1N0uzrmTX67ejzT6fJ0ubgCAAAAgF6gxCFFKHGA5QqUOFgxShy0RF5szDISJy0+8nnkl6W7Yctv+9csX0tOp1FJkl738xZvujRnLal5SxwVNGm5VJb0/lPiAAAAAEDHUeKQIpQ4wHIFShysGCUOWiIvNuokLx7yeajoUOGRj9Kpul5VVPBoJEw633hbotE66fzyEia/vWlKHN1uWcGUJ10mShwAAAAA6DhKHFKEEgdYrkCJgxWjxEFLTFukKF7xkBc2b1i+kZzOCxXxbltFSdx1moqQ9PJYjqRFSz5yKC1N0jJF5ilxNB/NL152yaJiR/SvRgZpF2ufs3i7fiubLwAAAABgzVHikCKUOMByBUocrBglDlrCK1Kq4pUfkhYVedJdoUX5bXvlxqRSxrOKEqfOcuQocQAAAACgoyhxSBFKHGC5AiUOVowSBy2RFxt1UlbilM2r7vRxd2mpOiXOUctLltcscVpv+vz2pilx8t2pad66vU9Y8mX2UOIAAAAAQEdR4pAilDjAcgVKHKwYJQ5aIi828t2TTSvfrdqkUSt1SpVJx7/JS5s8iyxxRPPSPOPlaWKp4+1KTShxAAAAAKCjKHFIEUocYLkCJQ5WjBIHLbHoEicdOVM1z1lLnLwoUm5aNBpHx6qJ5y26xBGN+tHxb8rKHMUbUUSJAwAAAAAdRYlDilDiAMsVKHGwYpQ4aIlFljhlI1XyMiWapcRRUZNeJy9M0hJp2hIn32VaVdmiQucXLBqBk9/v/HGkxAEAAACAjqLEIUUocYDlCpQ4WDFKHLTEokqcvADJ441OmaXE+aXhv/E8XZ6apsTJlym/fJqyJb//+bwpcQAAAACgoyhxSBFKHGC5AiUOVowSBy2RFxd1kxcuaXminLWkxYWSF0T5bc9S4qTzzIuUvMTJL1e0nKJj2eSX5WWL5vUrlrct2m1bWtJohFC6XJNKnHS50mkAAAAAAGuIEocUocQBlitQ4mDFKHHQEosocVRIeAVGPu+8VJmlxMl3p6afVcDo9nSsmnh+zKSROlXRvGOJky5HndS9Xe8+AwAAAADWCCUOKUKJAyxXoMTBilHioCXmLXFUnkwa/ZKXH+kIlVlKHM17miKmavRPGs3/i8nptMSRurerMimXF10xlDgAAKCLtBL9+Ppg8Oie/WxfegghhJB+hxIHmF+gxMGKUeKgJeYtcfJiIy8l8pJHicXKrCWOaDdo2q1ZvEw/v2LR7Wk+8fx8t2aikTuvWeI0mq9O6/z09vISR+J109tO55EWWDmNIvqGJb2OdssGAADQJVqBfvTA/rUvPIQQQghRKHGA+QVKHKwYJQ4AAACADnp8xVZ3bKWGEEIIITGUOMD8AiUOFizsDi4WRU153vQKnCL+9Pt5sjs4ObwZAAAAAGiTx7u2OhQIIYQQ8jTnX/0/uMXIOoUSB00LlDhYsMdvDm66Bc0CQokDAAAAoKUocQghhJA07/mB74fPvfZzbjGyTqHEQdMCJQ4WLOwOznkFzLx59Obg3vAmAAAAAKBtKHEIIYSQND/zc/+5W4qsWyhx0LRAiYMFC7uDI4/eHDz0iph58vjNweXhTQAAAABA25SVOI8e7F1GCCFdy+/eGQx27ffceD74J/9f4X/+b/8O6Wl+/CP/Xfj3/4O/4xYi6xhKHDQtUOJgCZaxSzV2pQYAAACgxbRB09ajx6LzAaCTtPHafs+NRxu9vY3hhKxjKHHQtECJgyVY9C7V2JUaAAAAgJajxAHQO5Q4pBehxEHTAiUOliDsDo56Zcysefzm4Opw1gAAAADQRpQ4AHqHEof0IpQ4aFqgxMGSPH5zsOsVMjNld3BqOFsAAAAAaCNKHAC9Q4lDehFKHDQtUOJgSZ7sDs67hcyUefTm4P5wlsA+7bJv+CMAAADQBpQ4AHqHEof0IpQ4aFqgxMGSLGqXauxKDTl7bR1+9ObggV5jw7MAAACAplHiAOgdShzSi1DioGmBEgdLtJBdqrErNWSe7A5O67Wh0V7DswAAAICmUeIA6B1KHNKLUOKgaYESB0sUdgcXx0qZKTIcbXF4ODug8PjNwTW9PlQSDs9aJy9Zblp+35J+5r9tecXC6CIAAID1RIkDoHcocUgvQomDpgVKHCxR2B0cy4uZaaKN9cNZAQWVekW5Z68P+/ehnT4yvKjtfsryDYv3eZ/n85b3WQAAALA+KHEA9A4lDulFKHHQtECJgyV79ObgVl7O1I12mzWcDVAIu4NTI6+T3bX4rPyUJR95U5VftQAAAGB9UOIA6B1KHNKLUOKgaYESB0sWZtylGrtSg+fxm4Or6evETmvXZG2mETjTFjgxKn8AAACwHihxAPQOJQ7pRShx0LRAiYMlCzPuUo1dqcHz6M3B/fR10vJdqmmXaF+z5J/vr1lU7kSa7qwlL3t0XXarBgAAsB4ocQD0DiUO6UUocdC0QImDFXj05uBOuuG9Tp7sFhu1gX0h35Va+18r+Sgc/TxpdI03fVr2yEsWjT6K08TpdF4+baQi6BXL25b8enmhBAAAgNlQ4gDoHUoc0otQ4qBpgRIHKxB2B696G9/LMhxdwa7UMCLflVqMnb8znKRtPmNJP9d1uoqm+YZFpctRnZH4vCWdn5e80MqLobLUWTYAAACUo8QB0DuUOKQXocRB0wIlDlYg7A6Oexvfy9LijfJo0KM3B/e810tLS798V2reqJppaASPN68XLN+yxMv0849ZpGx3bl7mXT4AAIC+o8QB0DuUOKQXocRB0wIlDlZkml2qsSs15Ow1cdJ7rcS08DWTFyhpuTKLX7XEeeWjZtIRP2kZk4/CuWSJx9jRvxrZo12sfc6iMggAAACzo8QB0DuUOKQXocRB0wIlDlak7i7V2JUaPI/fHFz2Xi8xdvm14aRtUbfESQsYL5OOoRPVKXEYaQMAALBclDgAeocSh/QilDhoWqDEwYqE3cEJb+N7nsdvDq4PrwLsK9uVWoxd/qBl5d+ySxwdL+cly2uWdPq0rMmXQZdp+k9Y4ogcAAAALAYlDoDeocQhvQglDpoWKHGwQlUb4ovs8rsPo6p2pRZj050eXqUt0l2glY2EmabE0S7P8tImT3476Wgcb1rNj12pAQAAzI8SB0DvUOKQXoQSB00LlDhYoapdYg13pXZkODlQsNdErV3xtXCXanlBo1Knikqb9DqxxMnPV25aNBpHx7qJ53llkUbt6Pg3ZWWOohE7jM4BAACYHSUOgN6hxCG9CCUOmhYocbBCVSMqHr9ZbJQGRjx6c3DHe73k0S7VhldpC28UzFnLJF6Jo92waXds8by8cCk7Jo5Hhc4vWDQCJ182zQcAAACzocTBvvwL/KS8bYl/ndVH6e4LyvZBvSjTPC9aWSp7Xla5zG1HiUN6EUocNC1Q4mDFJu5SjV2pIWOviePua6Usu4NTw6u2Rfr9PkYFSl606LS3qzSVOHkZFEfnRNOUOKn8mDmMxgEAAJgdJQ72TVMWpNHKQ9++kLe1xEmTryhR4jxFiUN6EUocNC1Q4mDFHr85uOJufFfYlRoydXelFmOvr6vDq7ZFXsBMG6/ESUfM5EVMXuLo51+x6A/8tNu1dN1Df1SWzpcSBwAAYHaUONg3a1mg9G14/DqUOIqWM6LEeaq0xCGkR6HEwdIFShysmEZKlGx8Z90GY+ruSi3Gpr8/vGqbqIiZtsjR9HHETb6uoZ9fsKhw0bFu0usp8Xr6N79sUuL1AAAAMD1KHOybpyzoWymwLiVOumyUOE9R4hBCiYMVCJQ4aIA2tOcb35/sDs4PLwYKYXdwLH+d1Er7dqkmKl2+YfE+7/Not2qaPpXuMq0q6R/v1b2eyiAAAADMjhIH+/KyIB3FkdNBM9O/+MqH1nddkyXOpOclX4FLnxdKnKcocQihxMEKBEocNEC7vHI2vOuA68A+e01cHHud1Ii9vi4PZ9FG+t6vkka7N0s/83/b8opl0vtA63fp9fSzrqMROel6RL5bNK1/eLep9RDv+DwAAACYHiUO9k1TFkj6ZV7xhsjHYfhp4ZOuEHh0vi7PVwTyA/ZrunQfzZP2s5z+lVheONW9vVSdQkTznfa+e6Z9Xsrua51llrgili63fq76qz1vnrrtdD7ec5TvikGnp33s0nloOeJ9iOep2EqXXSup8TLSQI4555GVR+8DYKkCJQ4akO9SjV2pwfPozcGt9HVSN3a9e8NZAAAAAKtCiYN9iy5x8g34ebRhPd/orw3tVbsCSJdrUjkTaaN/Wvak15/29qL0vtcpL/J4973MNM/LJyzptGlpUrXMUmeXCJomyu9n/hrICxrvOcqXKz8Iah7vsctLnDeS0/G89DracJheTlYcffB455OVhg3oWLpAiYOGPHpz8CBudH+yO7gwPBso2BeR2XalNoy9pk4OZwUAAACsAiUO9tUtC1QK5CMZ8o3k+bzKkpYMedkyKbFIyG8nLRiisqJhltuLJhUis9z3SerOL0++XFUlTp0CJyY+HvljOOlx8qbJr6/yZZbHLi+L8uTLJa9avGnJknPSYj8U/3qXk5XkogVYukCJg4Y8fnNwbX+j+y6lNUbNuiu1mJbvUg0AAADdQ4mDfbOWBUpe+OQb79ON/tpNVnpZLFU0TXq+posb6vPRGWkJkd6WV4yUlRez3p6UzVNmue+TzPK86HHId302aZnzoks/p7ta0s/55XFETdnjX7bcmj7KbzdP3cfOK3Hq7CrqtEVlDllh/slg8N/YExT0r3c5WXr0ugdWIlDiNE0jUK5Z9L2+V/kHf33wjja2v/trg+996EeL44G405Ei2oWwPh+OW3ph1l2pxdj17wxnBQAAAKwCJQ72zVIWKHkhkM8n3Wgv2iCfjr7Q5fl5XhmjjfhayfwlS3pQznQDflouSL4saSkw6+1JWSEyy32vks+zbrTbsbTIKVtmSS/LH8MoL1zispc9/l6xoqS3nRdpaaZ57PLb8p5PtMSjweCePUlB/w7PAtBRgRKnKYct+i6ffjb2Jtcu2gss2eD+4DcG4fjz/rRkJA8tpyydFnYHR9PXx8zZ7U/pBQAAgMZR4mDfLGWBd7D7fGN/LE5S6cZ73aauk952vgF/kny509srKxjy60xze6Lp43U1n1hKzHLf43XLzPK8xKTzL1vmOoWWlE2XL58ec0nvpwqleOyh+Dzk88szzWOXlzjeddEC9uQct6QfNieGFwHooECJ0xSNwLFfsf3LqRP24nI2uO9u+9OTsXT+Dyye7A7Oe6+RqbNbjF4CAAAAVoESB/umKQu08T0vb6KyERhl0W3mJc60G+HTgiItIdLz06Imv6/z3N6kMqEq6XXL5Mua3o+cHsdYlsTE+1a2zNPMv2we6fn6OS9otAzpNDqd3652dRJ/rpP09vPHPRZJaBl7cl61pB82bAABOixQ4jRlx2K/YvuXiy/bi8vZ4P7wN/3piZt8BHqnPH5zsOu9RqYNu1QDAADAClHiYN+kjfkqbPJREyoL4kb01CxFRn4MmmlLlXQETBzpkZ6npBv288u6UuJIPn0stcqWeZr517nfOj99PuPzkU6j+eiYNfG0pvlccrpOym5fSZ9rtMijweCOPUH7HzY6PbwIQAcFSpym6Ht8/EzsVV49Zy8uZ4O74k1P3HT2vbmwXanF7Hb3sQIAAECrUOJgX9XGfG/3V16RM6k8KTNNkeDxRn4o8XS6wV/mvb2yMmOW+15l2mXNp68qcfLHLk6fmzRdepu6/18c/qzE20ofG533xvBnRfP6hGXWx44SZw3YE5PvSi2GfcoDHRUocZpCiePEm5646ex7c2G7UovZHVwczhoAAABYJkoc7KtTFuQb8r3p6swnl883bvhPacP825ZXLN6u3NLSJj0Gi5KPtJn39soKkVnue5Vp5umNmNJp3d+yZZb0MhUpKlxyeUGVP6bpPNLE5fVeOzGa1zyPHSXOGrAn5qLF+8Bhl2pARwVKnKZQ4jjxpiduOvvefPzm4Kb32pg1j94c3BrOGgAAAFgmShzsq7sRPd+Yr+QbzfMN+pcs2ogv2tWWypHXhj/H89MSRtE84mUqJ9Jl84oGb7nKppV5bi+9f5MKEaXOfZ8kf16mTSxbJi1z/tjpZ+3uLNLP+eX5Y5o/njHpa8ObJp3XrI8dJc4aeDQY3LInZ+wDx86/PZwEQMcESpymuCXOM8+cCh/9aOh0vvh/vuRubFe86fuaY8eujb0+knTyvRl2B0cevTl46L025gq7VAMAAMDyUeJg3zQjIfKN5vlG/bwUmJRYMmijfNlIjTxxdEkuLwEmTTvP7U1TiExKvO+TzFPipMs2aZnFe+zK4i23d7/z28lfN0r62M762FHitJw9Kccs3odNDBtAuknvbZWuNy32NO9H73OdV7fMnlbV77sqbf2doj8wUJE97f2Rea47s0CJ0xRKHCfe9H1NT0ucc97rYt482R1cGN4EAAAAsCyUONinDTtpWaCNYJPkG/3zokMbvao2yOfX0TKku0Hz4h2HJ8o3vCmTNr7NentVGwhnue9lNO/0eakb3X5arNXZqPl5SzqPPJrnpy0e3Rfdp3R67/nN70teCM3y2OXP+6TnHA2wJ6VsV2ox7FO+e/IRfGXRNOnIv0XoWokTC5hZ7s88151boMRpCiWOE2/6vqaPJc6id6UWY/NlvRkAAADLRomDffkG9qoSp84G+aMWFQPaDVacRhvs4l9ge7RxXsehSa+j1Pmr7XyZ6mywmuX26mwgnOW+e7zHeVJ+26L7ky933Y2acYNfvtw6T5dNouc/XkfxRuyky6H5pkVTNO1jR4nTco8Hg117YrwPmyLa1dpwUnRD/rugTrzfF7PqWokzz/2Z97GYS6DEaQoljhNv+r6mbyXO0nalFrNbfHcFAAAAloUSB52SFx7aeAWgQfZGPDr8YKkKG3S7IS9ApklbClhKnAUJlDhNocRx4k3f1/RxJE4VjajxXjeMtAEAAEALUOKgMzTyJN1YVTbKA8AKPRkMzicfLqWx6din/PrT7+F8t4qKRtalf6WsnzViUL+n0+nq7mZy2ShxFiRQ4jSFEseJN31fQ4kzjhIHAAAALUaJg7WXbqBK05aNgUCvVe1KLUbTDa+C9ZWXH1Vlui7LixzNI59PXj7oZ51Xdnmd4kKfDyqX0tvXLhu128g6JY527ajp0+k0L52X3ud8WTWvSbedqtotne5nmWmvG3elmS6Tfq6zK81SgRKnKZQ4Trzp+xpKnHGUOAAAAGgxShysPa/E0YYnRuEADbM34xGL9yFTFvYpv97y38d1jnOTlw2xXJg0r/yyvGRJL/dKHK88itH5X8zOy+evAia93MtZi+QlzucsZbetpLe1qhKnalolffxrC5Q4TaHEceJN39dQ4oyjxAEAAECLUeJg7eUbn7y/ZgbQAHtDnrN4HzJutOu14VWxfvJdqdUt0/NCJY6izMuPOD+VHPE8xSsyJpU4+XLWSVqspLef3kd97qTLG283vx9VSUeRrqLEqVPgxExd5ARKnKZQ4jjxpu9rKHHGUeIAAACgxShxAADL8XgwuOl8wJSGXaqttbwcycuTMnnJkZYYeWHzhuUbyemy25hU4uTz1Pxi8a/b9UbZpCVOOu+81EgLkVjweCWO7mO8zbzESouhaNL9qTLput5txxFEop+rlm2iQInTFEocJ970fQ0lzjhKHAAAALQYJQ4AYPHsg+TIo8HgYfbhUifsUm09LarEya+XlhB50nIlNam4SC8rKyXy2yy7nVydEsd7XLzrpSbdnyrzPhY6T5fF6XSd2gIlTlMocZx40/c1lDjjKHEAAADQYpQ4AIDFsw+SqXalluTccBZYL8sYiSP55TGTyoSy4iJfxvy2ony0zqQSR6XjS5bXLOl1ykoc7zabKHHqPhZ1p3MFSpymUOI48abvayhxxlHiAAAAoMUocQAAi/d4MNhxPlwqo12wDWeB9ZJv7C8b2ZHLR3p4JUFeqlTNu6y4yAuVsiIoX6a8xNGu0PLSJk9cxjq3md4/774to8Sp+1jIzLcfKHGaQonjxJu+r6HEGUeJAwAAgBajxAEALJZ9iByecVdqYXi9I8NZYb2kG/uVScVAlI5CKbtOPo2i88qUlQ51i4tJJU5eKCkqHjUa51JyHiWOCZQ4TaHEceJN39dQ4oyjxAEAAECLUeIAABbryWBw1vlgmSbsUm09eQVHWoDk8rLEm96bRvHKjqisdKi7a7D8fsRlyouP/PrebtHqlCXp7a2qxKn7WNSdzhUocZpCiePEm76vocQZR4kDAACAFqPEAdbMyeG/QGvNuiu1GHaptrbyDf4xn7fo2DGRftZ5+XR5QVA2v5iyQmFS6ZFeVlYEpdMoscTJC6W8cFqnEkfqPBb5fZ40AmpMoMRpCiWOE2/6voYSZxwlDgAAAFqMEgdYA4ctly0PLPb+HDy0XLQArWMvUO1K7UHygTJ1hrtU0+se6yctJKbNpFJEOWvJCxavVJhUXOTL9w2LjnEjKoS8ciku16RCIy+cllXipJd7BVZu0nXz+6Of9RhH+jm/PF+2iQIlTlMocZx40/c1lDjjKHEAAADQYpQ4QMtpI9p9i70vx8Iup9A6TwaD0/bi9D5Ypop2yTacJdZPXr7USV7G5AVDHHWTlyJesTCpxMnLljqJJU5+2/pZBZDmWVb+LKLEKXs8vXnlqq6bPlZVyZ+jSoESpymUOE686fsaSpxxlDgAAABoMUocoKVOWNyNMEmuW4BWeTwYaMuQ98EyVbRLtuEssZ7yURxl0TR5YZcXLXmxkZYeSr5btUkljui0RuCk80jzuiUtXmKJI9MUVJp2ESVOXmjF1Clx6lzXK6DS6PqftkwtUOI0hRLHiTd9X0OJM44SBwAAAC1GiQO0zBHLFYu9DytzzwK0hr0o596VWgy7VOsEFSsvWXSMo7xI0Hm6LC1forwoycuKvORR0lEiVSWOaB6vWNLlisuUFy9piSMqnd62xMv1s+aleaa3rWXUSJ15SxzRcqXFk6a7ZKmjznW1nK9Z0vul6XRe3N3c1AIlTlMocZx40/c1lDjjKHEAAADQYpQ4QItcsMTj3tQJJQ5axV6Upyzeh8pMYZdqwHoLlDhNocRx4k3f11DijKPEAQAAQItR4gAtcMpy22LvvalCiYNWeTwYXLUXpvehMlO0a7bhrAGsoUCJ0xRKHCfe9H0NJc44ShwAAAC0GCUO0KCjFh33w95zM4USB63yaDC4by9M70Nlpgx3zcYu1YA1FShxmkKJ48Sbvq+hxBlHiQMAAIAWo8QBGqCN0hctDy32fps5lDhoDXtBLnRXajFPBoPTw5sAsGYCJU5TKHGceNP3NZQ44yhxAAAA0GKUOMCKnbGofLH32dyhxEFrPB4MrtiL0vtAmSvsUg1YX4ESpymUOE686fsaSpxxlDgAAABoMUocYEWOW25a7P1VL0d/eBCuXRyEc6f9yy2UOGiNR/Z6tBel94EyV9ilGrC+AiVOUyhxnHjT9zWUOOMocQAAANBilDjAkh2xXLbY+6peDh8ahIsvD8KD37A3o608UuKg7ezFeMTy6qSUlTzD893rJNHxowCsmUCJ0xRKHCfe9H0NJc44ShwAAAC0GCUOsETnLPct9p6ql9MvDsKdf2RvwmTlkRIHXfB4MNi1F+3YB47OH04CoGMCJU5TKHGceNP3NZQ44yhxAAAA0GKUOMASnLTcsth7qV6OHR2Em3/X3nzOyiMlDrqAEgfon0CJ0xRKHCfe9H0NJc44ShwAAAC0GCUOsEDa5ZMOwm7voXrRrtMubw3Cw9+0N56z4qhQ4qALKHGA/gmUOE2hxHHiTd/XUOKMo8QBAABAi1HiAAty0fLAYu+fejn7M4Nw/9ftDeesMKahxEEXUOIA/RMocZpCiePEm76vocQZR4kDAACAFqPEAeZ02nLHYu+bejnxJwfh1j+wN5qzouiFEgddQIkD9E+gxGkKJY4Tb/q+hhJnHCUOAAAAWowSB5iRVnCvW+z9Ui9H3jcIV/+6vcGcFcRJocRBF1Di9MZLlpuW37fYU1xEP79m+SnLOtHypvfjU5Z18IJFj/ePFacaFChxmkKJ48Sbvq+hxBlHiQMAAIAWo8QBpnTYctny0GLvlXq58POD8OA37M3lrBxWhRIHXUCJ03kqPL5hsad1YlQuvM+yDtatxInljZb1WxZKnP6ixHHiTd/XUOKMo8QBAABAi1HiAFM4a7lvsfdIvZw6MQi3/6G9qZyVwrqhxEEXUOJ0msoNezpr52uWdShy1q3E+VVLXFZKnH6jxHHiTd/XUOKMo8QBAABAi1HiADWcsLgbRMpy9IcH4fp/ZG8mZ2Vw2lDioAsocTorLzrqRoVD21HizClQ4jTF/c5CieNfp4+hxBlHiQMAAIAWo8QBJjhiuWKx90S9HD40CJfODcLD37Q3krMiOEsocdAFlDidpNE0GlVjT+V+VHq8YklH2ni7WmtFyVCBEmdOgRKnKZQ4Trzp+xpKnHGUOAAAAGgxShygxAXLA4u9H+rlzJ8ZhHuv2xvIWQGcJ5Q46AJKnE7KSw79rPM8XuHzGUsuHtcln6/O02WpdDdusbR4yXJzeF68bloq6d/PW9L5a/p83uKVOOlxZxRdrvmlpZWWQ8sTp/FGHU0qXDQvLfPbljiNEh+H/DHW45hOlye//Wke4yh/rPPHQSXd2HUDJU5TKHGceNP3NZQ44yhx1kL6WRTjfZeoEr8reJ+DZd9jAAAAmkSJA2ROWW5b7H1QL8efH4Sbf9feOM6K3yJCiYMuoMTppLw8qNqQog0jKiZ+ZfhzrqqMUNLbyIuF15PTeVRkqCjJRwTFaONNvkw6nW7g+Vx2Ok16/XlKnPw2y5I+DlWPW3r70z7GUf5Yv5GcjuelRVQhUOI0hRLHiTd9X0OJM44SZy2kn50x0xxnT5+xZd8D0qjMqTtPAACAVaDEAYaOWnYs9vqvlyPvG4Qrv2xvGGeFb5GhxEEXUOJ0UroxxStBplGnXIiJJYP3F7nzJN8QVLdQiYlFxqwljm47H61UlvTxrlvizPIYR1WPdT59IVDiNIUSx4k3fV9DiTOOEqf18s/WmLrfP6b9zjBNOQQAALBslDjovcOWi5aHFnvt18v5vzQI93/d3izOyt6iQ4mDLqDE6Zy8cHBHYtSUlyX6+awl0s/55bqOt0HmkiVudPFKi3S3X/nt5vchv1xJd52m+eR/0avbnLXEyW8vvS/6V7etkUwaEeTt9sybZzTrYxx5j3V6fVegxGkKJY4Tb/q+hhJnHCVO600qYbzP2ZT3eV4nVfMFAABYFUoc9NoZi4oQe83Xy8mfGIRb/8DeJM5K3rJCiYMuoMTpnEWWOGn5kJcHUb4BRtfJN+jkG1vyMsWb96Tbzm/T+6tcb7kWUeJ4y1rFm2c06X5G3n2J8se61l8oB0qcplDiOPGm72soccZR4rRe+jmmP6BId+s56TtI/n1F0Wdderw80Wdg/ocZk+YLAACwSpQ46KXjlvTA15U5+sODcO2ivTmclbtlhxIHXUCJ0zmLKnHy+ZSVA950GgkSTysqGlJaHi1Xep183ulonbzcyEsNb5dh3nJplEx6u2kZEnmFSz4v3bb2y/8Ji/eY5Lx5ireM3vwmTZeXOO7u03KBEqcplDhOvOn7GkqccZQ4reZ9HuefS/l3gCi/bv5Zn8o/B5Van3cAAABLRomDXjliuWyx13j9XHx5EB78hr0xnBW7VYQSB11AidNJaWkwaaPIJHnR4hUeUV5SfDo5rVSVON68pylxyjYQ5cul61Xdbn6dWLjkt5lG56vU8XalJmXznOcxjvOou7FsRKDEaQoljhNv+r6GEmccJU6reZ/VdT/b0usqVaWM5q1dl/7K8GcAa0B/pau/7nqVENK5aBdKrDgWKHHQG+cs9y32+q6X0y8Owp1/ZG8IZ4VulaHEQRdQ4nTSrBtG4ugSmadg6GKJI0ctOv5NWZmjeKNpyuY5z2Mc50GJs14ocZx40/c1lDjjKHFaa9Io0fQzK/8Mj+pMA2CNnbdMdYBjQshaRgcz7zlKHHTeScsti72u6+XY0UG4+XftjeCsyDURShx0ASVOJ+UlR9XGkXRDiqICZdLGmZQ33bS7U/PKi2lKHK+k8parandq+XXSsiSnQucXLCq+0mVR8uVJH990nvM8xnE6Spz1QonjxJu+r6HEGUeJ01qTPovzz6b8c3Gaz1sAa0gbe9JfAoSQbueEpccocdBZ2vB1zWKv53o5fGgQLm8NwsPftDeBsxLXVChx0AWUOJ2UbxxRtKGlzsGC08Kkzl/JehtxqoqFRZc4XvmRT6PbyG83v15+ed2NSvnjnc+3rMSRWR/jiBJnvVDiOPGm72soccZR4rTWpM/pqs/F/PK6n7cA1oT+Mj++wQkh3U/PR+NQ4qCT9L5+YLHXcr2c/ZlBuP/r9uJ3Vt6aDiUOuoASp7PyDf91kxYq+Tz0s0bZRPo5v1zXWXWJo2hjUDwmjf7NyyktQ77RSIn3R9fJL0s3Kuk2tR9+7XbukiXdGPWSJV2efGNVWVGjafL7op/rPMYRJc56ocRx4k3f11DijKPEaaX88zT/3JP0c1xJP5/y61PiAB0z1V/tEkLWPjpGTo9R4qBTTlvuWOw1XC8n/uQg7G7bi95ZaWtLKHHQBZQ4naYCwJ7O2lHxkW9ESQuIqsQRIlXFwjJKnElJNy7lG5UmJW5Uyu9PVfL7W3ab8X7P8hhHVY+1K1DiNIUSx4k3fV9DiTOOEqeV8s+e/LNJ8s/q/LM+/ezLP+cBrDlKHEL6FUoc+346HkocrBWtbF632Gu3Xo68bxCu/nV7sTsra20LJQ66gBKn8/JRImXx/oo20sH8vevEaP6ftkRVxcIiSxz9+/rwZy95MZXfdhrN64vJ6fQvg+uWP3qscmWlU3q/p32MI0qc9UKJ48Sbvq+hxBlHidNK0/zxQUz6mSr556pXBKX0WarRsDoW3Sd0BoD2osQhpF+hxLHvp+OhxMFaOGy5bHlosddtvVz4+UF48Bv2QndW1NoYShx0ASVOL6icUZlz02JP735UDGhjSJ2/ftXuxjStNqDk14+7MYtWXeLodH7/dL6KEa+YivclnTbej3TZ8w1O3mOQXn/S46jlS3fxputot2ypaR7jiBJnvVDiOPGm72soccZR4rTOpD+GqEpa1KSf5Yp+nvQ5mhdHVaUPgAaVlTj3LacIIWsb732tUOLY99PxUOKg9bT7Hn022+u1Xk6dGITb/9Be4M4KWptDiYMuoMQB+idQ4jSFEseJN31fQ4kzjhKndfI/Hpgm6ahf/ZseF0dRkfOKJf0DDBU7+XHuqgofAA0rK3HYUAKsN+99rVDi2PfT8VDioLVOWNyNE2U5+sODsPO37YXtrJitQyhx0AWUOED/BEqcprjfkyhx/Ov0MZQ44yhxWicdEVNVpuRFTT69ftZ58fK68UbwAmgRShygm7z3tUKJY99Px0OJg9Y5YrlisddnvRw+NAiXzg3Cw9+0F7WzUrYuocRBF1DiAP0TKHGaQonjxJu+r6HEGUeJ0yr5rtQmHU8vykfu5AWM9uKQXl6V/Fh3AFqIEgfoJu99rVDi2PfT8VDioFXOWR5Y7LVZL2f+zCDce91ezM7K2LqFEgddQIkD9E+gxGkKJY4Tb/q+hhJnHCVOq6THq1PqHJcmL37y482JjhtXZ0ROndIIQAtQ4gDd5L2vFUoc+346HkoctIYKHHtN1svx5wfh5t+1F7GzErauocRBF1DiAP0TKHGaQonjxJu+r6HEGUeJ0xpVu0abJN0Fm6LROTnNX2XOTUs6rW7nNQvHwAHWCCUO0E3e+1qhxLHvp+OhxEFr1BqBc+R9g3B5y168zsrXuocSB11AiQP0T6DEaQoljhNv+r6GEmccJQ4ArB9KHKCbvPe1Qolj30/HQ4mDVjhhsdfj5Jz/S4Nw/9ftheuseHUhlDjoAkocoH8CJU5TKHGceNP3NZQ44yhxAGD9UOIA3eS9rxVKHPt+Oh5KHLTCKYu9Hv2c/IlBuPUP7AXrrHB1KZQ46AJKHKB/AiVOUyhxnHjT9zWUOOMocQBg/VDiAN3kva8VShz7fjoeShy0QmmJ09Vdp3mhxEEXUOIA/RMocZpCiePEm76vocQZR4kDAOuHEgfoJu99rVDi2PfT8VDioBVKS5zdbXuhOitaXQwlDrqAEgfon0CJ0xRKHCfe9H0NJc44ShwAWD+UOEA3ee9rhRLHvp+OhxIHrUCJY6HEQRdQ4gD9EyhxmkKJ48Sbvq+hxBlHiQMA64cSB+gm732tUOLY99PxUOKgFShxLJQ46AJKHKB/AiVOUyhxnHjT9zWUOIXjFq1rXLS8+kt/cfDOpXODoFy7uLeu8eA3KHEAoM0ocYBu8t7XCiWOrdeMhxIHrUCJY6HEQRdQ4gD9EyhxmkKJ48Sbvq/pcYmj4ubVgwcP/kv717vvY/lff2Twe/bvOcsRCwCgRShxgG7y3tcKJY6t14yn2RLHFoAVewgljqWtJY4tAO9T1EaJA/RPoMRpCiWOE2/6vqaHJY7u03VLcR+PHTsWLly4EHZ3d4uk7t+/X5y3s7MTzp49Gw4ffm9xnQMHDnzP/tW2A8ocAGgJShygm7z3tUKJY+s141l9iWM3euLxYHDlkf2+ZaMehihxLG0qcexGj9v78zLvU0xLrxd7/Yx94PA6ArorUOI0Rb9X7VfsaChx/Ov0MT0qcVS4XLEU9+38+fPh9u3b9guovocPHxaFzqlTp4p5bGxsvGv/amQO2kvPj7bznC1OAegsShygm7z3tUKJY+s141lNiWM3dNzyqjYIJzfORj1ElDiWpkscu6H4Pr1j//I+xUwocYD+CZQ4TdHvVfsVOxpKHP86fUxPSpxjBw8evGv/hjNnzoQ7d+7YL575XL9+PXz4wx9+onladiyHLWiXm5b09XzLwvMEdBQlDtBN3vtaocSx9ZrxLK/EsZm7G4TTsFEPQ5Q4liZKHJv5MVtDvWDv09v2M+9TzI0SB+ifQInTFP1etV+xo6HE8a/Tx/SgxDl58ODBP3j22Wcf37x5037hLNalS5eKx2pjY+Of2b/sXq09zlvy17Ny0QKggyhxgG7y3tcKJY6t14xnsSWOzbByg3AaNuphiBLHsqoSx2Z41N6n53mfYhkocYD+CZQ4TdHvVfsVOxpKHP86fUzHS5yzBw8e/DcvvPDCo0WMvimjXawdOnTo8cbGxjt2m/w+aweNjvJe0zoeEoAOosQBusl7XyuUOLZeM575SxybyVQbhNOwUQ9DlDiWZZY4NpPifVq2gX1SeJ9iGpQ4QP8ESpym6Peq/YodDSWOf50+psMlzomNjY3va5dnDx48sF80y7W7uxuLnN+x22aXXc1zf/dZ+K4JdBQlDtBN3vtaocSx9ZrxzFbi2BVn3iCcho16GKLEsSy6xLErHrGcs/fZdfvXfQ/WCe9TTKPsc4HXEdBdgRKnKfq9ar9iR0OJ41+nj+loiXP04MGDv6tdqN27d89+yYy7sZXez61wY3h+ubvhxvZW2NzcTK5nsdNb2zfC3bshXL16NZ6vUSBolvu7z8J3TaCjKHGAbvLe1woljq3XjKd+iWMTL2SDcBo26mGIEseyiBLHJj78ZDA4y/sUTdHrhdcR0C+BEqcp+r1qv2JHQ4njX6eP6WKJMzw+TSg9Bs7d7bA5cj8nlzh3b2xl03tRmXM3XLhwIZ6nY7KgOe7vPgvfNYGOosQBusl7XyuUOLZeM57JJY5NcNiy0OImDRv1MESJY5m1xLEJYnGz82gweGin3ffbrOF9imno9cLrCOiXQInTFP1etV+xo6HE8a/Tx3SwxDljCZcvX7ZfLo6xAkeZUOLc2MqmnZxf+icPw0c+8hHtVu1dO81u1Zrj/u6z8F0T6KhVlzg/ZvmWJd7O71t+ylLmVy1xWl1P11+EFyyvWRY1v1Va1GPykuWmRc9BnJ/ytuUVy1EL1lf6nKahxLH1mr/84f8i/LWP/Z3wF/7kf2WPia1XOyWOnbnUDcJpbP737N9XSb/z3w8GX7I3aEhz3KKXIyVOEfe7iV1wxt6n1+x99MB+dt9jiwjvUzJNhq+XsdcRJQ7QXYESpynuhkxKHP86fUzXShwdk+a55557/PDhQ/vlktLu0LJdoe2nrMS5Ebbc6SdlK3zuuv62sTh9wYJmuL/7LHzXBDqq6RJHUSlRZtElTixvFjW/Jsz7mKg0+4YlzmNSPm95nwXrx3s+lV6XOH9k4//79X/4F/5yePv8M/v5x3/5Z4LOH06iByluEF5qcUNInTy0nLVQ4hTZ/25iJ06torghZNGx1+z+5w2AbgmUOE2hxHHiTd/XdKzEKUbhXLlyxX6xRHf3doe26d6/YUpKHGcUzubWDZtjdNcmGS+GbBJG4zSPEgfomTaUOMqnLJ5FlziLnl8T5rkPepzzkTdV0e1h/XjPpdLrEudvnPxb30oLnJhrH/33/ic2CJO2RkXOf3PZfnZW0LuYshLn3x0M7tv79Kq9T+/bGe5jRUjbY69ffXcD0EGBEqcplDhOvOn7mo6VODv5KJwbW+79yuKXOHfzkTub20mBE90N21lBtLl9tzgez/D0OQtWjxIH6Jm2lDhlZQQlzrhZ74NG4Exb4MSUlWxoL+95VHpd4lz7S6d/zytx/sfTf8RWrm2Fh5CW5vYv27/OCnoXk5c4Vyz2pcR9XAhZtzwaDH5Pn0cAuidQ4jSFEseJN31f06ES5/DGxsb3z58/b79UnhorcTa3wo2x4+KUlTgawbNZRNOpnPHktxGne//7329fbQY7FqweJQ7QM20pcZTPWHKUOONmuQ/aJdrXLPF6Mdq1XHpMIk131pKXPbouu1VbL+nzl6bXJc5//fMf/x+9EufuX/y3/o09OLaCTUg789/9H+1fZwW9i8lLnCOWc5bfZheHpAPRiE99HgHonkCJ0xRKHCfe9H1Nh0qc05ZiBEzqacGyGba2h7tCq1ni1FVW4pw7dy4cPHjwD+w8dqm2epQ4QM+0qcRRcZAWClKnsIgH6M/npfPi/FQQpZfn0e1E+TKml0Vly6URK+n56TF4FB2LRudFdZY9N0uJk4/C0c+TRtd406fLM8tyi4qgVyxvW/Lr5oUS5pM+vml6XeL8s//dB97yShydbw/OsSeDwYVHg8Ft+9lWtglpR25ZOCZOER0o/qi9T8/r4PD2s/t4EdLmUOIA3RUocZpCiePEm76v6VCJc/W9733vk3RXaqJj1owex8YstMS5EbZG5rUZ4oCdZJdqpyxYLUocoGfaVOIoeWFSVVjowPvp9b1oZElTJc4byel82rrLnqt6TDz5/fdGPeU0jUonlS5HdcbQrMudF0NlqbNsqOY9tkqvS5y3zz+zmxc4w4x80bEH6pjl1UeDwR3711a8CWkmOxb7BUyJs5eR7yZ2BsUrWbtQ4gDdFShxmkKJ48Sbvq/pUImze+LECfuFUsMCS5yx3bVtPZ3TvXv6G6vi/AsWrBYlDtAzTZc4v2bJd/OVjhCZVFikhUk6UkQjXdLb0M9/LzntZRkljpdYUEyz7HlJM22Jk+9KLb29ac263GW7c/Myz/LhKe+xVShxapQ4KXvQjltU6Ogbqq2ELz4aVTC8OfSb/oLNXhLjocQpUvrdxC5U8XpxmcUr71NMQ2WN9zqixAG6K1DiNMXdkEmJ41+nj+lKifOe97znX506dcp+odSwoBLn7vbesXKe5ukoHNGooOFlly1YLfd3n4V1FqCjmi5xVEhog7023Mfz0uOvTCos0svy0Rs6HS9LS4E6BYi3jLmy+XglTtVomrrLHtW5D6m8QKlznTKzLnf+HF+yxOdY/2p0j3ax9jlLurs5zC4+1nkocaYscVL2AJ54PBhcWXShw8ZhDFHiWGYpcVI2YSxeF1ro8D7FNChxgP4JlDhNcTdkUuL41+ljulLibGxsfF/HoKllASXOeIHz9Fg4qWeeeca+3hTbFrFa7u8+C+ssQEe1ocSRtBxQYkEwbWERlRUKdeZXtoypsvnkJU5aSNXVVImT3q4X3bdJ6pY43n3C4sXnIg8lzhwlTsoeTBU6V+0b63372VbOZw8bhzFEiWOZt8RJ2ZUWVrzyPsU0KHGA/gmUOE1xN2RS4vjX6WM6UuIctoSLFy/aL5Qa5ipx7hbH2Xl63b14BY584AMf+EO7nO/Jq+f+7rPwXAAd1ZYSJz8/buifprDQcVt0wH0dID9eJ52X1Jlf2TKmyuaTlzixjKpSZ9mjaR4TWWaJU3e582XQ5brOJyzTllyoJ30+0lDiLKjESdkDe2qeQoeNwxiixLEsssRJ2QzmKl55n2IalDhA/wRKnKa4GzIpcfzr9DEdOiZOOH/+vP1CqWHmEudu2N5Mr6dshq0bfoEjwxLnugWr5f7us7DOAnRUW0ocyUsEXVZVWGjXW3mBkKfJEmfS6JVplz2qcx9y6XW8eUrdEmfW5dZpnV82vebJrtQWx3ucFUqcJZQ4KXuQzzy2361lG/C8sHEYQ5Q4lmWVOCmb2dTFK+9TTIMSB+ifQInTFHdDJiWOf50+pislzsGDB//12bNn7RdKDTOVOH6BUzIAZ99w2qsWrJb7u8/COgvQUW0qcfLRGnnywiIvTJSbFo0M0TFX4nlpoVCnAJm0jFHZfOqWOLMse1TnPuS8gqyKd1/mWW7RyB0d/6aszFFm2QUdxnmPrUKJs+QSJ2UPuAqdnUeDgY74qG+4btg4jCFKHMsqSpyUzbhW8cr7FNOgxAH6J1DiNMXdkEmJ41+nj+nQMXH++alTp+wXSg1TlzhOgbO5bedOdv++/h6qmL7X2xka4v7us7DOAnRUm0ocmTRaIy0s8vnkG/7T0mLRJU5eNqXz8YqP3KzLHs1S4niP61nLJPl9+bRlnuXOqdD5BYtG4OTLpnlhPunjmYYSZ4UlTmQP/OEn9p4rK3TYOIwhShzLqkuclN1IafHK+xTToMQB+idQ4jTF3ZBJieNfp4/p0O7Ubn7oQx96Yr9Rqk1Z4tzYSqe1bN2oLHDkzp078TrnLVgt93efhXUWoKPaVuJIWlKkSQuLvJTIy5JFljh5WZFfns6nTokz67JHs5Q44j2uKlDy+eu0t7u0z1nmWe5J8mIsf8wxvfhY5qHEaaDESdmTcNhy7vFgcN3+tZV6Ng5jHyWOpckSJ7IbGyteeZ9iGpQ4QP8ESpymuBsyKXH86/QxHSpxLlrCvXv37JdKhSlKnLvbm8l0lhojcKIrV67E6/E7bvXc330W1lmAjmpjiZNPE5MWFnkRko7cyAuBtFBIi4z0/LQwyK+vxFErOmZLftm8JU7dZY9mLXHy2502eYkz7XLr9K9Y3rZo12vpY67dsaXz1rzSyzG9+FjmocRpuMRJ2RNyxGIr/Aw/R4ESx9KGEidlN8z7FFOjxAH6J1DiNIUSx4k3fV/ToRJHyxquXr1qv1Qq1C1xxqarl83hgXJ++qd/+vGBAwf+hZ2H1aPEAXqmjSWOpKM6YtLCIp+PflbBog3/OuZKej0llinefJV8Ocqm85IuV50SZ9Zlj2YtcUTzmrbI0fS63jzLrZ/zyyclv8+Ynve4KpQ4LSpxgAwljqVtJQ4wC0ocoH8CJU5TKHGceNP3NR0qcQYHDx68W+u4ODVLnLHdqNWMSpwHDx6EQ4cOPbbTly1YPUocoGfaWuKoGJg04kWmKVriqJGy0Sj5cuTLmUbX/2JyOl2uvKwoKyNmWfZonhJHVLx8w5LeRlm0WzVNH82z3HWvq0II8/MeW4UShxIH7UWJY6HEQRdQ4gD9EyhxmkKJ48Sbvq/pUoljVJiE27dv2y+WCWqVODfC1sg09aMS58KFC/H0SQtWjxIH6Jm2ljiSFy5eYaHdnGn3XHEa/fyKRSVQWnaku+fSrrvSEkO3od175VRepMeG0XSx1EjLmllKHJll2WXeEifS46v7ky6D8tsWLcdRi2fW5Zb4mOa3GR/bfBdsmF36+KahxKHEQXtR4lgocdAFlDhA/wRKnKZQ4jjxpu9rOlbiHN3Y2Pj+mTNn7BfLBHVKnBl3paZ87P/y38ZROLctaAYlDtAzqy5xAKyG975WKHEocdBelDgWShx0ASUO0D+BEqcplDhOvOn7mo6VOHLFUj0aZ4mSUThntEBoBCUO0DOUOEA3ee9rhRKHEgftRYljocRBF1DiAP0TKHGaQonjxJu+r+lgiVOMxtGxcR4+fGi/YFbr3r17jMJpB0ocoGcocYBu8t7XCiUOJQ7aixLHQomDLqDEAfonUOI0hRLHiTd9X9PBEkcuWsL58+ftF8zqPHjwILzwwguPDhw48D27/ePFkqAplDhAz1DiAN3kva8VShxKHLQXJY6FEgddQIkD9E+gxGkKJY4Tb/q+pqMljuxYwpUrV+yXzGp88pOf1AgcPW7sRq15lDhAz1DiAN3kva8VShxKHLQXJY6FEgddQIkD9E+gxGkKJY4Tb/q+psMlzuGNjY1/Zv+Ga9eu2S+a5dFu286ePRsfs8u6cTSOEgfoGUocoJu897VCiUOJg/aixLFQ4qALKHGA/gmUOE2hxHHiTd/XdLjEkSMbGxu/Y/+Gixcv2i+bxdMu1F588cU4AueqbhStQIkD9AwlDtBN3vtaocShxEF7lZY4O3/bX0HvYihx0AWUOED/BEqcplDiOPGm72s6XuLIYctNSzhz5ky4f/++/dJZjN3d3fD888/HAueCBe1w0nLbkr+eFZ2vywF0DCUO0E3e+1qhxKHEQXuVljiKyo17r/sr6l0KJQ66gBKn8FOW1yy/b7G7v5/ftrxiOWqp432WlyzFBqokmq/O02WaxvNjlm9Z0utV5Vctk8RlSe+XftZ91X1GPx37y4O//OVLg0tBOTU4VeTM4Exx+gODD2zbNGct2tiKxaLEceJN39f0oMSJNEomHDp06PGFCxeKETSzun37djh9+nTxGG1sbHzX/uUYOM3Tc6BtuPoumb+OvWg6Tc9zB3QEJQ7QTd77WqHEocRBe+kvprz37Ui6XuZQ4qALel7iqFBRoWF3uTKfsUyijd55CeRF02ja3CJLHBU037B410mj+15WKqFbtPH3QtyVUZojR46EkydPjpynHDhw4Hv2rw5GTqGzOJQ4Trzp+5oelThywlL80cOzzz77+Ny5c+H69evDamYyjeC5evVqOHXqVPHYDH9fXbEcsaAZ+oOXaYqbssRCh1GhwBqjxAG6yXtfK5Q4lDhoL23MeWjx3rtjOf+XBuH+r/sr7uscShx0Qc9LHJUgdndr51MWjwoeb/pJyUuhRZU4WkZv2rJ8zUKR013aoHllY2Pj+/Zv+NEf/dEn58+fDzdv3iz9y/d79+4VBx7Xro50HcWu/679e86C+VDiOPGm72t6VuJEGuG//95QoaNyRr+rLl26NJKzZ8+OlM4HDhz4/9i/2lZYd8QsFk+fM5cttdcNa0bzo5gD1hQlDtBN3vtaocShxEG7lX0uuzl8aBAu/Hy3yhxKHHRBj0scjVZJR85o5MoLlkjFxiVLvFzxCo9pS5M0aSm0iBInv091U7VbNqynVw8ePPgH9m+xqyEdL2JaKnpU6MTjTBw4cOBf2L+nNXPMhBLHiTd9X9PTEidSEXPeotE5+i7tPQbh5E/sfQf/z/5Pg//BTqNZGqk578ibqmj+3ghmAC3WlhJnlhUspewv9/ouX/Hlceqf9PlPQ4lDiYN202icYn/W06RLZQ4lDrqgxyVO+h1UxUfZMWLS0TpaB9C6QKRCR8VOvDzm85b0r4L1s46tkxcsaSmUr2NMW6x4y6Lb0+2mxZO3q7X8fmG96fP5uqX4i/VZyhvPlStXwnPPPcdBw+dDiePEm76v6XmJ4/qnvzJ4684/Gn/dPH6zeD+hORct3ut0WdGoHABrghKnmyhxkD7/aShxKHGwHrQ/62Jj0TQ58r5BuHRuEB78xvhK2bqEEgdd0OMSJ98FmkqTfJRNlfx77KQySLyRMvG777wlTj7vScviFT5Vx/zBejgaj3tz8eLFYf2yOBqZ8+KLL8Yihw1q06PEceJN39dQ4oxTWeO9bihxGqM/FJhqjwwLjNY5OUYbsAYocbqJEgfp85+GEocSB+tlZH/WdbPOZQ4lDrqAkTgjUfGRj6KZJB2lo9QpQrzySOYtcfL5Vi2LCp63Lb8y/Bnr78jGxsY79m9xwO9lefjwYXFcCt2ORevoqI8Sx4k3fV9DiTOOEqd1av/x3uHDh4vPCx3P6Pr168XI0Bgdmy0e50jTedcviXa3B6DlKHG6iRIH6fOfhhKHEgfraeYy5/LWIDz8zfGVtLaGEgdd0OMSxxuNkka7HHvJUia/ftUonCgfMRN3qTbtOkZe0qSFUt1lQXcc3tjY+Lr9W2wYW4Vz587F15t2qYN6KHGceNP3NZQ44yhxWqXWLtROnDgRdnZ2itK/Dk2n6XU9b35OGAkKtFxbS5w6f3GHcpQ4SJ//NJQ4lDhYbypzblu893dpjv7wIFz55fUocyhx0AU9LnEkL1S86PL8uDKSlzhaP9B6QpV8XWIRJc6sy4LuKI5Rp+PWlLmxlb5+tsKN4fm+u+Huja2wuZleZ9NO2/Xu3i2m0Ea3U6dOxcvPWFCNEseJN31fQ4kzjhKnNbRu570u93P06NFw7dq14jNiVipzNB9v/ln43AFarEslTl5c5Cta+W2kl+eXaV4vWDSkMJ6nlU3tCiJf2RT9RWE6bZxe53l/sefdnuar+acrvbq+lsMzafo6JY53fe3+wVuhlnSeWnbdzmvJefrLyrJlxerF5yUPJQ4lDrpBX7A7WeZQ4qALel7iiL4T5gf696Lvoel3ZX0HXUSJE6+Xn18VShxE5y3FLmlK3d0Om09fH5ZJJc6NsDVS3oxnc2vv2jpGzvPPP/94Y2Pju3Z+3d0Q9hkljhNv+r6GEmccJU4r6Pe7vhd6r8siGkVz79694rNhXvpsOXnypHs7SR5aevmeANZB10biTNqHdn5ZWmzkt/9FS1pupNF0aVmhIsSbLs1ZSyq/vc9Zym5PyUuYSX/hqPO1/Ol501xf0Up3vpKalzhvJKfjeazYtkf63KShxKHEQbfMVOYcOzoI1y6Or7i1IZQ46AJKnH35H/14Sb9DLqrEYSQO5qHdqL37oz/6o09Kd1szVuAoZSXO3bBdUeDEbG7vjci5fft2PI/d21SjxHHiTd/XUOKMo8RphWK0Z1k0KlPHvLl8+XJxnBtFI0PnKXWy46+VRcfnAdBC63xMHO/ApPl8VFSosEgLCO+6095+XDFM5xtvS7TCms4vX+mb9fYkX6Gsk7TEqXvb6W1K/hjmmbV4w3J4z5FCiUOJg246Z9Fnt/e+L00byxxKHHQBJY5L34/L/nApfo/Mv+em368nyf9AKX6Pzb/3eusPk6R/BFZ3WbD+LlhKdqN2N9zY3oyviSx+iXO3dHovm2HY44QzZ86EjY2N79v5jMaZjBLHiTd9X0OJM44Sp3EnLN7rsVY0Qufq1au1j4+T0+eLN98kWj4ALdO1EkfyskEjRtLdOeSFini3r5W/OOJG/+a7hNDtpCt2eYmh0/GyfKWv6vbyFdH0+vn9S3djppVVb2RQWuKky6ykK835ddPr5ber5COM0B75cxVDiUOJg26bucy5/h+Nr8g1EUocdAElTiV9h7SHZD/p9/r8u2rZd/5U+r07vc68JU4+3/z7fk7f17V7Yo0++oTOwPrxR+F4x7PJ45U4ziicrRt27vBSm+fIZRZG40yNEseJN31fQ4kzjhKncRrt4r0ep8rx48fDnTt3is+MaejzTdf15jkMrwOghbpY4ki+8pcmLSai/Pb1s85L5cVK1UrgNCWOd3tl10/vWz7fKL//8T7nt5vfh/yvH9PL8xIn/oUj2il9rtJQ4lDioB+0L//7Fu/3QGlO/MnmyxxKHHRBT0ucqu+Zqfw7Z/q90vvDIe/7e5R/R0+nn2aZPPm8y757R/l38KrSB+1z0lL8hXPqxtbI81oSr8S5EbYqphmb9/DYOKK/lj548ODv2vkoR4njxJu+r6HEGUeJ06i5RuHkOXLkSLh169bwU6M+lT+HDx925znMKQuAFulqiVM2v7Lr1FnBm7SyGWmo+0uWfN/f+QpffnvevLwSp84ySL7yG1dk8xVRb8UyvV0to5ZV8nmyUtpu6XOVhhKHEgf9cdiiXcKsVZlDiYMu6GmJk39PnVR4TPrunc8nRiPG091K6WdvBHr6/bjOd/xJvGXR/XrFkn4H1/3MR+1Puv9oL31XLg4AnRorWja3wo2x4+L4I3FubG+Hra3NvVE8SUET5btbiyNx5Nq1/Y3PKpfgo8Rx4k3f11DijKPEadRli/danDkqY2Ypci5cuODObxhtLwbQIm0tcRZREOSlw6wrkimdH6eJBYd2ZVZ1wNb8tuvcXrr88fp1l1PT6jpxulji5I9JVeJ9lPy6cZ5op/S5SkOJQ4mD/pm5zDl1YhB2t8dX8JYZShx0QU9LHEn/GEjR91H9gVNKuxnzdlOcmvY7a5p0XnW/O0+Sf6+um1luCw07dOjQN3Uw6dzTEmczbG0Pd4dWq8SpMr67tbTnUZk0PL/X3+ErUOI48abvayhxxlHiNOqOxXstzpVjx45NfYyc+/fvTxqNo3VHAC3S5RInX4mcNN+6K3g6P06j6T+dnI65adHK6qXkPEocrFr6XKWhxKHEQX8dseh3gDYie78fSrPKMocSB13waDD4PXvReiXO7w0n6aqyUTSTko6cSXnf5auSf9ev+925Sn4Mn6qopIrfobE+jlvClStXhpu3nrqhkTTJsWwKc5c4d4v5Pr2+ZXN79DbMT//0Tz/e2Nj4HbscPkocJ970fQ0lzjhKnMbo9ea9DhcS7/Oryvnz5915DcMoUKBFulrilP3FXF6mRPnteyuT+UqpDlqa3kZ+nXTFM7/dOiuUXomTL0PZSm9Z4VJW7tRRNk+0U/pcpaHEocQB5ipzbv/D8RW+RYYSB13waDC4ay9ar8S5O5yky/Lvq5NS9l02UnmSfncti6bRtLlFlTiiP9KqsyxV9wntpf3/h+vXrw83bVWYucQZH31TxClw5Ny5c+HAgQPfs2ngo8Rx4k3f11DijKPEaYz2juC9Dt0cP3487OzshN3d3SLa/dmk49gcPXp06tE4mq83r2EYBQq0SBdLnKoVR2/FKr/9WJqk8gIkL3HyUmMZJY5oWu/8VDqNEpdtnhVZSpz1kj5XaShxKHGASGWO9sn80OL9vijNmT+zvDKHEgdd8Hgw0BqxV+J8fThJH+g7qnY5rO/Mdvf3o9M63/sO69H3dhUoGu2efvdW4gj4stJkkSWOpMuSLoeWa5r7hHY6Z6l/XIGZS5wbYWvkepbiGDvDizMXL16M0+lzG+MocZx40/c1lDjjKHEaU7YNdiynT58efgqM0mfUkSNH3OsoN2/eHE5Zj0qfCfPT9x0ALdHWEqduvBWxtDxR9Fd5eamRl0Te7Ws3CDrejejfvBj6nCVdkUznmRdJedkyT4mTlynpcup2vQO8poVL/lhot29xxVcrpXHFOl8hpsRZL+lzlYYShxIHyOng4FcsrShzKHHQBWUljs4fTgKgfS5awr1794abtirMWuKMXe9pxnbZZrR7nOHlvdzYXAMljhNv+r6GEmccJU5j3N9XeTSiRsdEK5N8Lozl0iX7vVBTHN0zocS5ZQHQEl0rcVR0pMVKHHWTz7+qVKmK5qviJL2OftZ5dYqUeUoczT8vlKqS3nb+GE1KWkxR4qyX9LlKQ4lDiQOUmbnMUfFy7/XxFcFZQomDLqDEAdaSRqcON23VMMcxcfaLmrs3xnettjU6l2vX9jdAa3dvGEeJ48Sbvq+hxBlHidOYOxbvdTgSHadmkkmjZ7QLzjomFUFJWP8CWqRLJU5ebuRFTV5CxIJH8tv/NUtZUaLpNL3ko34mJS1E5ilxRNfXCJx4eZ7XLen888JFp6uKnPTxkfzxy+eJdkmfqzSUOJQ4QBWtzNYe6p9mEWUOJQ66gBIHWEv6nhzu378/3MRVYY4SZ1S+e7XNsJ0Mx7l69Wq87IQF4yhxnHjT9zWUOOMocRpz3+K9DkdS59hsJ0+edK979uzZ4RTlVAJNOrZOFgAt0aUSJy9U8mLEG8ESixWvVNH0GlETyw79q9NpsSHaXVu6r2/9/IpF02k+8fxJpdG0JY5oXrqdtIyJ+wXP5+8VLvqLa92fdNk1rziPHCXOekmfqzSUOJQ4QF0zlznn/9Ig3P/18RXDOqHEQRdQ4gBrqTgmzu3bt4ebuSosrMQJ4cZWOp9B2ExaHO0aZ3i+1t8wjhLHiTd9X0OJM44SpzHea3As2s1ZlVOnTrnX1flVdFwd77olAdASbSlxmlanVAHWSfp+TkOJQ4kDTEsrt9ct3u+U0hw+NAgXfn76MocSB11AiQOspTOW+geFrlHi3N3eCltbm2Fz06Jpsl2lRZNKHO1WZ3g+fJQ4Trzp+xpKnHGUOI2ptdvqO3fuDD8Bys1T4uzs7LjXLQmAlqDE2UOJg65J389pKHEocYBZaTcuSy9zKHHQBZQ4wFo6aSl2X1ZLrRJnM7ncn2Z8d2qjJc6ZM2fCwYMH/6WdDx8ljhNv+r6GEmccJU5jtD7jvQ73c/r06eFv/8n02eBdX8fKqZLsprMq2v0bgJagxNlDiYOuSd/PaShxKHGAec1U5hx53yBcOjcID35jfIUxDSUOuoASB1hP73nPe36vzvEECnV2pzY2jWVzO9yIHc3dG2F7M7s8OSaOjlvwvve97w/tfK23w0eJ48Sbvq+hxBlHidMY9/eVcvTo0WLk5YMHD/Y+ACpcuHDBnY9StTu2EydOuNdzcscCoCUocfZQ4qBr0vdzGkocShxgUU5ZSldEylJV5lDioAsocYC1de2ZZ555pPKkUq1j4tx1SpqKbG7btfZoQ9zw/NMW+NzvIpQ4/nX6GEqccZQ4jdmxjL0O64yeySWfD2M5fvx4aRk0xSgchdcD0CKUOHsocdA16fs5DSUOJQ6waDOXOZe3BuHhb46uPFLioAsocYC1VRwXp85BpeuVOMYbjVOa0Xnor7IPHDjwPbvssAU+9zsIJY5/nT6GEmccJU5jtD3Gex3W+9xJ6I8NVP5481JU5Fy/fn04dSiOszNp9E5JrlgAtAQlDtBN3vtaocShxAGWRWXObYv3u6c0R394EK788tMyhxIHXUCJA6ytwxsbG9/XsQYq1S1xxKbdqhqRs2nXf3oonHD//v1w6NAh+7VR/OU2ylHiOPGm72soccZR4jRG60ve6zBcvHhx+Nu/vnPnzrnzWmAYBQq0CCUO0E3e+1qhxKHEAZZNf8U8c5lz9mf8yy18N8HaoMQB1pr+8jjcvn17uJmsxDQlTuFuuLG9FTazMmdzcytsp+3NUPIX0zoWHcpR4jjxpu9rKHHGUeI06oFl7LWoY+LU2pVnQmX/4cOHx+a1oDy0MAoUaJG+lThqvS9aThangO7y3tcKJQ4lDrAqM5U5E0KJg7VBiQOstaPahdlHPvKRx8PtZCunAsmWQ7leLBEmocRx4k3f11DijKPEaVTZdthw6ZK9p6d08+ZNd14LCJ8/QMv0pcRRe3zTkt7HWxbKHHRV+lpPQ4lDiQOs2jmLvld4v5OmCSUO1kZHS5yfsvy+xe7KSHRcSR1fssxnLPl1lE9Zlk23sazb1DE043yrHgOsn2I0zpUrV4abyVbrk5/8pP26KF5bjMKpRonjxJu+r6HEGUeJ0yjtosx7LRajajS6Zlr6rPLmN2fOWgC0SF9KnNKDh1muWo5YgC7xXusKJQ4lDtCUecscShysjZ6VOEpZOfI+y9cs01xnkShxMCsdG+ef2b9TH2x6Xslu1Hr9vX0KlDhOvOn7GkqccZQ4jSvdW8GpU6eGnwbTuXr16iJ3rab1LnalBrRMX0oc94tdEu2T8oIF6Arvda5Q4lDiAE07b7lv8X5HTQolDtZGD0scjbbxzFL8LBIlDuZx9ODBg7/77LPPPr53795wM9lyaSOc3a7Cbmzqo8Rx4k3f11DijKPEaZx2O+29HouozJ+FRvGcP3/eneeU0fIBaJm+lDi6P979zKM2nF2soQu817dCiUOJA7SB/rJLfzwxTZlDiYO10cMSR6NtNOomV7YrNYUSB+vgxMbGxvefe+65xzpOzTLFAsdu73fsX/4Cuj5KHCfe9H0NJc44SpxWcH93xcyzO0/94YGur0JHI3tidMydZLRnWbRdFEALUeL40eNy1AKsK+91rVDiUOIAbTJNmXPHAqyFHpY4Ol+X52LR8bYlvy4lDtbFqY2Nje++973vfaIDSC9DslFNx21lV9/TocRx4k3f11DijKPEaQUd88x7Te7n3Llz4eHDh8NPivnVKHCUUxYALUSJUx52sYZ15r2mFUocShygjbTBSr+f9Nnr/e5SdAw7YC30pMRRcfFGcjrfpZpKDU2jy/5e8nNMWqi8YHnNks5fP+s8XTaJRgB93pJe96ZF15tU4qTLp6iUyU0qaiZd5i2TiqxXLN6IJbTf8Y2NjXfs33Dx4sXw4MGD4Sax+Wh0z+nTp+NrRLtQYwTO9ChxnHjT9zWUOOMocVpD2xy91+V+Tp48WXxWzOPOnTvpZ82kXLYAaClKnOqwizWsI++1rFDiUOIAbVZW5uhzvJcr2VhPPSlxtAu1s9nptKBIC5RPW8pKnEm7XIuZ5Zg7Ov+L2XmrKHEmLZPyDUs6H6wPfUYVhYGOk3P58uWZ/0Jau7rRX1hrXgcOHPie/cuGs9lR4jjxpu9rKHHGUeK0igp877U5krNnzxafHdOY8hg5PPdAy1Hi1M+OhV2sYV14r2GFEocSB1gH2lB20aKVGv3e4vMXa6VHJc4nkvP0r6aJYsmh81+yeCVOnQInJi9yVBhpGbxpy7LsEiefZ1nKjiGE9aBdzegP/YJ2saYNazs7O5WFTjxGwYkTJ9LXgtbH+SOF+VDiOPGm72soccZR4rSKRmBqt9He63MsOraNjqG2u7s7NipUn0M6X5drOu/6JdE2U3bl2RPpX1nFlP21VGrSl2KsRq9LnGcGx8LBweGx8ydEfxmsjUpA23mvX4UShxIHALBkPSpxVLCmRUosSdIyQ5dr12Z5ufE5Szo//ayRPZF+zi9PS6J8HVQjXOKu1+LuzNLLlWWXOOl5Slwn9pYnXRasJ71GR/6C+sRHThQbzs6cOVPsdi0eTPoDH/jAozjNxsbGu/avdhGq4yFgfpQ4Trzp+xpKnHGUOK2j12HxxwENRNtL+WOCHsm/rCp1/rpo0pdirEavS5wfH5wL/5vBvfDBQa19Q6ZRS87BvtBm3utWocShxAEALFmPShyt76XrdPpZ0ml1nqZLy548eUET5bcZ5y/p7ZZdP51GWWaJo9ufNL/8MfBuD+tJf7187icGP/H/PDU4FRQ7XeTI4Ehx+gcHP3jLTl+xsA65eJQ4Trzp+xpKnHGUOK2kzxId0897nS4r+mxiBE6P5F9+Y8q+SKcmfSnGavS+xNmyzyrlZwc3i5E53nQTwi7W0Fbe61WhxKHEAQAsWc9KnHRETFynS3eTpsurSpw4r1x+vThd2fm5dNmUZZY42mVc+vh4e6ZIHxfWfzsmDMI5i73X3fBXzstDiePEm76vocQZR4nTair8vdfqoqMRodqVG3ok/2Kchr8uaj9KHPusivmlwcPw0cEldrGGLvBeqwolDiUOAGDJelLixHW9/HztYioWLPEP+/LSJc+k9UavSKlTwEi+bMsscT6dnK6TfH5Yc4ESpymUOE686fsaSpxxlDitp91tLmtUjp7jkxb0UPrlVfshfiM5zRfT9qPEsc+qPHPsYu20BWgD7zWqUOJQ4gAAlqxnJU5e0Gh9ME4XR8hQ4ownnx/WXKDEaQoljhNv+r6GEmccJc7a0C44F3WsHM3njAU9lX8p1vDwSUPWc2VfitN56HwdoPK15Lz0oJWYDyWOfVaVZcZdrOngluxiDU3zXpsKJQ4lDgBgyXpW4ki6XpcmTlNV4sSyJ5dfr6wUKrv+pHXTqhInv428dMnXZfPdqU1aD0YHBUqcplDiOPGm72soccZR4qwdjczRbtbcbZsToul1PV0fPZfu01dfWPXFvurLcCr/4ltW4qSje/JpMR9KHPusmpQZd7H20KJdrLF/STTFe10qlDiUOACAJethiZOXJTHpcWHSdb88cV0y5/3RYJTOr+z6+W1OKnHyIii/PF8Hzddldfvp9Onjgx4IlDhNocRx4k3f11DijKPEWWsqZLS9sazQ0fm6nOIG+yb99VOdL9SSf/H1Shwv6Zd3zIcSxz6r6oRdrGHNeK9HhRKHEgcAsGQ9LHHyy5R8PTBd91M+Z0mvo591PJ1IP+eXp/PL1xnTvTVovfTzlvRyJS1x8vVZJd6+5pNfVlXi6LL8Pl6yxHVkjdR526I9TOjneD46IlDiNIUSx4k3fV9DiTOOEqcT3N99Fp5DjMm/qKfFSv6Fuqx0mabESb/QY3EoceyzapqwizWsCe91qFDiUOIAAJasJyVOuo7nFSKTSg9F63z5eZOSr1N6t1mVtMQRzdObzkudEscrs8pSto6MNRUocZribsikxPGv08dQ4oyjxOkE93efhecQY9IvvPlfReVfqPWz95dGdUucsutjfpQ49lk1bebYxZo2oLOLNayC9xpUKHEocQAAS9bDEkfyQkanU/nlsVDxRsyk0W1+2uLR+qNG4HjXU163aD0zns5LHF0/vTyNbveLyek6JY7oNqqKHNZvOyhQ4jTF3ZBJieNfp4+hxBlHidMJ7u8+C88hRtQpafK/asq/MEvdEoe/UloeShz7rJo12sXascGZsflWRMvCLtawbN5rT6HEocQBACxZT0ucqnW4shJHtPsy7WZMuxuLl+u2dF7cRVoZrYe+YkmX7aZFuyzLSxpvnTTedpwmvd30PtUtcUQj8FVO5fcnLhc6KFDiNMXdkEmJ41+nj6HEGUeJ0wnu7z4LzyFG1ClZ8i/5+pKbq1vieF+2sRiUOPZZNW+0i7Ujg+Nj86+IVuL4Mo9l8V5zCiUOJQ4AYMk6WuIAmCBQ4jTF3ZBJieNfp4+hxBlHidMJ7u8+C88hRuR/RVUn+V8nCSVO8yhx7LNqEdEu1l4cXGYXa2gL7/WmUOJQ4gAAlowSB+ifQInTFHdDJiWOf50+hhJnHCVOJ7i/+yw8h9inokWFi/dCqcqkIfWUOM2gxLHPqkXmFwf32cUa2sB7nSmVJc7Htl8/+7EvfOX6x7/w5R3LQl+XL37h9ZMf3X792se/8PpuE/mFy5cf/If/t78e/qu/cXKhJU7T90vR7Ws5hou0EHr+914H/m2uIl29Xx/7ws7Vj/79//L4cJEW4ul717/NVaSr9+vjf/8rVz7+f//H2j3Swnx8+8vnP3rl9Zvu7a0qXb1fX9h59U9duX5kuEhz+7PXrh3+2JXXL/i35ed/+zf+zoPzf+1vhzw635u+VrZ3LmpZhos1t1nu1zKiZVjk/dJzr9eAd1t59LtFv2OGVwXmEihxmkKJ48Sbvq+hxBlHidMJlDiolBcs0yQ/dg4lTvMoceyzahmZYxdrC934hd7yXl/KxBLn41f+8YmPf+H1MBI7b3jxXLSh8E9fef3h2Pwbym//tWMLKXH0+LTlfhXLsaANsu5roaHofi1qA58KBu82msifvvJf3l/U/WrT8/XRL7y+sO8Qe4Wbfzsrz5XX7yzq+Xrxyutn3NtoIH/6Czu3h4s1NxU43m00lIWtwA6LDu82Vp+//5Urw8Wa28e+8Ppl9zYayc7CRgoX5aR7G+XRe3J4dWBmgRKnKe6GTEoc/zp9DCXOOEqcTnB/91l4DrEvLV50zBsd+6aMChsVN2XTU+I0jxLHPquWlTl2sXbZsrC/SEQvea8tZeJGkuFokmzjxmI2rLRs4174e3/rFxZT4mzvXPTm31iu7JwbLtpc2rVx7/WwqL+UHv51tnsbTeSjV3ZODRdtLv57t7ksavRUV++XzUujANzbaCL/yys7C9mAYfNq1f1aVKmtYtKdfwNZZEnapvulknS4WHNR0TrbH1Z8eWc4C2BmgRKnKZQ4Trzp+xpKnHGUOJ1AiYOJ8l2p5SNrPHkho+ImosRpHiWOfVYtOzPuYu2+hb8KxKy815QysZDx/zp8MbtUa9NIAeW/fuVPLabEadNIAcuidmXVppECRRa1MfbKzil3/g1EGxoXtcundj1fOw8WN8Jo55x/G01k58Ginq82jexY6IiwFpWkCx0RNsPIjuVlcWVDm0pS7YpxuFhzG+5+0b2dCWGDB+YWKHGa4m7IpMTxr9PHUOKMo8TpBPd3n4XnEAUd0yZ9YeTHuPHkxU9a1lDiNI8Sxz6rVpUZd7Gm5wiYlvdaUipH1WhDijZWasOeRmMMz14Ibbhs+i9/P/n5L4b/69/+q2mBM1eJI224X7p9LcdwkRZCz79eB97trSpdvV/6q/NFH4chvnfd21tVFny/VC604X5pl2OLGjUlul/aGN/0rhgXfb/2jkXS/P2y7C5qV6CiEnnGYmCh0bGGFjVqSjSvNtwvLcMi79dwt5nTjgpjgwfmFihxmuJuyKTE8a/Tx1DijKPE6QT3d5+F5xCVu0abJC1rlFjKUOI0jxLHPqtWmRl3sXbeAkzDex0pE0ucuMF0bwPcl3cWNfqhLVTWZOXNQkocAABSj20F2j50Qx6dP5wEDVJpQ4mDRQuUOE1xN2T2vcTZ+oVdMszZ038znDoxCH/uY4Nw4ecH4dN/YVCcVv7prwzOht3Bqb7l0ZuD297rhhJnrbi/+yw8h0BHUeLYZ1UTmXIXa9ctwDS815EyscTJd1206JE4TVNZk5U3lDgAgIWjxGk3lTbp9x2dHl4EzCxQ4jTF3ZDZ9xKHkFlCibNW3N99Fp5DoKMoceyzqsnU3MUav4QxLe91pEwscbSrli5v1FBZk5U3lDgAgIWjxGk3fb/p8vcdNCNQ4jRF71/7FTsaShxCpg8lzlpxf/dZeA6BjqLEsc+qplNjF2v8Esa0vNeRMnkkTsc3aqisycobShwAwMJR4rRb17/voBmBEqcpev/ar9jRUOIQMn0ocdaK+7vPwnMIdBQljn1WtSVaHm85LfwSxrS815FCiUOJAwBYMkqcduv69x00I1DiNEXvX/sVO5o+lDiff+WKuyGekFnz+M3BTXv/YD24v/ssfKfBtMLRweDJ+b3whaXFKHHss6otocTBAnmvI4UShxIHALBklDjt1vXvO2hGoMRpit6/9it2NH0ocf69n70Tvv+1w+7GeEJmyZPdwQV7/2A9uL/7LHynwTTCqcHg0QP71148in5+cnp4IdqFEsdeo21JC0ucI5Zzlokb/tFK3utIocShxAEALBklTrt1/fsOmhEocZqi96/9ih1NH0oc5e/88lWKHLKQPH6z2D6I9eH+7rPwnQbTeHTPXjf2wknz6L79e3g4AdqDEsden21JS0ocvU/PWnYsDy2rvn0sRv4aiqHEocQBACwZJU67df37DpoRKHGaovev/YodTV9KHOUv/rv3wtYv7JKSnD39N8OpE4Pwc58YhAs/v5c/97FBcd4//ZXB2bA7OEUGJ+x9g/Xi/u6z8J0GdenLiX1H8cMvhfahxLHXZlvScIlzxpIWN6u+fSxW/hzGUOJQ4gAAlowSp926/n0HzQiUOE3R+9d+xY6mTyUOmZxjx66NvT6S8N7EunJ/91n4ToO6tCs1+47ixy5Dy1Di2GuzLWmgxFFxo9fAA4t3uzF8CKwf73lUKHEocQAAS0aJ025d/76DZgRKnKbo/Wu/YkdDiUNiKHHQUe7vPgvfaVAXJc6aocSx12ZbsqISR+/Dq5aq4iYNHwLrx3seFUocShwAwJJR4rRb17/voBmBEqcpev/ar9jRUOKQGEocdJT7u8/CdxrURYmzZihx7LXZliyxxDlpUXFz3+LNvyp8CKwf73lUKHEocQAAS0aJ025d/76DZgRKnKbo/Wu/YkdDiUNiKHHQUe7vPgvfaVAXJc6aocSx12ZbsuASR8egumJx7/uU4UNg/XjPo0KJQ4kDAFgySpx26/r3HTQjUOI0Re9f+xU7GkocEkOJg45yf/dZ+E6DuihxajpuuWjRBtUmc9tiz81YtKstb/p1jbvrsA6WOHpdXbYsorhJw4fA+vGeR0Xvh1Jd36ihsiYrbyhxAAALR4nTbl3/voNmBEqcpuj9a79iR0OJQ2IocdBR7u8+C99pUBclTg0XLPZ4kKbTkRJHxY02zN+xeNddRPgQWD/e86hQ4lDiAACWjBKn3br+fQfNCJQ4TdH7137FjoYSh8RQ4qCj3N99Fr7ToC5KnAra4P7QYo8HaTpHB3/GLVOayhQljr5oqAwsG0nV1aioOm1BNe/xUyhxKHEAAEtGidNuXf++g2YESpym6P1rv2JHQ4lDYihxWk3Hb9Z72N17DiEti7ZJ7liOWrqAEqfCOYs9FqQN+aHBh90ypalUlDj6JdHH4saLPugxmfe4KZQ4lDgAgCWjxGm3rn/fQTMCJU5T9P61X7GjocQhMZQ4raVtxN5zQkjbc9/ShSKHEqeCNqDaY0HakH9r8BNumdJUJpQ4/FXCaK5aMJn3uCmUOJQ4AIAlo8Rpt65/30EzAiVOUyhxyMRQ4rTWLYv3nBCyDpm4bW1NUOJUoMRpUZ4f/AW3TGkqE0ocMhpWtKt5j5tCiUOJAwBYMkqcduv69x00I1DiNEXvX/sVOxpKHBJDidNa/LEyWedcs6w7SpwKlDgtikoTr0xpKhNKHO1CTaNP+JDbCyva1bzHTaHEocQBACwZJU67df37DpoRKHGaovev/YodDSUOiaHEaS3v+SBkXUKJ0wOTShw9Pk3mrzjndSXaX+HYY75GJU66YnnGol8WfS50WNGu5j1uCiUOJQ4AYMkocdrt41/48s7o950v6yC1wFwCJU5T9HvVfsWOhhKHxFDitJb3fBCyLqHE6YFJJQ6W555l7DFf0xInpUJHK50PLd71FhU9fnrtrjru82ZhA0g173FT9LiWUmkzulGDEgcAgGlR4rTbR6/snBr9vvPl08OLgJkFSpym6Peq/YodDSUOiaHEaS3v+Qg/9L4fCc8f/XFSI/+z5/5E+KN/5Nlw+NAPhvf94A8Vp73pyOx5z8EfcF+nFkqcHtAGVHss3GB5ulriRIctZy3LKnSa2uDgfiG3sAGkmve4KZQ4lDgAgCWjxGm/j1/5xyc+/oWdV/Xv8CxgLoESpynuOiMlDomhxGkt7/kI/86f+gvhb/6Vq4S0IioVvdephRKnByhxmtH1Eid1xHLOct3izWuWNLXBwf1CbmEDSDXvcVMocShxAABLRokD9E+gxGmKu85IiUNiKHFay3s+KHFIq0KJ02+UOM3oU4mTioXOTYs337ppaoOD+4XcwgaQat7jplDiUOIAAJaMEgfon0CJ0xR3nZESh8RQ4rSW93xQ4pBWhRKn3yhxmtHXEid11HLe4n7JrUhTGxzKlrWp5Vkn3uOmUOJQ4gAAlowSB+ifQInTFHedkRKHxFDitJb3fFDikFaFEqffKHGaQYkzSoXOBctti3d7eZra4OB+IbewAaSa97gplDiUOACAJaPEAfonUOI0xV1npMQhMZQ4reU9H5Q4pFWhxOk3SpxmUOKU05eWqkKnqQ0O7hdyCxtAqnmPm0KJQ4kDAFgyShygfwIlTlPcdUZKHBJDidNa3vNBiUNaFUqcfqPEaQYlTj3HLXqN3rE0cfs59wu5hQ0g1bzHTelTiRN3Iaj7rONC7f74D21898U/fjAoP/fhHwi//LFD4T/983+EEgcAsFCUOED/BEqcprjrjJQ4JIYSp7W854MSh7QqlDj9RonTDEqc6anQuWzRY9fUBgf3C7mFDSDVvMdN6XqJc9jiHvvp1KlT+zl+/PjIZX/00MFH9q8+hE9bAACYCyUO0D+BEqcp7jojJQ6JocRpLe/5oMQhrQolTr9R4jSDEmc+TX2xcb+QW9gAUs173JQulzgXDh48+K/t3/BDP/RDT86dOxeuX79ua83l7t+/H65evVoUO7reMLcsfF4BAGZGiQP0T6DEaYq7zkiJQ2IocVrLez4ocUirQonTb5Q4zaDEWU/uF3ILG0CqeY+b0sUS59TGxsY79m/48Ic//GRnZ8fWlKenQufSpUvh2Weffax5Wa5btEs2rJZWpPR9gRBCVpGloMQB+idQ4jTFXWekxCExlDit5T0flDikVaHE6TdKnGasRYlzbHBmbBmH6esKv/uF3MIGkGre46Z0rcTRrtPCc88991gjahZBZc6FCxfCoUOHHg/LoRPFLWHZVJjp2EXe65YQQpaVB5ZzloWixAH6J1DiNMVdZ6TEITGUOK3lPR+dKXG2P/tG+K23vhPetY+A1Lvf/k745lffsMv9643E5vHNb78VdrzLyEpCidNvlDjNaHWJ84uD++GDg9Njy5ekryv87hdyCxtAqnmPm9KlEkfHbAonTpwoipdFu3nzZjEq5+DBg39gt8OxcpZLxzK6Y/Fes4QQsoostMihxAH6J1DiNMVdZ6TEITGUOK3lPR8dKHG+UpQ3dbz71a8417cMC6A936LEaTBdLXGOWE4NBn/tgt0PuzOXhrlu0TpMsR5DiUOJ05TWljin7P1yaHBkbNmy9HWF3/1CbmEDSDXvcVMqSpwv76QlzkevvK6REW10xRLOnDkTHj58OPxys3i3b98Ozz//vEbkfN9uj8+w5bHvDu7rlRBCVpX7loWhxAH6J1DiNIUSh0wMJU5rec/H2pc4O2/Z7/wpfPNq1TwocZpMl0ocFTf6qzUdN8C7QyPZ2Dj0/7N/dSfPWPqKEqcZrStxaoy+SaMN1n1EiTM773FTqkqc02mJ87Err2vjetsUu1BTgbMK9+7dK3bXtrGx8V27Xb7kL8eOxXu9EkLIKnPcshCUOED/BEqcpqx1ifN1e3nssxPeNDGXRia20840K83LtsjvtGA5KkKJ01re87HeJc5n3xrdfdq3vxV2Rnab9pWw89VslM633wrb6TwslDjtSRdKHJU3lw8cOPA9+ze8973vfXL27Nlw5cqVsLu7W0S7ttGGr3haB4s+derU/p3d2Nh41/5t48bBZaPEaUarSpyfHdwMPzg4OrY8JdFfhvb1iwUlzuy8x02ZWOLIx7ZfP6sROB/f/vL5P3vtmnZz1SanNCrmIx/5yOOyETg37E1m0w2zFW4Mz6/Lu/6tW7fiMXJ+x85v22PSBWXvdUIIWWUWNuKSEgfon0CJ0xRKnFXn5RC+lCwLJQ5m5D0f613iXP3W8F0h3wm/VXLcm6qShhKnPVn3EufCwYMH/7X9W5QyOzs7U+3KRuWODj794Q9/+InmYfP6l/Zvn0bmUOI0oxUlzrnBg+I2vWUpiY4R0eeDqlPizM573JTKEqfFDusPADQqRn8k4Lq7HTZH7u+UJc6E6+uza3h+X0fGLRMlDiGkDaHEATCzQInTFEqcFad1I4IqQonTWt7zsdYlznY+yuatN8ZG2UzK2PVzNr+n038l7Lz1nWzkz3fCN786+Ta3r74VvmnTjbL5FKOGnGP0jBRTe4XS+Dzy2x1ftr35J/Ndk6xriXPkwIED/9T+LQoYHfB5Xtogpo1xmqelLxvFKHGa0XiJM+XoG0UHbe/7X/xT4szOe9yUdS5xiuOmXL9+ffgpkhkrYJQpSpwa19cu3DQSyC47asHiUOIQQtoQShwAMwuUOE2hxFlxKHGwIN7z0aGRONF3wrsqc2oUGLVLnHy3bTkVJtm8FRUrVb55NStyshLnm5PmUSzfG+Gb3x6eHlM+OqmtWccS59jGxsY/t3+LXaYt0oMHD8KFCxfiA6ADaGtXbV2ifWtrpJE2nCr/gyV90tNgeRorcX5p8DD8xOD82G1PiEbfnLSgfMMuG0CqeY+bsq4lTjEKR7tRG358JO6GG9ub3n211Clx6l//9u3b8TJG4ywWJQ4hpA2hxAEws0CJ0xRKnBWHEgcL4j0f613i/JWvhN8qLTDMt78VfisvSZLUK3HeCN8cnpwoP9ZO2a7ePpvPLyuA3GJqDs4xgNqcdStxThw8ePAPnn322cc6ts2yxN3UDMuidf8LZxU3rx44cOBf2L/5k+zG7rf+1UbBPu86a5kaKXHODG6FI4PjY7c7IVctHG/jKUqc2XmPm7KuJc55SzYK5264e2MrbG6693OYSSXObNdPRuN07Y8OmjSxxDl27FhxbD1Fp+PPnOY0pzld9/S5c7V2Z0uJA2BmgRKnKZQ4WTTdO8NpCnbi618K4WVn2pcv2WUjE+95x8679HI2rc1joorlbyqUOK3lPR9rXuJYqkbJFCbv9mzSMXFGLwvh3a/GUmhvF2apb171r/f0OnsZLY+y0TJOifNusuxu8ZTuOm3s8fBHCbU161TiHNXxb1Tg3LlzZ/hgL4920TY8cPQ/s9texw3ZKp+0Eb54Qj/0oQ890SgjlV/e46fjA+kyrVgePz6yoV8jklQEYXFWWuJo9M2JwcWx25uQ+5bTFoyixJmd97gpa1ni2OfC17Urz+Gvz8INe7PZRRUpL3Fmvf6tW7fi5ecsWIyJJY6OwQcA89B3bu/3SxZKnJ74s9euHf7YF3aufvQLr9/Tvzo9vAiYWaDEaQolTszLWXmTUzGTTJ/Pz/P1S0+np8TBgnnPx/qXOIpGt0wakbPP371YeYmTjZoZOUaOko0EGrvcz1Qlztg885E84/dp9P7497mtWZcSR7uuUZlSrPSsinbXptu0tPoAQRl96X91+JfZ4ezZs8Uud6alokelj4oszceiQoi/9F6MlZU4M4y+0Wud59lHiTM773FT1rHE0fujKLxTYyXM5la4MXZcmylKnCmu/4EPfOAP7fLrFixGZYmjf1Oc5nSK05xOeacpcZD6+JWdcx//wuthP9tf1ohfYC6BEqcp3SlxppSXOLXm9c5wRM7oqlX4Uhx1Y//m84m3Q4mDBfOej26UODGffSP8VuVxaMZHppSWONmolnxEjTJayEwY9fLZr4Ttq285yze5xElH9+wlK3Gc3aVNLIlannUpcYoRJdMdA8fbNc2mndaGsbvDaaoluztYhy/TR/QX4vZvsZFJf6E9r3v37hW769E8Dx48+C/tXz5U5reSEufFweVwcHB47HZK8sDC6JvJKHFm5z1uyjqWOBrxMvb79WkJsxm2tm/YJ5CZqcSZ/vrnz58PBw4c+J5Nw1/uLkZliQMA86DEQeqjV16/mZY4Oj28CJhZoMRpCiWOJR9V886Xyi/T6Jr0vHRaJS9r9gueYSpHBLUslDit5T0f3Spx0qjQ+eq33F2t5WVMaYkz9fFpshKnVqk0Z4njjP6hxFkuHZelKFPquxG2Jh5XYBA2t8o2pY16+PBh0MGrNzY23rXrtXkD2bGDBw/e1cgZHdNn0bSyqV3Z6ZhEdlsLW6nsqaWWOL8wuBOeG5wcm/+EaEVx3Y/9tAqUOLPzHjdlHUucHf0uHP5q3Hdja7P4XBn5E4GpSpzZr69j8wynoYhdjNoljk6nOM3pFKc5nUpPU+Ig9fEvvL6bljg6PbwImFmgxGmK+z2ybyXOyHzsRHobypfS/aw5l6ehxMGKeM9Hd0ucJNsVuyhbSonjXPfdb38r/NbVr4SdKXanRomzn9aUONdVTOiYLfXcDdsVBU7M5na9ETnJBrILljY6oXJFGxaXubs5jcp54YUXHg131XZ276Yxg6WVODOMvuE4GvWVbdhlRbua97gpa1fiaNeeJ0+eHP5WrDBFieOqeX3t/nI4DbtfWYyy93oRRuIAmBclDlKUOFiGQInTFPd7ZK9KnOxYOPnIGiUvZsaKF5vHy5dC+JKzQJQ4WBLv+VjjEqe6zHia7Ng12S7I6u5ObbxQKcvkXZ5Nc0wcSpz9tKLEOWkpjs1S193tTe/OlGQz1Oxx2jwa58jBgwd/VwWOSpZle/DgQdABvYe77tEoKUxv4SXOLw7uM/pm+co27LKiXc173JS1K3He8573/KvTp08PfyNWWFGJoz9yGE6zjiOb2qjsvV6EY+JwmtOcTs1ymhIHKUocLEOgxGmK+z1yLUscO+FNE1NanmTHt6mjuO7LfmmTo8TBknjPxxqXOFkxM7GsmFx8lJY4UxVFSSrKH0qc8rS9xLky9yicZPc0OkbOyGWWuqNxbt68Ga/TtpEL2hhfjBaq7264sa3jBWWFl50ujsVQ8ZDor75VGm1sbLxj1+Mg+NNbaIlzanAtHBocGZtfSR5a2jqirO3KNuyyol3Ne9yUdSwd6u/ec0Uljgyn0fHjML+y93oRRuIAmBclDlKUOFiGQInTFPd7JCXOZJec67zzTghf0vFy2J0aVsN7PtZ6d2qjZYV8p9hd2cg0n30rfHOk7BkvRkZLnKelh0bPjF6m4+m8sT+qZvuqyprvhHffequ43f3RNlmJM3oMnoryiRLHfZ1ami9x9BfPOqh+fTfC1sidGN/g9fTg0cPUPDaOfOADH/hDu851S1tcttgHXv1PSRVZoxsFvajMmdzkJKVWmx6PdbGQEkejbz44OD02nwm5ZTluwWzKNuyyol3Ne9yUdStxNBKz/u/cFZY4w8+n1uwHdc2VvdeLcEycpzjN6RSn65+mxEGKEgfLEChxmuJ+j+xVifPy6O7Uvm6rTvl184zMyq78cnIZx8TBinjPx5ofEycvRGrIdm2mjJdBQypIskJmkqdlTVa0aHRPUaR8Jey8NX5bI0UNJY77OrU0vi1Iu+oK165dGz6wdWiEyXbY0gGiNSLHKWjy3a3VHYkj58+fD8PjwbRhl2pHtSwnTpwYLl0NzkikSanqt7Sbu+G07FZtOnOXODOMvrlowXzKNuyyol3Ne9wURuJMMv1IHEqcxSh7rxdhJA6AeVHiIEWJg2UIlDhNcb9H9qrEsUwzn6rShxIHK+I9H2te4ihTFDlOgVOkrKiJBcnVb1UXOROPezPZyEgdShz3dWppfFuQNu4V+/pfnPHdrU0xECdd4TptadoVS7h169Zw6arko5TqZPIGRz032t2dTcuKxnRmLnHODR4U03nXL8kdC6NvFqNswy6v/2re46asXYkz1QjRFZU4OlbZcJp1LMXaqOy9XoRj4nCa05xOzXKaEgcpShwsQ6DEaYr7PbJvJU5+2Ttfejq65uVLe6XNOzaNdpf2clbiaNo4H+VL6YWmqsSJl6ejedoUSpzW8p6PDpQ4e9n+7Bvht976Tng3L3S+vbe7s53Pju5mLY92jTa62zW73leTgsSur1E0o/PX6W+N7cItZlvlTzq9Lcs3h7tjG9lNW1oAUeK4r1NL4yXO9eeff/7x8FFdgLvhxlZ+DJjt/ePl1NGig0cXo3Cm2tWcdzyg5HhB7uNjmWI0ThuKrXUxU4nzs4Ob4QcHR8euNyHa3V4bRo11RdmGXVa0q3mPm7J2pYP97v1nJ0+eHP4GrLCiEkfHKRtOc96C+ZW914swEgfAvChxkKLEwTIESpymuN8j+1bi5KNrJlFpk80qXBoWMfltSNVInX0Vy99UKHFay3s+OlPikG6kzSXOrdobyiYaH31TZMoCJxpev+mDR5+zTDEKR9sC6xRY449V1e7mVGw988wzj2xaduNT31Qlzoyjb05asFhlG3ZZ0a7mPW7KOo4cuf7cc8/V+wODFZU4yTHKzlgwv7L3ehGOifMUpzmd4nT905Q4SFHiYBkCJU5T3O+RvStxlOGIm4lsAo2YKS1iHPlIndLCiBIH0/GeD0oc0qq0tsTRLmtOnz49/O07D2c3Yptb4cYsDY4ZHjy66YP5Tz1K6e72Vtjc1LGC9sqcsnLmxtboY1XnmEE6PsTGxsZ3bXrUU7vEOTO4Ne3oG+1mj9E3y1G2YZcV7Wre46asY4lTlOi3b98e/gacYEUljkZEHjhw4Hs2De/9xSh7rxdhJA6AeVHiIEWJg2UIlDhNcb9H9rLEUV7em+6drGXRae1KLZ222M1aOp39/PUv7ZU8I7dl5+e7StN1v57fRl72tCSUOK3lPR+UOKRVaW2Jo92F1T549CRjG8GeZnR3YvW8+OKLtr7T6ArPYT0258+fHy7RYs1S4uzs7MTpF7ay2XGVJc4vDR6GE4OLY9NMyH0Lu7RbrrINu6xoV/MeN2UdS5wjlnDpkq0pVFlRidOSPy7okrL3ehGOicNpTnM6NctpShykKHGwDIESpynu98h1KXHI8kOJ01re80GJQ1qV7pc4Zr+GuHtjfNdqVQd9yfzkT/6kdh3W5Bdrbagvdp+zePmopc1Qo8MpDqp96NAhlVs6BguqTSxxNPrmyOD42OUTojerNixjuco27LKiXc173JTKEufjV3bOFRs3tncu/tlr11ox0sQ+n77+4Q9/+MnwV2C5FZQ4GhE0vFwjhLAYZe/1IozEATAvShykiu85lDhYsECJ0xT3eyQlDomhxGkt7/mgxCGtSmtLnIMHD/7uYnanlputqIj+2B/7Y/qL5x0tY0MuWsK9e/eGS7Q4+SicaQqu4V+C37Sgmlvi/C8GZxl9025lG3ZZ0a7mPW7KxBLnxS+8fnJko8b2l9ty4H4td7h+/frwN2CJFZQ4Z86c0e4sv2+XH7VgMcre60U4Js5TnOZ0itP1T1PiIKXSZuT7DiUOFiBQ4jTF/R5JiUNiKHFay3s+KHFIq9LaEsfsnjhxwr5hLN4suwyLhtfRcUeaotEu4eHDh8MlWoy723vHynma6cqtkydP6nq3LKjmljhTRoUZG21Xq2zDLiva1bzHTZlY4nz8C1/eSTdqfPTK620pio9ubGx89yMf+cjkY5MtucRJRuE0+ZnURWXv9SKMxAEwL0ocpFTapN93dHp4ETCzQInTFPd7JCUOiaHEaS3v+aDEIa1Km0ucneeee27qg/dvbe0dvL/Y8FUykmTWEkejX4bXafI4DteeffbZqR6XKuMFznTFlgz/Gvwduy6qzVPiPLCw26RmlG3YZUW7mve4KRUlTqs3alywVI/GWSKVSAcOHPieLQeF7mKVvdeLcEwcTnOa06lZTlPiINXy7ztYU4ESpynu90hKHBJDidNa3vNBiUNalTaXOMUGsml2GzZeRnh/9ZzvTq1+YdGSA/jvHjt2bLhE87obbmzNX+CIjl80vD6qzVriMPqmWWUbdlnRruY9bso6lziHNzY23tUfGyxj95ZVrl69Gh9DjkW2eGXv9SKMxAEwL0ocpFr+fQdrKlDiNMX9HkmJQ2IocVrLez4ocUir0uYSR7+8wpUrV+xbRk1ju56xbG6HG7GTuHsjbG9ml0+x2zAVFdqFjl2vSdc/+MEPPhou0hzuuo/F1v6DNZ2WPDbrYtoS56FFpSaaVbZhlxXtat7jpqxziSOn7Pfe9zUiZtG7uJzk1q1b4dChQ4/ttn/HluHw3qJggcre60U4Js5TnOZ0itP1T1PiILUG33ewhgIlTlPc75GUOCSGEqe1vOeDEoe0Km0ucQYbGxv/fLq/ePWKiYpsbtu16nnmmWce2XWafmCuWoZLNCu/wJlhAM6+4e5l7lhQbZoSR8cZOm5B88o27LKiXc173JR1L3HkvKXYpeQqaNTP+9///kfD0pwv+ctR9l4vwkgcAPOixEFqTb7vYM0ESpymuN8jKXFIDCVOa3nPByUOaVVaXeKY4iD+Onhzbd5onNLUP8h0suuas5YmaaNnuH///nDJpuUUOFMUWWX+xJ/4E39o82KFo546JY5G31y0oD3KNuzyuq/mPW5KF0ocuWIpipxljsjRZ6FGYmr0j91ek7v17Lqy93qR4R8tDJ+VPZzmdIrTnE55pylxkFqj7ztYI4ESpynu90hKHBJDidNa3vNBiUNalbaXOCcs0/+F893tsFU1Imdz6+lu1ipoo5yOe3DgwIH/ya7b9K5rdFD7cOfOneHSTefGVvY4bN2Yu8CRH/mRH/k3Nj+NEkK1iRsILRrRxOib9il73ljRruY9bkpXShwp/uhAu1abvWQvd/PmzWI06HAEzuniFrEsE39HMxIHwLwocZBas+87WBOBEqcp7vdIShwSQ4nTWt7z0doSZ/ur37Ff5rP4Tvitz/rzXHg++1Z4d3ir8s2rzjQTsvPW8IqFb4UdZ5q+pe0ljhR/4TzVaJzC3XBjeytsZmXO5uZW2J7yuC86Ls/w+mcsTdMv9XD58uXh0tV3d3tz5LFYxAgc0fEZhvNUwYRqGmEz+lw8jTYEc4yLdirbsMuKdjXvcVO6VOJIsWs1lf4avbkIKoQuXLgQfuAHfkAFzjs2f/1xA5ar7L1eJC1xdDrFaU6nOM3pVHqaEgepNfy+gzUQKHGa4n6PpMQhMZQ4reU9H5Q484QSZ+FZhxLnqHYdo40mqzxwdKQNaNogZ8ugA0i3gi3LlMcKMlPtZu5pNmscKOfSpUtx+iMWVNPjdNuSPtYafXPSgvYq27DLinY173FTulbiyKkDBw78v+3f8MILLzza2dkZ/qacjj579Lt1eCw2PVbXLUctWL6y93oRRuIAmBclDlJr+n0HLRcocZrifo+kxCExlDit5T0flDjzhBJn4VmHEkeKkQv6a+RVUmn00z/907Z+UzwgbTr+QHFcnAcPHgyXtNrYbtRqpk6J85M/+ZPayMjKxnRU5Gjkkp5LHWeJ0TftV7Zhl9d+Ne9xU7pY4kQXNjY23rV/w7PPPvv43Llz4fr168Pfmj4VNxrBo5JA1xvmlqVNnz99UPZeLxKfnxSnOZ3iNKdT3mlKHKTW/PsOWipQ4jTF/R45S4nzdXuqannH/rN86ZI/H9KuUOK0lvd8UOLMkzlLHDKedSlxZMdSbOBaFZVGuk1L2w4wr5W6Yjdv9dwIW0+f2KlSVeJoo+Rw2gsWoMvKNuyyol3Ne9yULpc4onJWu1gbe+2oCIg5/uEfH7nsjx7aUDGuD2GOfdOMsvd6ET1nADAPShykOvB9pw8+ZbG3zUg+Y5nFS5ablt+3xHnp59csP2VZiECJ0xT3e+RSS5yUXellZ16kPaHE8dl3ksv2ADR5CIv8uSjS1hLHzxvhm8NfBYW33nCmWWEocRaedSpxDmuXZocOHXpc9dfMi6BjzthtKiqPWkePxXvf+94ntQ6gPeOu1JSqEkcH8R7+tTkjSdB1ZRt2WdGu5j1uStdLnJR2haZCR/dZK+67//b7Dz548Y8fDMrPffgHwi9/7FD4T//8Hwlvn3+G11Szyt7rRdISR6dTnOZ0itOcTqWnKXGQ6tj3na76VYu9bUbyNcv7LHWpoPmGJZ9PHpU508zXFShxmuJ+j1xZiWPe+ZI/P9KOUOL4Hg0G9+wBCPbvfft+ctV+XvXeKNLnYT/dLXGqpy3dndnVbw3PE53/lfBbbyUjg75t52m0j1fifPaN0WnDd8K7dtvbye1W3n627Hvl0FdsepvX8Dx5Ny5HMs+nGZ8+fPs74Ztf9ZelLVmnEkeOqbywf6cYhTK98+fPxwdBxyBoazmhhnrlu5hLrdkoHH0R1hftuMyT8tuWVyxzf3me0o9ZvmWJy6GVhbZ7waIVDS37quR/CafTq1C2YZcV7Wre46b0qcQZo7LGotImD6+pZpW914swEgfAvChxkOr6950OyNfRYjR6pu7IGW8kz6RMWxCNCZQ4TXG/R66yxJFLzvxIO0KJ44slTpqk0DkxnGyZ7GbGQ4kTlZc43xyZTobT5iXOV0dPjxrfzVvtEmfifJ0RQNlyjVH5k07foqxbiSMqVVSuBB1joNZIlJru3LmTHgPniqXtrmtk0q1bt4b3YHV0PJ4PfvCDj9ZoFM40JU7MNF/MF2GdSpxY3mg5tcyUOJjEe9wUShxKnDYqe68XUYmjf1Oc5nSK05xOeacpcZDq+vedDphUwNRZX9P6ZLrrtLqZa10wUOI0xf0eOXeJYye8aZSXLxWHxRnxpZf9aUnzocTxeSVOGl1u31uu2M/LKnRs1uOhxInKSpxx7371K3vTVZUlY0bLk7olTqVvv5WMrql53ZHrtCfrWOJEKlnsw/CZR5cuXQoPHz4cPtLTUxEUj39z4MCB79m/OuD8OtDIpO8+//zzj1WqrNInP/nJWHY1uc/KacxS4iirLCjWqcTRsjXxGAklzvrxHjeFEocSp43K3utFGIkDYF6UOEh1/ftOB6TrPdod2hvJ6ar1IG8dVIVOvtcHb1drc61jBUqcprjfI5dZ4iiXsmE7X7/kTzNS9tiJr39p8jF0Ltnl72QNkU5/yZn/SF62afLbM+/YeZecgullu51UWQmVT5ePOJrqPtp9SGleWmaXzafscaq77DGUOL6qEieNTXvH/n3Vcnx49UWw2Y2HEieaXOJ88+qwuEnjlDgju077rC3Dt4cXDO0XQJapSpxvv/V012ljt/t0lM/oPNPb29u9WqqNx/BZ5xJHTlpuWcJzzz33WEXM7du3hw93Ne0OTKN5VARpHhaN8Fm3X5o68PVKNyrFwssycQNsy8xa4iirKgkoceqhxFk/3uOmUOJQ4rRR2Xu9CMfEeYrTnE5xuv5pShykuv59Z83lo2g+Y5lmXSS//qQ9PXjrq7q9mQRKnKa43yMbLXFeHi9TRtiFY7tfs+t8feKVTMky5aWGZ+y4Pdkylh3Xp/QxmeU+ZiXO17PHMFdWznwpveGSxyQNJY5vmhInzbDQuWiZ97GzWYyHEieaUOKUjVrJyxRvunyaZDnqlzjpZXvZ/urocXf2Spyq+/yV8FtpqTTx8Wsm617iRBoNcsdSLLxGply8eDFohI6OnaMVJeXy5cvFeTrmzbPPPvskTm/RQaZXfdCsRdKG0KKQmmdEUh16DHVbFhVe6yT/Uqyf079+iry/glpVmUKJUw8lzvrxHjeFEocSp43K3utFGIkDYF6UOEh1/fvOmlOJYm+XIrGAmWadLb2+UlXKaP5vW35l+PPMAiVOU9zvkcvenVouLSwquok974yONBkpJibIy5Y6BU6UX3ekiMqWp0heuiRF1Sz3MZ9fTss3skhesZSVR94IqDyUOL5ZS5w0No/bTwYD/dX5LI+jXW08lDhReYmTjp4ZSVbQ+NNlxUlS9NQucZxyyC1xaizP6PXGy6Gm05USJ9JQOm0U3C90yvPDt+3f85ajli4oipwXX3xxKbtWUzmkkki3YdmxrMNxcFJ1SxzRF+b0L6bitGl5oC/u6XFhFJU/Oi/SdT5vSeelL+X58PnIWyHQdJo+nYdKx/R2UtPeprxk0Tzj9Iqur/PylYd8RSRPvhIzy/KId714vylx1o/3uCmUOJQ4bVT2Xi/CMXE4zWlOp2Y5TYmDVNe/76wxrY+UrT+mf9Cm9ZWywqXudAsXKHGa4n6PnLvEmYZdMc4jH6GTFhFlo3fyIka7QIvlh3f8nf3CyBkNk5YalcfusctT+ciXspJnlvtYJLs9yUuYstt0Lzdjo32cVJU49r/jFu0q7NUne3ve6YVFlDhp9B3HHr/z9nPdbb426XgocaLyEqd0t2NZaVI2Xdnt1C5xvPs5sozDEsfZDdxklDgr9s6f21tnibll2X9Pr/PImzJnNzY2vq9dy2lXcYty69atohyy+dvjNrhc3NL6mfQlPFe3xEn3hxzPiyNS8nnkUeGTj17JS5xfs6TLnEbzzsuLWW5TRYk3bZqzlmiaEmeW5ZFJ19P5X8zOo8RpP+9xUyhxKHHaqOy9XoSROADmRYmD1EevvH4z/b6j08OL0Kx8nSQdRZP/UZk3wiZf/0zXFZcuUOI0xf0eucoSp3QUjp1I5694uwIbOa+kuCiOi/MluywpWvJCw939WF70ZMuUzmJk5Et2vfSykZvN5qeU7u4sL3Gc+1pVLJUu74RMKnG+Phj81UeDwUM7Ye/T/Vy0yzpv0SVOmuH3IP1V+pHhzXns4vFQ4kSUOG1Ix0scFTXue1jpYokjJzc2Nt61f8PJkyeLAmZW9+7dC2fOnLHHahBsnt+1f9ON+eumTomj0y9Zynanln9ZzxO/vOdlTFnyZah7vZj0+rPcZnp/tIKiFRXRaJd0XukKR90SZ9bHQD/rPG/aslDitJ/3uCmUOJQ4bVT2Xi/CMXGe4jSnU5yuf5oSB6mPXXn9Qvp9R6eHF6FZ6XpPuq4k+TpLvk4j+TTpOtXSBUqcprjfI1dR4mjEzKW0ZJhQfMTko25UAI3cblp6VKSq/KkzXdnIl3w598uUGe9jcVlW0JSVMCOLlE5TUfCUZVKJ828Gg39lP9h7lCwr9t3nuv3rFTp21nj6W+JkuzlbQImztN2p1S1xapZKbQ4lTjdpV2evDouXcOLEieLYQCplqty/fz9ctRdy3F3MMFct677buVnKgZhYEngljldspcPmlVjuaBnykS9pAeEVH1rmuOs0rTikl6crE7PcZnqdOH00aaVF0ut6KySzPgb5Y5zuos67rpJef5nKNuyyAaSa97gplDiUOG1U9l4vwkgcAPOixEHqz167dvhjX/jKdX3X0b9/6sr1SX8pjNXI1x29kiZdX1LydZJ8HpQ4/eB+j1xqifNOVt7E5CNNashLnLqjS5SR5bUT3jTKxF2QZaVMLEZKi58Z76N33bLj2ZQVSyPnT7i/ecpKnKMW+4GsKBrxZN+Ddp4MBmfttLah2j/j6U2JM3ZcmezyBZQ43rFrxqZJlnnhJc5Uj087Q4nTbSpersSROYoKHW2AunDhQrh06VKRixcvFudp5E6cblgA6UWg4wx1Qf4lum7SL+x5weB9mc+LGJUZqXw50svz63pf9L1yZZ7bLDNPiTPP8qTz9W5X0mkUSpz28x43hRKHEqeNyt7rReIfOaQ4zekUpzmd8k5T4gCtl6/3xT9IS2k9ResrcZp8nUfqrNssRaDEaYr7PXLuEictCV7OSg2x0yNliDJLwZGVKCsvcSzpfStuP1umquPaVJm2xHGLpUnLVJGyEsfelPbeJE1Ehc6O/XvGkj8v3S1x8pE2KmOGI2U++8bYZQspceTbb4WdolDR5ba8Y8vw9PqLL3HyeYbw7lff2C+Wtq9qeb8T3n3rrfBb9liMFU4tCCVOf+j+akSNvlTct9hjMDFdkxcHdZKXNLN8mfemSQuStADJy4/89sUrV+a5zZRKv5csr1nitIq3wpGukOTzm3V58ufIu/+SPw+UOO3nPW4KJQ4lThuVvdeLMBIHwLwocYDWy/9orE68dax0nUfx1otSWo9626L1sU/ojFkFSpymuN8jF1riDFNZ5MxYNNQtY/JM2k3aNNON7P7MLr+UnjaLuI9F6pY4lrxYKt1FW40wEqe9uW+5bDlsic9Ld0ucq2H7q98ZTljHgkqcSbKROssocaZZJn/3b82GEqfftAHVHgs3XVO3xNGXZh1MVGVGrk55kE9TlfTLvv7V6XiZ99dc6fxjuTLPbWpXZXlpk2faEmfW5alz/yUvibznYRnKNuyyAaSa97gplDiUOG1U9l4vkpY4Op3idPXp7a3NsGn/6ueYzc3NsLV9w50+9fT03XD3xvb+9dNsbm6F7Rt2uU2l06m90zfCVjJ9rWzdSK7/VDytZdmy+zByncHe6Rt3tSR74vRRndN3794ofcz2Lh9ObHQ6tX/a5rG1ufd4pVZ6+sZWcTpGD+nE6U2XT1PiAKVOWppeT8/XSaZJXtLk6y3eelUqL4+qSp9SgRKnKe73yGWUOMpYkZNNN0shk89zrKBQ+WHTfP1LdplGpQzPz0fYuMeIyUqXspE+2ayecu7DLPexyBQlTl4sfT25E9OMVlI4Jk678mgweGDfh66dtp+956TLJc7Y9CO+E775VlqEzFviaH4TSqNvpyXNXpZS4gwvqyxyvF2/tSCUOP3W5xKnbJTHJHk54ZUH8xQqdUqMdP7zljje9WKBdSk5jxJnT9mGXTaAVPMeN4UShxKnjcre60UYiTOLu0UR4T2eeTa3k1bCcffG1lih4WczbN3w5jV7iTPmrsobZ/osm1vbRak0nQU8ZsMCaG+6LbvnDXJKnD6jxAGKA0qfs1y33LHYS9KN9iCh9ZMLllUVD9Ouy6TJ1zG9PyTUeswrlnQ6rd/oWKD5dJMKn4kCJU5T3O+Ryypx8lJE0jIiL1aKUSTDy1626XTdd2yaL9nP++enhYXY5fujZez2slk+LWsqliXeXsoteiz5ckfe9LPcxyJ2OjVxFI9z36Ky+1CWSSXO1weDv6pde9kJe5+SZSUWN/bzGXvcIzs5nm6XOBbtOm2kXNnbnVixy7ORImT+EkdFinZZ9s1v57f3dJdmaZZW4iif/YrN3257ZHduOv2tYldqI9O2KJQ4/UaJM538C71XHsxTMMxa4sxym/lt5Y9HOvTfW4GYVOLM+hjUfY7Sx2Ca+c+rbMMuG0CqeY+bQolDidNGZe/1IhwTZ7bT0yYVT9/drldqpFHBoX+f2hvxM21SxemslKjM5tMiR6dT3ukbW848JiQtRXRaRufxtMSJl0crOT2hxHGnT3TxNCUOekoHjj5vUXFjL8GZctuiQke7gV6WdD3HWw9K5esv3vT5ulHdlP1BWy2BEqcp7vfIpZU4SlZGyKRipUw6omRshE8Zmy4tRsrKF8/EESzOfcpvaz8z3sepShyLe9/KlmlCJpU4lmP2v+OWV/sWFSv2r/1+Wk5Ujtn3np0ng8FZO63Po5ydPZ71KnFI10OJ02+UONOpUx7UHU3imbXEmeU2q4qWeUqceR6DdL7e7Uo6jUKJ037e46ZQ4lDitFHZe70II3GmdHd7dOTM5lYYHSBzN9zIy5mk8Ng3bWmSZHTUxwJG4uT3qW7qDj9Z0GNWVuI0gpE4Iyhx0EMqb+ocl7VuHlj0PdLbEDePfD2mzjpjvo7orfuctaTTVEWjctL1q6kFSpymuN8jl1riWMYKhrRcuFSj5HDKiHSXYS673DsWTJ0iR7tiy6+XJy+Sqkqfqe/jlCWOVyxVXsdJVYlj6aVHg8E9ewDs99PiUqO4Sdkk46HEIW0KJU6/UeJMJ/+CXlYe5CWDdk0Wb0u7KosHq9TP6TLUKT/SZUhLjmlvMy9x0v0t6/L0saoqcdLL423O+hjkj7FWYHTcHtF0n7eklytlz8OilW3YZQNINe9xUyhxKHHaqOy9XoRj4jxV63S28T7d81c6vVc4PL38btgu2W1ZfkyYG9vO7taGBYd+HitxkjZh7/Kn/NPesowf00fHshmdZi9pd6HTqf3TI4/Z5v5j5k3/NHvXSdW5PLXU006JM3F60+XTlDjokdOWOxZ7yS0lKoa0W7ZFSf+QTalzTJp8HS7/A7dI6z3p+ldZZllPHRMocZrifo9cdomjjPU4aenx8l658k5ejNhp7WYsnU+aSzaPsutMHIFit/cl7/bsvPQ4OpOS79bNK4xGMu19zEqZOoVM/hhXLpMTShzfIksc+35z3f6134HFrjvrssnHQ4lD2hRKnH6jxJlO3RInL0gmJV0xmKfEmfY2vZUNlSV1i5J8BScmLvOsj0H+PNUJJU77eY+bQolDidNGZe/1IozEmc7YLtC2boyNGKk0NgrnabHhckbKPO1qykucWsbmPWlZxgufqmP+yLyPWeVu54b3+e4NHdMnn3YzbBYjf6puUaOBtmza9Lp2/+y6296xiCaOxMlHR1U8vx1AiYOeuGixl9pKoo0X847KyddD0nWtKvkfsJWtn+g2VOboOD/p9Lot/YFb3durFChxmuJ+j5ylxCHty0iJYye8aapCieObt8Sx7zQ37d9pi5uUXXU8lDikTaHE6TdKnOmkBYoyqTzQZVUlRr4M85Q4Mu1tlhUxXtKiRcpKmnSZZ3kMRI9DfmDPNK9b0sdp0vOwSGUbdtkAUs173BRKHEqcNip7rxfhmDhTnh4rYPayqWJiuKFep1Pe6Twp77RXhOzJRsjY+fo3Nel0Pt/xY+5k17+7XZze2treL0YmTm90ejyb+4+ZTqe801W5sVVR9Fi2hmWMfk4Vl5WMjNpP0tLodHmJs/f4Pc3ecqW6eJoSBx2nMkUbE+xlttLcssy68a5zAiVOU9zvkZQ46598N3H7xx2aMpQ4vllKHH2PeTIYnLefF3GcNJvNeChxSJtCidNvlDjTSQsUpao80AeJRrVo12HxOio19JdX+gus3Lwljkx7m9o/czqtfn7Foscm/Ysy7/HS/NKyRbej3aalpl2eSLel5dC08XrxOvnjRInTft7jplDiUOK0Udl7vQgjcaZVviu0ImUjN/bl1685SmPsuDLxmDHTHRMnHzkzutu3ZY0Yme8xqxyJM5LkPtzNHxvvODoVy5Zk5LErKXFGH8+03Ok2Shx0mAqciZ+jeY4ePVp8tioXL14Mly5dCqdPny5OHz+u43v71yvJPcsiNuatvUCJ0xT39U+Js54pPb7POxW7k5sQShxf3RLHpru9wOImZbMcDyUOaVMocfqtTyUOMK+yFVI2gFTzHjeFEocSp43K3utF0hJHp1OcLjnt7N5sPHvFQ1pN6PR4afC0WNi7/KnR09mIm829ETHzlDg6nRcYaeeg06m5Tg9H8FRFx+KJS6jTqdFp90oUSYuT/P7lBVDaw3iXF6ODksvz53n/8XFKnPR0TKrLpylx0GG1RuCouDl//nzxXqhy586dotg5duyYOy8nGpEz767V1l6gxGmK+z2SEmc9U1bizDoKR6HE8U0qcYbFzQX7eZmPj81+PJQ4pE2hxOk3ShygvrINu2wAqeY9bgolDiVOG5W914swEmdGGuVRawRHPrqlvMSZrGxUyTwjcWZdlhnN/JjtGR3lUm9ZR0uaiudif3TTU9pNW3FcHJVL6YV5ibM1ejrd/VofUOKgo85b7KVVnsOHDxeFzIMHD4bvhulcuXKlKIC8eWe5aum18P9n71+g5LrO+0600KBAxBEpjC3SkGIRoJZJYcwhCYkEDLcTCXGYBJFspofJZDpMVoCMqFLbWQ4hyhzDjjiAomSwJh6nG4qGTTLSbWhmzIaUrCBjO41xZAbg+CYY2VZ6lLEvLPeICO1EHfn6CpbyaMlGY9/vO3VO9z679qnzqPOqqt9v8c/GqfOsU69T+1ff3kicpvBeRyJxRjNPnpfXi8XrrxtzegiBo0Hi+HEljkxfk7+nJHWdE9lVf5A4pE1B4kw2SByA7CQ17NIAko7vvGkGSpxH5y+cjEmcj39mPpw1FqisceQNEqcdJL3Wg6jE0b82TOeYXnMqZBKy3aTvjpmyXVES4Z92ZI3VndrWbRmiEkf/9vBLnO35PaqYXkgdw2Zb0ui0kiRxovkROr22suDZR0/ibC/vnNNQvGzP7+GdThgbKYrtcHTaZhynkTgwhhyRbEjkqeXPwYMHzfXr18NXQnFUAM3MzHj34eSEZGIxSJym8F5HInFIFCSOH5U4obg5IzkQ3lwn9uOwFSQOaVOQOFm4deu4XOrE2Nzc1HE+quXWrcOyH21teHt4S7k8fOzvy/9l8/25efPmenhX9b7+vNwGCej5CU9V77xV9XhB0yQ17NIAko7vvGkGSpz3LC3tPjR/4ZoKnHfN/8z6Ix//mSYu5ipDZY0jb5A47SDptR6ESpwSWVsxCwtdb1dr2xUwrjjxV530kXVMnJwVIPWMiTOATOesx8BKHN1Oqhhy71/83Ln7G0iKxPFV9YwzSBwYQ1Yl8rTyR6WLyheVOPr8v3r1avhqKM7Jk9qzjn9/YVQqTez4OAaJ0xTe60gkDomCxPEjd77p++4+FkGQOKRNQeJkwG6kj7h58+a/lI28OVykXCJ509tP+VIg3L6WssuUN0ic7CBxJoakhl0aQNLxnTfNQIkTMW7yJkJljSNvkDjtIOm1HoQxcbYpc3rNbeTv9ipmlLiM6M1TovkR9nTf4P5b20uWOL352/im+8aEsUSGb/meTJo2091oTJ5typh2YxOfZ1UweYSKdoGmf1dSxsRx5ZHNwOk0iRPGZpynkTgwZqR2o+Ybz0a7VpudnTXLy8tmY2MjfHXkQ7tXc7frZKyquPNgkDhN4b2OROKQKEic1uJ7PJA4pFVB4qRi3m4LjQi57d/LVh4LFyqVqqVAtH0kTjkgcSaGpIZdGkDS8Z03TSaJM66orHHkDRKnHSS91oNQiZOHPFUvA8Zb8QiAwZtyqnBiyw9XidO/7cHVOK6ASq9eKemcCf5KHGf7zjqDx8QZ4tz1PYa67fQxdsYVJA6MEbsl6xJ5ShWPjnOjr4sinDhxwrvNMFqNM5GNogaJ0xTe60gkDomCxGktvscDiUNaFSROGp6u1CKqkhtInNECiTMxJDXs0gCSju+8aZA4SJw2kvRaD8KYOHmm/V2h+ZdPFgQ6Hd9OL9OyjA6er/8OkAkdWN9dTrMtB5wxcWQb+tdm8LQ7Rk8vXR3IP1xCp9fW5P70HfOg+x/hbr93f2y2p/3nLJrvlThrvYqgKLqK/o3wSZzt+e7j2dvm9nwhlDV6PlbCExLMdyTO1sObcjzKOE4jcWCMOCmRp1M5WVpaCl8p2dEqniNHjni3F+aiZOIwSJym8F5HInFIFCROa/E9Ho1InIXFL5hf+8rXzFfl7TqG3PZrP/s5s/AR/3okIR/5nJzPL5hl37wRCxInBaeBfk2yGk5W1mCPxBktkDgTQ1LDLg0g6fjOmwaJg8RpI0mv9SBU4uSjr1szFQNR637I2tpCn/DYauSPyNgdly/xbQ1RTRLhqfTJlIz7KuucxSVOT8i40iReGeSXbjZ9xyY73VpExZU9z14/SeIIseOckGocJA6MEdcl8nQqL2fPng1fKdlZXV31biuMVuPskUwUBonTFN7rSCQOiYLEaS2+x6NeifMRlTfyHp2Br37hc2bBtw2ynY98zvyzL3wtPGNfRuK0nyEljjGP3Qy6Teuxubn5025lzq1bnePh0g7xbth8IsRt/Jfpz4STXnzbCAjHuLGPVf+tt8nxHQ6X0v39dDg7IJ/EMW+Wv/POPlbt7fcTrHPBWUfvp3ZevD2ekHVOdf6tzvaYQIrctra1H2dZ2c7b5Z9d+bct1/S+W/vwHof32GVWbFuKrtdb/tafCReLIdtG4kwGSQ27NICk4ztvGiQOEqeNJL3WgzAmzjbZpl0xkCFhQ77+26ZvuQzpH7NmcMWPzaDpvjF80hKOOWOTPF3snOlfm75lvOmGFTMJFUaWbNHpvMe2dfY9Ekf/BjhSLHrMtuaHjNM0Egdcvnd+ef+hheVT+je8aRTQMQvlqVR+inStNjMz491WmBOSicIgcZrCex2JxCFRkDitxfd41CdxFr/cX3mTxhc+598WCbL8hfA8BSBxRoDhJM6mJT20IV/WekzWS5UzPeqROHJbTMzYaP/A2tj0fQe+47dl0cvfceD7fluno/gGmIzyzve851vRcn/soQO/d9/ho//eXlcHoFT0vHhFliPAXGSethb0ZIcjZiSuRNkWI/3L/lI42UfvfAWPw3YLjoXcHj6mPWT5C+GsRG7duvVMuPgWup9wdvxYYdxIatilASQd33nTIHGQOG0k6bUeRD8DIS85Gv5TKjFUnmSrgpk2Xad6pUcJlTghaysZK3IKVZeUcM6KVgxZ8Y/hI+cw7dimozF4QgZU4ij+8XvGFyQO2Bw+d+HIoXMXzHZePhbOajt6HSdPpfJz8ODB8NWSnZRqnGXJRGGQOE3hvY5sg8R58kljzr9qzOvyFLB5XW549Xxvvm+9vshyr8o6p33zSGqQOK3F93jUI3E+8oX8Aifk1xY92yNBkDgjxzASx7z55s2b/zJ8tLVx/l/KSkFlh9NoHxMB21QvcWQ6UeAop06dkkP2PrhD59q1a+Fe4uemR/y+J7G1nlPd5KL3M9xwTOKUge8Y5Lbtx/TWrcP2fQn+7Uga93F058PYkNSwSwNIOr7zpkHiIHHaSNJrPYhKHP1rw3S2aR0nZiFhzJrp7oJZ0QFuBJ228U2rQOlOT/dJiumw4sVWDzq9zbBj4rjTvQoWPRb9ux05tvA+xZfPt309Zzo97UoTve8Ztq/nKbaeHJf+DWSYvU3ZXjSuz/ayeru/wkfv98qCsw1J4vkfIHGC+QnVOEow32IcppE4YHPo3MvLjsQZFeFwVSJPpWzZu3evOXnyZNAbxOzsrNm9e7d3uSgXL14MXzXZUfnj25bkhmS3ZGIwSJym8F5HNi1xVN5k4fXz/vWDhBIoAolTLEic1uJ7PGqQOJ8x/8zThdpXv/AFs/yRz8SWW/BV63zlC3SrlhAkzsgxhMTxdaUW4YiE2Lwt8kscOaig8T+TFHCOT/9tV4nov1+5evU/yT9l9ZLzbXf/ln3fescRq2jZOn5l+/z0ujULbw4Iqng8YsZX8RLgWVa2+fflwCLB1ie25Pi2u2PrP2/B+bWPeft4e9jbdO+rYq8bbS+cBeNFUsMuDSDp+M6bBomDxGkjSa/1IFTiAMCwIHHA5tC5C5fjEufCKDwuOsaMPI2yRXuI2NjYCF8BPa5fv24OHDjgXV5T5PN2UHfhkiOSicEgcZrCex3ZpMQ5nVHgRLx6Ott2kDjFgsRpLb7Ho3qJ01eF87XB1TWe5f/ZR9zlPmOWv/C1+HJfke3+bNI4Op8zvxYupvT237+Nr37ly2a5b192cu538cvhQopKls9YY9gI1v4WFnW8IGtegOwrWMaWXbLsz7rLObjd0IVj57jntSfSrOXs5Dj2MoPESWBww31ylc421UocZ5k+sRBgzGPftX//Lf1XyTmTfH7S7nf83AXzHTETzO87nyF9y575Jbn1y5Lw2P7If/jxtZtfD2f7zs2nJeGyXfPzSefOIvm+9th6LNZWzFPTP/71v9npvDOcNSpY5yQ4l2+RFOG9kkuS35VE29N8SfIhyV7JKJPUsEsDSDq+86ZB4iBx2kjSaz2I3aik0zZMM23DNNM29jQSpxK04euiRO7aREa7z/5fJXptVUfmJb7j6MuxY8fCZ34/N27cCCp0fOtpdH5WtKeIxcVF73bCaIWT775UGR2L56CkdgwSpym815GNSZwnne7TtBs0p9u00+fDeRGyzJPW/K3lkDilBInTWnyPR+USxxUOX/3ZuJDwJVjnK1/uyRFXFKR1zaZywV4+iCNxfnbwNrySqch+HRHya7HKGaW3joqhNH5tcfu85ZE4qcsK3sck47H3rTdkxkDimD0SlTWe3Dopf+XO+BLM86wTREXEQEljN+wr/ePCVClxskgkxbz5z/21Z/+d/qPkHLDvv+x/W2wMqmAKcdbVbuQ+Gk4G+NbZwpE4ct5/XG61JI7E6qPDc26ySZxbt94hq3flWGLdssfua8jmv/wn//t29zB/9j9NoMTR+/vLkmgbg6KP7Rslo0hSwy4N7un4zptGv9xOLCprHHmDxGkHSa/1IFTiAMCwIHFKR6tCrkvkbpG2RZ/vg5ifn/eup9FqnSxU2Y14Sam9ccUgcZrCex3ZmMQ5LY+3xfmEcW+yCBokTjlB4rQW3+NRscRxu1LzVdXkSVzGJNLXBVvG9SKKru+uFxMh/QTyJLaMdX4+4u5zW5pklThZBE5En8jJcuz28iVlHCTO7k7n5ob8lYMuI7Kt37z1w+F5D/BKhX5Z4VacVClxUrcd8Xc++4u5+irOEP2CFJMpvfMQig1Pd2eD0Pshxx+TOP1CzCKLxJFEHsdzbpIlzq1bh2X5gWPpxu5ryJmZzhflT7jNiZM4PyhxK2/SovsbRZIadmlwT8d33jRIHCROG0l6rQdhTBymmWbapsg0Eqd05iRyl0jbsmfPnvCZn8yg18PVq1fDpZLRsXN867YwJyW1YZA4TeG9jmxK4jzpVtm86q+yGZS+bbjINqNlVfS4lT+vyvqD9vnkaVkmtlKP1z1VQ1tx5JQKJd923H27xzdwHxUFidNafI9HzRJnuOqN+BgwtkjodXNmE6+m8UiYr1hdiaV04VZ4vx4RYlfUaOxtu2IkLmH6BdjAMXG83dhtb79//CFn+xmOvYqMSXdqm8tyzHLQZWTzki1RstIvW9ohcXTeoBL1Ajkrab3EUUGjNsZzbvwSx3Pccmyr8kercf5+7xbnvoZMsMTR+5lX4ERR+TNqJDXs0uCeju+8aZA4SJw2kvRaD0IlDgAMCxKndBYlcpdI27J///7wWZ+MdoPmW1eTVsWj6Hg7vnVbGO12ujYMEqcpvNeRbanEiXhdZU5GeZFJ4si2PB5mG5Ulnm271T0+vGP0OPfr1UHb0eOTdXyiKCKpQqmKIHFai+/xaIXESasY6YkRR8S44764+4rNT65qiZIsTIbYrytC+ip8BmcYiROf179uEFf0lHjsRTMmEufWrByzHHQZufURW5DkYTNWsZMmWvq6RMsjcTJ3p6bz5ubmZLb3QS6S3oCQSRLHqVAaKGQi+sVMCRKnY6YX1jJKHNOVY956rNzzqY9rOCt+X0MmVOJol2i/KInWi/KSxL7/upy8Pvtkj647at2qJTXs0uCeju+8aZA4SJw2kvRaD8KYONswzbQN09mnkTilo19c5S6RtuXIkSPhsz4Z7TLNt64mi8SJKmRHIDpmU20YJE5TeK8jG5M4kvOD7IrMO++TJFaySJwMLibYV6wixxExWyJF/rrb6xNACXKqMO6xVRgkTmvxPR6jI3Ec4eDrziu+HXtfjojxCIlEYTLMfh0R4lu3Lx/5jFlY/IL5Z33j5OSROM55TxQwA5YrcuwlZEwkToldqn3+1l8PH4PcxBv/4xLHFQOe+TkkTt8yfWIhIBQqGb8oZkmvKzUlSeLkqBLaoiKJ0+lMm4V/ufm/y79t+iSOHOPf7N2HHqunO8/LfP2lVGxb09Nds/Ib/5//aJ3rD0usZfqi+1JUitjHGN1uM0ikaNWKPe8+icqS6DYdj0ZvU94rcY49ECh6W5JcKiJx3Coc/feg6hrf8u7xFDl2FUEfknxJ4q7nCqVhSWrYpcE9Hd950yBxkDhtJOm1HoRKHAAYFiRO6SBxWhod7yaNQRJncXExXCqZAwcOeNdtYbTbv9owSJym8F5HNilxUqtkQtK6PUsaE8e9/XXZTtI6dlWNPc9eR+OKo75KGY/E0W1Ex+8VT3IStrpO85yTusb4QeK0Ft/jUbHEyVYRkknieLr3GswAidNXTSOJbd86zmH266wb7+LNykc+55E2LnkkTob7GyZxG1mPveSMicRRyuhSbfNyJjmyRV9FjC0zYvOUW7duPRPMunXrsDtPppMkztY2Zf62BHIqXvTfW9sX9N/2/L1777olN8smhkqvKzUlUeLEj1+R6b8vKwfHLpNB1Yvcpr2ddYPbK5M4kpkzWiVjM1DirHSn4+t78if/cucn5K/SlMT5nDVtL6+VYPbtvmhVjEsRiePed51OQ5dR4aTSZa/eYFHk2F0xlJQsx5aFpIZdGtzT8Z03DRIHidNGkl7rQRgTh2mmmbYpMo3EKZ0kiXNDotcarc6bv//Y9bce+/Mmik77lvNEfyznu9+tiHZzloWNjQ3v+ppjx46FS/lZX183u3fv9q7bssxLasUgcZrCex3ZqMTRaHVLFpMjJHUtliRxYjfLhLterBLIM9+X3BLHs13ncPu24d6fpPtddpA4rcX3eFQucfoEzQChsBWfQBhGprRZ4ni2/9WvfNn8s8XPmOWk6qAwSJxWY05I5MCHSbwrNfl3QjdlFo5UUIERzol1w5VGsN9tieNdz962otPhrFT+q3fv+zVZRXYxVLa/TA6QOHIqY4JpEHpfy5U4s6/++HTn69vTQewKkT6JI5vpdae2ok5pa53flZ39STm+C2ZtxXS3b9dEoqMJieOLHoe9jF3lohU69r7dbSt5JY7blZq9vyIUOfak7tx8Gfb4IpIadmlwT8d33jTaADGxqKxx5A0Spx0kvdaDUIkDAMOCxCmdJImz3YtAizl07sJlibGS53HRH0bpc6Xu6I+rfOfcaFfeWl2Th4MHD3q3pYLm6tWr4VL95Ow2XK87ffel6jTSKGuQOE3hvY5sXOJEedKY867d8JBl/JpgGdme7WjcihqNK2QSK15kW0+e9h9fmsTxjZsT24wcpFtllCqKKgoSp7X4Ho/KJU7/APsqBFK65vIJBGc7+aTCEBJnmP2mihDnuJxuzxK7eAuTLHHK704NiZMbs2fYLtU++cvbA9grgWBIJblbNHeejUoO2b5WowTE1kuQICptgvkWgWQYQLgdvWA9JpFdFM66ZJtBEkeR+b77YCPze5KsVIlz5hdufml+fTp+7Pb4Kx6J03lMH+uV7vY6Op6OzdqCXaFzx+/J3y0pkGFMnCokjluVYq/vVp7YssknNIaVOFnWGUSRY9e/Oh3NOy2JHmP9q69d7WLtOUnU1dywJDXsjksDSJX4zpsGiYPEaSNJr/UgjImzDdNM2zCdfRqJUzqTLHGaYrfEd85Tq2d8nD592rstzZ49e8zFixfDJbcpMO7rQcnEYJA4TeG9jmyNxLGjQud8f7diik/GeCWOp1uzNGISR48hg1QaWuLIhDsfiQMOvsejeokjicuGHl/9whfM8kfiMmchoVuxnkDIXl3SnyEkzjD7TRMhKYKouMRx5/WvG2TQeD9InDLYvCTHLgdfKL8aSIUQr5hIQOVKuFpATELcunXYkTWBvJFlDjsiJDb2jdyk1SFbJiFc7++Hs+OE+wi2ERLbTw+90NYuBWQ3hbIo2SZN4ii3br1DjuGCe1ySVflnN1zKJ2aGkziyP1vIhInkgCUMtiWOzgi7oIsJOTn+eVnwzf/kJ7/3X2yv990b39/p/FFdR2lA4thSKgtNSRx7v77o/Uoji8Tx3acqSGrYHZcGkCrxnTcNEgeJ00aSXutBqMQBgGFB4pQOEqcZvJ+XWj2jXaTlYXV1tW87brRaR7toU3mzd+9e7zIDot+D9fvwxGCQOE3hfV20UuJY0QqYGB7pUbrE8az7+uvGnJfbT6cJFmddJA6UgO/xqEXi+Kpx8hAJBFcGffVnP7dVObKwqPv4WiCHtCuyeOXJMBJniP3mlDgxieJWyaRKnO35wTH0nfOvyf63t78gx+bOj20fiVMGQ3WpdircyDiT9AUnS0r7IlkySYLEvT1q6M8jLLR7gvdKdID8aB17WxFp20w6RptB23AlTiSkBpH12JU850SpWuJkOXb3GHSeLv/HJHkEVx6SGnbHpQGkSnznTZNJ4jwyv3z0PUtLY/fFW2WNI2+QOO0g6bUehDFxmGaaaZsi00ic0kHiNIN+f/add7O8vBw+47MzMzPj3VZJGcXGjaEwSJym8F5HNiVx0kSGndjYNZ7ux7J0p+aTKUmJbc7ZX94xcZA4UAK+x6MeiaPpkwZZUPFgbSOHDIoLkeEkTuH9pooQ57i0mibY72fMcmJF0nb6xhuKCO+fK58GET9fEiROGQzVpdokvFkW7VIt3pVauxgkSFyJoPPShIV2veXKAzdNS5wk+VHk2JW04/dhr+PbppJH4hQ5dv233pa0rG6vrK7UlKSG3XFpAKkS33nTDJQ4hz7x2b3vmv+Z9V6DxvKNw+cuHAlnjQUqaxx5g8RpB0mv9SBU4gDAsCBxSgeJ0wwHJL7zHlTK5K3G0XF09u/f791eCXG7oh57DBKnKbzXkU1JnJiYEQaJijTp4ZU4krT1vEmRP0gcaADf41GfxNF85HPm12LVJcn0ulvzbCOLDOobA2ZIiRPOz73fDCIkUcR46BMtSXLJun8+GRTna+bX3O1qkDhlsSkfmnJdkis3V8OVx52iXarFu1JrF4MEiVut4SZNlmguSbQqRMdciW5zZUKaBBl0jBGDtpFF4hQ9diXt+H34BFkaSfdjmGPXqh0d/yZJ5mjydj+XRFLD7rg0gFSJ77xpBkucc8tn4o0aLy+Hs8YClTWOvEHitIOk13oQxsTZhmmmbZjOPo3EKR0kTnPoOfadezM/Px8+47Oj3arpGDi+7Q2RDckeyURhkDhN4b2ObEriuKJC0e7KYss8acyrjuzxSRFX4kTSwx3TRsfTiapqtJs23fTrsozud6vaxpE47hg8qfJJtmWDxIES8D0e9UqcMNHYN191hM5Xv6JC4XMy37/eVj7Sq1SJr6/TXw66NOtfpwSJo8m734wiJOjazN5mdB5kXqyapk9O6bpfcMSYHI+say+j8qz/fMt0kijTIHHK4tacHL/cgVyZpHEZtBFU7nOuaAVPW0kTJIOqNWxh4W7Hbfi3pUXZEseVTe42kuRHxDDHrhSROL7zmvYLN9/9GPbYbVTo/AWJVuC4x6bbGZakht1xaQCpEt9506RInJFu1EhFZY0jb5A47SDptR6EShwAGBYkTukgcZrjpMR37gMZo9U1edHXR8kiZ14ycRgkTlN4ryObHBPHFSKpyPJuV2oanxAKkOWz7sKWNY77MadDieLKIqVP0iBxoHx8j0cjEoeQpIyhxDF7JXIHckVLwScFbWiX+5w5bR8EMk2QKLaksGMLC1dKuKKkTInjigp3vruNNIkzzLErRSSO4juvKlDc7eu0r6s0Pc5hjz0JV4y557wISQ2749IAUiW+86ZB4iBx2kjSaz0IY+IwzTTTNkWmkTilg8RpDv2eqF1v+86/OXjwYO5u1ZT19XUzNzfn3WbOaBWO/tBr4jBInKbwXkc2KXE0mUVOgsAJ4lTPbKGC5HQGkeNsO1EKeXArdZA4UAG+xwOJQ1qVMZQ4Sp4u1W5eC1eaFPRCWy9m5b5nStufCK4A8Ukcd5kotrBwZYJdueEKAVcm2DLDnhdJA3d9TVS1omO2uPOGlTh5jl0pKnHc/eaNT+LkOXb9909JviTRbtei861oV2z2dnU79vwiJDXsjksDSJX4zpsGiYPEaSNJr/Ugk1iJc/HiRXP69GlCSo8+tyYRJE7pIHGaZUbiO/9BZmdnC4kc5dq1a+bEiRPeyhz9PM4whs5EVuEoBonTFN7ryKYljka7TdOuz153bYtMa3dnUSXMoGj3aG7Xa1uCRdbXKhp3+zrtduEWJehuzV5e/v2qbE9lT6wiR26PySUkDpSP7/FA4pBWZUwlTq4u1SapK7WIPF2qtbkrNSWLxFHsio4otrBwt6P/VsGiDf865oq9nsYWKb5ta+xjSVrGF1ekpEmcYY5dKSpxFN1WXpGjy0fHUPTY9a87b1Dc+1yEpIbdcWkAqRLfedMgcZA4bSTptR5k0sbEmZmZCf4SUlW0gTd6vtmM8zQSp3SQOM2jY8z6HoMg+tl548aN8BVQHK3QuXr1aiCFVO749mVFK4QmsgpHMUicpvBeR7ZB4pB2BInTWnyPBxKHtCpjKnH0okSuTTLl1pFwpUkia5dqbe9KTXElQJLEUSmQVvGSR7TYFSNJFSn2sbjHaUfXfdGado/LFRY+IVH02JVhJI6i0uWXJfY+kqLdqunyNkWPPet6KoPKIKlhd1waQKrEd940SBwkThtJeq0HmaRKHG0s2717t/c8EFJW9DlWRuPuKIHEKR0kTvMclAzs7UGrZlZXV8NXQXH0s0k/i337cKIVQhOLQeI0hfc6EolDoiBxWovv8UDikFZlTCWOcvOq3A+5I4NycyQu7CtgjyRLl2pasdN2skocxZUtPmGhgku754qW0X9/SKISyJYdbvdc2n2XLTJ0P9rFl43KC3tsGF0mkhq2qCkicZSixz6sxInQ86v3xz4GzT+X6HEM+iVc0WOPzqm7z+jc2t2vDUtSw+64NIBUie+8aZA4SJw2kvRaDxI1HNmM63TGhmZCho49+LlO24zjNBKndJA47SDTDwW1+s5+zWdFZe+pU6ey/rhgYrtRizBInKbwXkcicUgUJE5r8T0eSBzSqoyxxDGnJHJHBmXzbLjwJHJJIudgYPRCHAB6JDXsjksDSJX4zpsGiYPEaSNJr/Ugk1SJg8QhdaVIg+4og8QpHSROe1B54nssYlERo92hZRkXS18vc3Nz3nFxEsJ1lGCQOE3hvY5E4pAoSJzW4ns8kDikVRlniSNvfnJ9MjAT2ZVaxAmJnIPEaKVO27tSA6iTpIZdviim4ztvGiQOEqeNJL3Wg9gSR6dtxnHazYEf/e/s1yQhuXPvkz/c97xSiaN/bcZ5GolTOkic9qDfH7P8WDCWI0eOBJ+vOg6byh39d1T5mjM6No/2OjHxGCROU3ivI5E4JAoSp7X4Hg8kDmlVxljiKIO6VLupAx1OMmldqo1CV2oAdZLUsDsuDSBV4jtvGiQOEqeNJL3Wg0x6JQ4ShwybJIkzSSBxSgeJ0z4yVeSUHJVHCJwQg8RpCu91JBKHREHitBbf44HEIa3KmEucQV2qbS6GC00yg34lRVdqAHGSGnbHpQGkSnznTYPEQeK0kaTXepDol8E24zqNxCFVJE3i6LTNOE4jcUoHidNO5iS+x6WK8N3ewSBxmsJ7HYnEIVGQOK3F93ggcUirMu4S54BE7ow3pX0xGmGSLqy1QodfMQHESWrYHZcv2lXiO28aJA4Sp40kvdaDUImDxCHDhUocKnFKQrvt0u8y+qVVe1iQu9QXJE7zHJTk7l4tR7T7tGMScDBInKbwXkcicUgUJE5r8T0eSBzSqoy5xFFuXpP7I3fIzsR3pRaxV6IPthu90AaAOEkNu+P0RbsqfOdNg8RB4rSRpNd6EFvi6LTNOE67QeKQYcOYOEicEtBG+xsSuRsDg8RpD/p8VuHie5yKRL/P6xivkIBB4jSF9zoSiUOiIHFai+/xQOKQVmUCJI45I5E7ZGdzXO5cGfguMrggBugnqWF3HL9ol43vvGmQOEicNpL0Wg9CJQ4ShwwXKnGQOEOi1w5y+Jmioqf1yOtiEiROhHbZrWOvDhqbdVAuSvS7qlZiwQAMEqcpvNeRSBwSBYnTWnyPh7ln7/2ByCGkDbl91x/yPk8lYyNxPF2q3aLkehu3SzW6UgPwk9SwO85ftMvCd940SBwkThtJeq0HYUwcJA4ZLoyJw5g4Q6ACQA49V1o/zqe8LiZJ4kSohNHHRhsd9P4mVVbpvEjc8B01BwaJ0xTe60gkDomCxGktvseDkFHJOBWr2F2q3ZQLRMMvd7Zxu1SjKzUAP94LcskkfNEeFt950yBxkDhtJOm1HoRKHCQOGS5U4lCJUxBtwE8a+2ZQdJ1Wf/eT18UkShyoGIPEaQrvdWQRifPkaWNefd0Y+S+O3PDqeZn/pH89khA5X3o+T/vm1RgkTmvxPR6EjErGSeJsnpX7JHdKQ1dqHq5KogdeK3MAoJ+khl2+aKfjO28aJA4Sp40kvdaDMCYOEocMF8bEQeIURCsx5LALpdVdRcvrAokDpWOQOE3hvY7MJXFC2ZCF11815knfNsh25Hyel/MUgcSBBHyPByGjknFyHbeOyH2SOxVkJrwRtjkliR54rcwBgH6SGnb5op2O77xpkDhInDaS9FoPQiUOEocMFypxkDgF0XFU5LALpdVfbOV1gcSB0jFInKbwXkdmljinPZU3abzq2Q7ZymlL4ChIHEhgVeJ7TAgZhcxLKkF/CWVXftQU/YXfhmS3dRsZw+gb71kJXeZB2SQ17PJFOx3fedMgcZA4bSTptR6EMXGQOGS4MCYOY+IU5JpEDjue29/0VvPt//mxvtud6PeD1iKvCyQOlI5B4jSF9zoyk8R5soDACXn1tGd7JAgSBzKi7Yi+x4SQUUglY//bFR8156xk2bmNjHHoNg/KJqlhly/a6fjOmwaJg8RpI0mv9SBU4iBxyHChEodKnIJcl8hhx/PtB/60efN/8UN9tzvRdVvLoY9/Zj72OpHpcBZAYQwSpym815FZJM55j8HR7tJOO2Pf6Fg5fYvKDXSr5g8SBzKiPwTXdkTf40JIW7MhOSmphCKDUZaUI5JZ5zYy5tEBUAHKIqlhlwb3dHznTYPEQeK0kaTXehDGxEHikOHCmDhInIJ4e3KYum2X+c/u/xN9tzvRdVvL984v73/k3IXr+voI/s5/9mA4C6AwBonTFN7ryFSJ46nCGVhd41n+vCN7NCowYsvJxKvnk4WP7Tui/bvbeF0mXLHkJtd+ZT82KlnsMWx03Wh/KrB84wX5julJ2d9AZB/28tHYOe7mfSJtKzmOPQoSp/XoEBN6DUbIKKQy9IXge5OqMXSlNmGp9AkNE0dSwy4N7un4zpsGiYPEaSNJr/UgVOIgcchwoRIHiVMQrU6Rwy6UkahsOXzuwpHwnwBDY5A4TeG9jkyTOK5weF2mfcvZCdZ5PZQjrmSQaY/r2Eblgr18GNs/6HYHbcMrmYrs1xEhr9oHEaLruBU1PuxjyiNxUpcVvI9JxmO310HiAMAooG9GvjcpQqoKEgfKJKlhlwb3dHznTYPEQeK0kaTXehDGxEHikOHCmDiMiVMQ7etbDrtQKuknHKDNGCROU3ivI9MkjtuVmq+qJk8y+I5AqLiVMZnWiyi6vrueI0JcAnniLLN1fuSvu89ImmSVOFkETkSfyMly7PbyEiQOAIwCSBxSd5A4UCZJDbs0uKfjO28aJA4Sp40kvdaDUImDxCHDhUocKnGGwNulWkpa3ZUaQFUYJE5TeK8j80ocX5VM1rgVK7ZIcOe51TR9EkaOa6s7ME+VjS2bCu/XI0Lc47LXd8WIK2FcAebuO3ZuPfcpVs0j/x50n7McuxskDgCMAokS5w1v2GP+0B96KyG5s2vXm73PqTBIHCiTpIZdGtzT8Z03DRIHidNGkl7rQRgTpxmJ8+DccXPXvfebO2LHI9PTx839z53zrjN0njsl+5Tt982T2+3jmD7lzG8wc49Z56dj7przLNNwGBMHiTMEOlaMDuAqh58pNyQHJAATh0HiNIX3OrIMiZNWMRLJg5izkAl3O7F9OfMd39F3HIOESeH9uiJElksas8eXYSSOO89dN4greoY8diQOAIwCiRLnrrv+uHn72+cIyZ23vOVx73MqDBIHyiSpYZcG93R8502DxEHitJGk13oQKnFqljjPqbyJH4MvKnMe9K1fJM+dMvum7w+3/RgSp+RQiYPEGRI9L+sSuQsDo8uo9AGYSAwSpym815G1SRxHOPi683K3Y+8r5jQ8QiJRmAyzX0eE+Nbti+xPq2TOOxJGySNxYufdc39Tlytw7EgcABgFkDik9CBxoEaSGnZpcE/Hd940SBwkThtJeq0HYUycGiWOIyRSc285Iuf+aXu7SJyyw5g4jIlTAhclchcGZlUCMLEYJE5TeK8j0yROloqQTBLHkQpZSJQ4MmHvP4iz/a3jHGa/zrqJ3ZHJvnzSxiWPxEm9v2ESt5H12K2MmMTZI9HrEc2M9e/dEgAYY5A4pPQgcaBGkhp2aXBPx3feNEgcJE4bSXqtB6mrEucPvv7vzNde+Z/M7/+u/dO/emlU4jx33Ok6LWNKECpInGpDJQ6VOEOi1TVy+JmiDU4AE4lB4jSF9zoyTeL0CZoBQmErPoHg3JaFkZA4nu2/LpfI5+X20865Q+IMxV7JnGTg9yHNjh07vil/lyWzEqQOwJiBxCGlB4kDNZJ0ITOKDSB14ztvGiQOEqeNDPzSUteYOCpvoufEv/7b3x8InTd/245wbo8y96f4pt3UI3HOmX19Xajdb+564lSs0ubBYMwadzmfdMkXJE61YUwcJM6QZKnCiUI1DkwsBonTFN7ryDSJ0zfuipAqBHwCwdlOFqlgJ1VqOPvcEibD7Nd3P5xlYsclO7K7PUvs4i3MIIlTdndqWe53SyWOjh+39fl65513bp44ccKcPn3aLC0tBdctUebn54PbZ2Zmto47FDrzEpVAADAGIHFI6UHiNIaW1S5Krkt8556MX7Rveb2wK3Jh5tueBokTlzdRkDjNklniVIktcez89t99r7nx6ieDSp2q8TU01yJx+qpw7jf7nvMsF6Rf+NzxxLm+5R6c07F1onFuotxv7rj3MXP/c73lH3zCne9kS9b4JM45c/8Tj8WOu7ft+HH0JRx/x72/OsZP8rqyL2edrX1lkjj963fk3LiSrKpQiYPEGYI8VThRjkkAJg6DxGmKYhJH4soG5XW57bQjJZ6UaV+3YpFAiM2SCXvdtKSu60gLW5gU3m+aCEkRRMNIHHeeu24QZ/+xcW/Sjt2Tlkkc/W6v7TrB/lXcXLx4Mbw36dy4cSOQPMeOHQvW37lz5zfkr37H1/YiABhhkDik9CBxGmNgIycZ66i4y1su7duOBonjaaSXjNX9HEEGvr/VNSZOksSx82/+3n9pfu9f/K/mzturqdBpSuK4MsUnZWIJpM/95q5AfPQvq8LC3p4vd82dG0LiHPdUDkWR40qohkndn6Tvvg/sZk7PQYrESeumTmWQvXwFYUwcxsQZgjxVOFF0HYCJwyBxmsJ7HZlF4viqcfIQCQRXTKh0iCpHnpRldB8qh7QrMrfyJLaqTNjzgjjSwpYehffrbDNN4sQkiiRWJSOkSZxofnAMnnNu7z86bpvY9tOO3ZMWSZxjU1NT35K/QVXNsD+o0Wub6HuSbPd1+as/vACAEQWJQ0oPEqcR9BeNvvNNJifaT24efNvQIHE8DfMSJE6zpEqcOsgicez82xf+YiB0bv3+RriF4WlK4sS7MxtUhZMhscoUa1vaFdvW7ZrHzL6iEict9x7vq3DJInCibIscXzdzgxOXOBmP23O8ZYZKHCpxCpJYhTN1264gvnlhaEiCicMgcZqiuMTReKRBFmLywCMmknCFyDASp/B+M4gQx8NsVSe5gkZx1+8bbygivH++bSThnq8Rljj6fd7s27fv1urqanj05bC8vBx0xzY1NfV12QfVsAAjChKHlB4kTiOckvjON5mcDJQvHnzb0CBxPI3xEiROs2SWODptU+Z0XokT5Td/9C7zlU/+VfONX/kH5vadwx+Pm+oljisqhqsMsYWQW9USFynbgif3mDiae63uz5477sx3RJSnuzitBIrmPzgX75Zta32nq7SgamZru70u0mLzJbbEid+vuBxy102qHiojjImDxClIYhXOdz7yZBDfvDBU48DEYZA4TTGcxNE8acyrGW2Ir7u1IKczCBVZoMxKnGh+7v1mECGJIsZDn2hJkkvW/csicl51t6vJcOxuWiBxzkrMwYMHg+7QqkDF0D333KMiRyt9TgR7BYCRAolDSg8SpxG04d13vsnkpB6J8/HPzMcb/15eDmeNBV9C4rSVzBKnSopKHDsqdP7dp+fMv/+/fi7caj6aqcQpV+IMSnkSp3+ZpG1rMlUauaJn+lSm9VxRsy1jnGPeqiqK4pz3vvnlhUocJE4BBlbhPPwj/zQI1TgA2xgkTlMML3HCRGPfvO4YCJ1WoaDzfettRearnPCtr12a+daJuQxLcmzFkRZ9EkeTd78ZRUjQtZm9Tfl3cB5kXkzCyO2unNJ1XTHmkz3e8y23eUWZJuOx22lY4gQVODqGzcZGedX7PtbX181DDz0UiRza5gBGDCQOKT1InEZA4pBaJM73zi/vf9f8hY3txr+Xx6oc+0tInLaSKnH0r00V02VIHDtrz3xXIHT+w699LvPxjKXEee6ceXDuuNnXV7UyhMRJ7S7NFi7O/Uvsusxd7jFzV5b1nGqdLYnjSCHfOEPxY65OnjEmDmPiFGBgFc6jz34hCNU4ANsYJE5TlCZxyHimQYlzRIWKipWqBU6EXt/dfffdUddqvO8AjBBIHFJ6kDiNkChxHrljvHPwjR3zR27vmG+/rfdXp33LjUt2TfkfZ0ktEkd5eP7inkMLL8+p0AlvGhu+hMRpK6kSpw7Kljh2vvzffrf56ssnzX/80v8R7s1PMxInY6VKnjx3yiNt3AwhcXxVK0lj8WRZN4xbVRNL0nqOrNmSOG5XbKlpTuJMAkicXOyVyOH682D357YkTk3VOG+U/KIk2qb+W28bd+6TvCR5SzAFrccgcZoCiUMGpiGJs3fnzp2/o2PVDLrmWunax9I1K+HtXtYWzHT82Adkp/5dk+yWAMAIgMQhpQeJ0wiJEudXHyHjlLfu8j/OktokzjjzpWSJQ0htUaHzO//gx803f/uLwevSRqfd1CFx4hUh/qqRWAJxcb+5Y/q4ud8aWyaIR17cce9jZp8sd39Z3akhcXKFMXGQODmZl8jh9mfPfUe3BE6UGqpxJk3iRPJG7+uXJUicEcEgcZoCiUMGpiGJE3yW6vVHIn1SJkXirHStZdPynujfJyUAMAIgcUjpQeI0AhJnQoLEqZYvIXFIy/La33ggEDrfWv9S8N2sqUqcvvFgYhKkP67s2JY+jjBxuiArbUycXBKnHd2pbY+VU3+oxEHi5ECrcDYkcrj9+Z7jL/dJnBqqcSZN4nxaEt1XJM4IYZA4TYHEIQPTgMTZq92ozczMyIs/AW9VzWCJs7Yw7Sw/KF1z70MP3ZLj+KpMU40DMAIgcUjpQeI0AhJnQoLEqZYvIXFIi3P9zCPmV/9e17x9z1TsdVuLxOkbF0dzv7nriVNxCfPcqbjYCJfbEiYp4qIZieNuPz5vK86xq5jKsp4rtLbvc4ZjrimMicOYODnIVYUTpeJqHCQOjAQGidMUSBwyMA1InOCzdHV1VV78LmtmJVHGDJY48a7X0tI1z128GE1TjQMwAiBxSOlB4jQCEmdCgsSpli/NvfGSr/GckDbln/+VN5rjD23/qr0eiSPpq8bJGFtOeETI9j5cUZQkcbZv3xZIw0mc/vt2v7nL6gbuQVnXnR+s71TZaHXO/VvbVcnTP+6PLa5cwXOHJcUenNNj6nVJp13N+auDygmVOFTiZCR3FU4UHSfHt04Y3aZuuyiVSJz3LC3tfmR++aj+DW9qC0icEcUgcZoCiUMGpmaJs/u222779/1VOGtmbaVrpp1rw3gGSZw1sxBbN6XrtZCHHnpoc+fOnb8p6wBAy0HikNKDxGkEJM6EBIlTLV/64B1nfI3mhDQdHSfnqy+fNIffGgxCGkttEkeiMsPd/8Co1Ihtw5EtWlUTSI/BwsMdk2crW7JmSIkjcYXKoGzLJ1+F0uDEqo9yiLHUcYiGSCRx5IuBkQu1IOvLy8Ffo321hxnn6dX5+WB6UM51OiflRB0tIzc7nVX5a9y0XOIUqsKJosv41g2j2y5KksRRuaGSI7r9ByV6+09Lfje8TXNJouPMbHHX277jzMGPvRC8Pg6eeeHWHX/65feFs1w+LIm24woV376+JPmQxCeZ9Pjsbdlj32SJyh2bPPtP2/cvh7fBEBgkTlMgccjA1CxxjknMpUuX5IW/TbYqmkFiZsV07WW7WRSOMYuLi9E6ByQA0GKQOKT0IHEaAYkzIUHiVMv1453d1z54x6qvEZ2QurP2zHeZf/fpOfMffu1z4dcsbWvurxaoU+JoehUi8WPwJmGMmEQh48mWuEiSHSVKHI1PJMWjXci5MkX2PUDk3DH9WOzY3C7k9LhSz2fiOD3l5LEf/IvmmuxHdkYaToslTuEqnCi6jG/dMMNU46iQyCJxnpPYQsONioyAQx/9if+X/RrZ98OfeCWcZeNu35Yo75QM2pdKEbeCxhUpn7Oms2SY/aftW29zjxdyYpA4TYHEIQNTs8RZvP32229tbGzIC3+bPokz3TUrfePiDJA4zrLTC2vhjMFo5XW4zikJALQYJA4pPUicRkDiTEiQONWjIuc35t54KuxaTcfIIQ3nH/y53Tf+l8e/zSTl5/7KW4O/v/1337uVKqZ/63/4E17ZUmYicfPYvbeFX616yFMz+NsGidPLuUDm3HWvKz163X/d/9zgqpGgezJbfMh2ovF1YhUxlrzo7c+ap/uSdXrbPFWKxAny3Cmzb1q27e4ruF+e5YOcM/c/EZcxd9z7WNANmntsfRJHI+dLBVLfPre24VmnpHz///i/mP/nzj36JCMtSIslzlBVOFEqqsbJKnHSEq3XkdfGZft1ct+HFr4WzbOwxYcmkkBZ97u1vxB3e3kTSZwi+0/bt1YcwZAYJE5TIHEkf+L7r5mTT8yZM08eJU7+xn91wHz4hzpbOXG0Y+69e+u5Uupr87bbbvvt/q7UbIkzbboLKyZQMHkkzkrXWq5jprsLpjttj60zHdy24nE7DzzwwM2pqalXZTkAaDFIHFJ6kDiNgMSZkCBxYELxfvmOcvTo0fArSLX8/u++7hUvw+Y3f/Qu85VP/lXzjV/5B+bW78d/lefSHolDxiVz8vyRJxJpSVoqcYauwolSUTWOioisEkfnRd2CudUq+m+9rV/i/OjHfj+aZ2GPTWMLEft2TSRAdL52b2bPi8SP4hMpsxIXe/u+Cpki+8+6bxgCg8RpiomXOH/qj66a5z+w27zY7ZAcefzRjvnr7+vMLn6wc7SMHP+B4H3VnD17Vl70cVa6KllCeRORQ+KsLdjCZlCmTdcxOXNzc8E83zHnyUtPdQ7KdgCgIpA4pPQgcRoBiTMhQeLAhJJZ4ui0TZnTZUqcSNy877tvi4mbLMfjBolDhsmPPfVhfWKRlmSz07kor+u2UUoVTpQKqnGyShyf8LDHtEmUOPo+Kzfb1SiuAIrmufuMqmMi3GO157sixRZDNoMkTtH9Z903DIFB4jTFxEucj/zXx7ySgtSbH5/pPfeWlpbkRZ+BzBJnzSzkGNtRYw+Zc/r06eC2n/rL/uPOkxe6nauLHyy9CzoAEJA4pPQgcRoBiTMhQeLAhDI2lTj/9oW/aH7vX/yvZvM//V641XxQiUPKzrGPvWC+uXOnkScTaUFudTon5XXdJnZLbkjk8PrzjtmXvKJmUCqoxnHFRCQgXKHhExN5JI69vne98K9P7tjY69oSxhUpvnWVQRKn6P6z7huGwCBxmmLiJc7H37/H2+BO6s0P/6nec+/SpUvyos9AZomzYrqx5bJke1uLi4vBbR/9C/7jzp2nOpdkewBQMkgcUnqQOI2AxJmQIHFgQkmVOPrXporpohLn3/y9/9L8l+94Q0zcFD0eJA6pIs8e+eNmQ59jpNFoFY78VWnSJlQqyWH159vufodX0mRJydU4WSWOW5Wi2PIiTeJE85P2p7gyJC2DJI5O+xgkcYruP+u+YQgMEqcpJl7ieBvaSe05frT33FtdXZUXfQaySpy+5XRMHLtrtrWguzZ7frDMQm+Jixf18qNjPvyD/uMukqXjrbueARh5kDik9CBxGgGJMyFB4sCEMnKVOL/9d99rbrz6SfMHX/934drlgMQhVeTeJ39YWw/NSYl8CAS58fTT2r/GxOT68eNb9z0pv9rpnJcX3ZmK0sZrZG2AWZfI4fXnu2d+2itosqTkapy6JI5GK1TcahdbeBSVKEpWkYLEGVEMEqcpkDieRnZSf/7SH+0990qXOCppFrqmOz0dLB/JGZcVOYbtbUnCPtWqkDh0qQZQPkgcUnqQOI1wRuI7314RQEY3SByYUDJLHJ22KXM6TeL867/9/Wb2e94QEzdl7l/RaTdIHDJsVOK4z6vr168Hf23GedonSD2ZtOvYSqpworzp3oGDMJ+SZKVOiaPbPh3+W+NKlEGCJ42sImWQxCm6/6z7hiEwSJymQOJ4Gtk1/+Px/ebMk0cnPs/9hfvM80/JOfngdl7wnK9hE3WnptccmcgscTKy0rW2JZleCKp1dIwenf7In/Mfd5EgcQDKB4lDSg8SpxGQOBMSJA5MKK2txFFx87VX/qdgXh1QiUOqSJLEmSSQOH1UVoUTRbfh23YY3XfWrlgqlzgP/ujf0OqgaDk77jaz7DOJrCJlkMQpun8kTg0YJE5TIHE8jeya7g+e9i4/adm/f8nc/9ZyBvYflB+f6T33VJpkoiaJc/r06WC6zPuPxAEoHyQOKT1InEZA4kxIkDgwoaRKHP1rU8V0JHGun3nEdN+5KyZuyti+TdI0EodUkTSJo9M24ziNxOmj0iqcKLot3z7C6DFkoXKJ8/BP/A2f0Npa3sGWLBqt3NHjUd4r+ZLkpfDf0e1KEYljH0O0rSL7R+LUgEHiNAUSx9PIrkHi9KISR58Tb9jZCWSOnb/+vs7s4gc7R8vI8R/ozOp+zp49Ky/6DGSUOGtRV2phd2pRN2l9JEicubm5YNp3zAPzVOes73mlkfm8pwGUDBKHlB4kTiMgcSYkGSWOvs70y8qg+LahuS7xLR9lWQJQN/rc8z1fg9RViXPr9zfMt9a/FE41AxKHVBEqcajEcai8CidKSdU4KiIqlTiH/vbf+VfhMnai/bjoNnRb7vK+6Bg7EVlFiq5jLxclun9F9o/EqQGDxGkK73UkEgeJEyWSOAkp9bW5c+fO35mdnZUXfQYySxy3e1LfcmtmYdpeRhLKnne9611/MDU19Xm5LReLT3VO+J5XGiQOQPkgcUjpQeI0AhJnQpJR4uyRJHX7MWwWJQB1k1ni6LTNOE67QeKQYcOYOEgch1qqcKKUUI1TucR5dOH8/yE32/vQ2ALGRbebJlJcCZRVpCRJGvv+5d1/1n3DEBgkTlMgcTyN7BokTi91Shxh8Y477ri5sbEhL/wUsnan1recZFqW1TKbgDWz0nVFz7RZkPnr6+vRbXnGogtA4gDUCxKHlB4kTiMgcSYkObpTuyTxLTdseA1DE7SiEqcNUIlDqgiVOEgci9qqcKKUUI1TucTRabnZroDR7er2B7FX8tMS7b7M3odeo2lXZi55RIqu/8sSe7vabZpNnv0jcWrAIHGaAonjaWTXIHF6qVniHJOYS5cuyQs/hRxj4qzI47m9XIaEVTiLi4vRbQckuUDiANQLEoeUHiROIyBxJiQ5JM4JiW+5YXJj35/9s3uiho1H51++eugTn9UGAoCqSZU4+tdmXKeROKSKMCYOY+JY1FqFE6WksXFKQ14XPokDMBQGidMUSBxPI7sGidNLzRJn99TU1LdmZmbkhZ9CDonjrcZJzPZ2Dh8+vCnH87rcnhskDkC9IHFI6WmJxNGGZd2X/spBG4k/yZIAANj5SURBVLft6O0a7XJqXND75TvfXhFARjc5JE4VXaotHZpfPmE3ajx67sJZuR2galIlzqSAxCFVhEocKnEsrkl8993s/zNnvAKmjJQ0Nk5pyOsCiQOlY5A4TYHE8TSya5A4vdQscZSLErO6uiov/gHkkTiKLN91x71xY3WzdvHixej2Qj+WQOIA1AsSh5SeBiWOips5ycDGPif64akVC6MudJA4E5IcEkfJ81rIkmOPzF+4RKMGNMDA5/Kkj4nzbX9kv7nju7+HkMLZ/Z1v7XteMSaON+MucWYkvvtt3vCHv8O860NXvQKmrLSpGkevb7jegbIxSJym8F5HInGQOFEakDj7M1Xj5JU4AWtmbaVrpqfjY+BMT3fNworMC5fSMXnuu+++m3IcX5X5hX4ogcQBqBckDik9DUgclTfz+iEof82dd965eeLEieBXBfqF3P51w9WrV4PblpeXzezsrLn99ttv6To7duz4pvzVioJRlTlInAlJTomjUtO3bJHckOymUQMaIrPEGXcyNjQTMnSoxPFm3CXOqsR3v83bfuDDXvFSZlKqca5LaoPrHagCg8RpCiSOp5Fdg8TppQGJo8xLguuPJpifn4/uX+EfSSBxAOoFiUNKT40SR38tcGbnzp3fkL9Gf8Wg4iYP+usDFTrReApTU1Nfl7/6IVZrlw0lgMSZkOSUOCo4fcsWybKERg1oilSJo39txnX605/+dPBvQqrOF7/4xeA5p+i0zThOI3GarcLR6D50X75jCKPHWAtc70AVGCROUyBxPI3sGiROLw1JnL1aBaM/Qq77hzP64+Zdu3bpWDhflOMo3PaFxAGoFyQOKT01SRz9wNMPHHPkyJFSfr1w6dIl89BDD23qNiVXJaNUlYPEmZDklDjKwMbvHJmV0KgBTZEqcSYF61dzhFSaX/qlXwqfdZMBEqfZKpwoui/fMYTRY6wFrnegCgwSpymQOJ5Gdg0Sp5eGJI5yRHuU0XYo/YFxHagwuuuuu27u2LHj92T/Q903JA5AvWSXOM/2D7j12ksfiy9TVR7/lHnltUvmWd+8YZO4bbk9vJ8Br3zKmU/sPBs7Wf+n6XqeU2HK+PJ7cOfOnb8lf83i4mK4z/KIGshkH78pf0flgweJMyEpIHHK6FJtQxL8QodGDWiIzBJHp23GcdrNQYl8uBJSOAck7vNKJY7+tRnn6QmXOI1X4URpSzUO1ztQBQaJ0xRIHE8juwaJ00uDEkcJvq8fO3Ys6CmmStbX180DDzyg4+DoUARDX9MgcQDqJbPEiTfSh7x2yTxuLVN6Hv+UeemV9XBnq+VKnNRtI3HypEaJc0S7T9OSU62cqQrtli0sL9Xu1Q70dt1qkDgTkgISJ/F9PkeCrtQUGjWgITJLnHHHV4kjJ8fIPwgpnCWJ+7yiEsebcZU4rajCidKGahyud6AKDBKnKZA4nkZ2DRKnl4YljqLjMwc9w9y4cUPeEMpHx4r+ru/6rj8IBc6JYK9DgsQBqJeMEscRGlusm5cejzfml5m4GChX4qRvG4mTJzVJnP07d+78HRU4+gFUNdpP6O23335LPuRel323vWs1JM6EpIDEUbR7QN86WbN1kUejBjREqsTRvzbjOo3EIVUkTeLotM04Tk+wxGlNFU6UNlTjcL0DVWCQOE2BxPE0smuQOL20QOIoQUXOPffcU3p7l44Dfccdd2gFjv5I+ViwtxJA4gDUSzaJ4+lKbYsK5QYSZ3RSg8TZLR84n9fqmMzj36wtmGn/MXjSNSvhajZakRMuoxd+hQd8qwEkzoSkoMQ5JfGtkyXaldqWxKRRAxrC++U7yiRV4nz605/uu/9ycoz8g5DC8UmcL37xi+GzbjKYYInTqiqcKE1X43C9A1VgkDhN4b2OROIgcaK0ROIox3bs2PFN+WtmZmaC8WuGQa9t3v3udwfjPoc/Tj6oOykLJA5AvWSSOLEG+tdWzSsVyhU7SJzRSQ0SR7tzyjcGzkrXt/+E+CWOcvbs2Wg5LXFtK0icCUlBiZP4Xp8hlyRb0KgBDZFZ4ui0zThOu0HikGHjkzjacKB/bcZ5ekIlTuuqcKI0XY3D9Q5UgUHiNAUSx9PIrkHi9NIiiaPslSxKgv2fOHEi+HFxVrQ7tqWlpWCMHV0/rL7RtoLSe5dB4gDUS7rEefySeS18M1Bee+ljfZU5rzzb36i/nXQZ4gqVl16KxqpJwCdUwjFu7GPV7t5ee+WSedbq8u3xzNv2HffHzLMvrcbPx2urse33R9Zxj+u1dfPKS5/qH08odl5VLH3MGrdHiPbVt5zcr2cvmVdku9u4++g/jqRj79+WIusGy8vj7yyvqVji6K8Fgl8i5GFtYdq3/4QkSxxFPwDlw0/7DtUP1D6ef/7WkcVFc0I+K5vqdg2JMyEpKHGUol2qxfrLpVEDGiKzxBl3fA3NSBwybJIkziQxoRLnosR3P81bp7teuVJnmqzG4XoHqsAgcZoCieNpZNcgcXppmcSJ0LGZtz6ndVgBFTqnT58OJI1et0TR7pb1dm0zi5YPK3rmJd42rDJA4gDUS6rEiUuPaAycPFUq1UucVDEjBPIpy7KJEueSeSluiCzW/SLLEWB9qBSxl3fkTLziSQmX71tuwH0K7o/clwHHbo9rpKInjVee7Rc5FUuci9qNWt5+QVfkg0PWzZjBEkf3HS67NcC7jQqcF1+UiyPJ4uLmxQaETs0SZ9p85fXw5KSw8fqa+dr5rvl173aqStd8Ldx/wKtdzzItzJNy3K8vmC/75oUZQuIU7VIt9jymUQMaIlXi6F+bcZ1upcQZ9AEasbYQXzaaLjXTxnRlB2sS7/yCKXzMFR1PBUmTODptM47TEyhxgh9J+TJ12y7z8I/8U69YqTMZqnFK69ffhesdqAKDxGkKJI7TwB4FidNLSyVOhEoYHS9n4PchTShutM1qVlL5cABIHIB6SZE4H4uLi9cubVV2xBvt4yIgnmolThaBE6Eip7DEScM6N7nWt9dzKpxcIhGVtlxuomOIbdd6TB9374sjnyQVSpzgC+bJkyfDbWdlzSxM2/sdLGmyYP2qQX8REcOWOHZqFDqtlTjbrJmvPOnbVhUZMYnzZNd85dW18GBXqpI4+rz1rTcofQ0WNGpAQwz80kIlTsfIP5pLlg/YOiTOwvb7qHd+0RQ95qqOp4JQiTORlTiJVTjf+ciTXqnSRPZ+7wnvMYbR+1AJXO9AFRgkTlN4ryOROEicKC2XOC7atqTXI25qH8MZiQNQL4Mljq8rtajh3hEJsXmx5Jc4kSBIun0rfZUuWhGzfRyPyzG68yMxkbptn4R5zeqaTfYdn+9WtIQ3h2yfn163ZjZbVTweOeOrevEt95rVdZpXVNldp/Wdt979t4/ZfTzj2+yXdvH7W6rEOatVOOvr2WVdj5X4MegvYYfEqsbRioYYSRLHTsVCZwQkjjJYUJSX0ZI4X341PM6AyiSOck3iWzcp+oufGDRqQENkljg6bTOO026QOGGQOIXDmDgTJ3FaX4UTRY9Fj8l3rGFKHaQ5gusdqAKDxGkKJI6nkV2DxOllxCROa0DiANTLQIkzuOE+uUonnuokTnx+v1gI4gqLcP9p2+6XOP3LJJ+ftPvsnLtovitnks6pu1zf9t1jT5MuCefOSlMSZ+fOnWuFfmG9tmCmrf1ObzWkDMe73vWuP5iamno1ODiLLBLHzgsvbC6/+OKt2aUlU9avJUZE4hjztdO+7ZUdJE4Cic+ThPT1n0ujBjREZokz7rS6EieL5Ehadror8+zPavn3gtzmLrPmLjMt8yS+j3l7Wd3W1qQcxLS1XV0/tm9hRY4vWiZ2zNa+Vpzj00zLMkkUuc81hUqciZM4I1GFE0WPyXesYSqpxuF6B6rAIHGaAonjaWTXIHF6QeIUA4kDUC8DJM5TqZLGrfjwjgtTmcTJKpH8y+WWOKn33xIbgyqYvOuG+3fkTGJ1k7Nc/3kf4tjtPP4x8/izl8xLfePk1CZxguenDtKWm5VubL/T3QXTnZ62bpsObnPbbNLQweLCbcQat/NKnCjPP39zoySh06zEeX3BO+bNrwdjvITLRNQiVJA4CeTpUs3bWEGjBjSE98t3FMbEkXlNZliJk0V8DFpGhYvv8zwmfCxix9kNb/Qh66vIcY95UIVNtKyPvPe5xjAmzkSNiTMyVThRmqjG4XoHqsAgcZrCex2JxEHiREHiFAOJA1AvyRLn6f+3XEls4xUKCVUu8VQlcdK3G8W3ndwSx7f9mEyxxIZbKZOKX+L4pZgkr8TxHHuygPqUR9q41CZxgoHYi/wSdG3BFjaDMm26OUyO1aXaCckWRSWOnSGFTislTpAnF8xGuFhAtOxpu6VLxYVsc2tcGOF1uW1rDJ1p82WZF9/Omvna+W7Cfn0SR7ZxfiW2jY3YPnzJu9+O+fXTC+Zrskwc2Uawr+n4sudTnnse+TSkxFGydqnW122gQqMGNESqxJkUWi1xBiFf5mLLbokKq7JFb4uqX2zJYVfRbC1jV9/IP/S2PrliC5pwmWDbsm4wX7J17DK/G96uFTIRur++Y7bmR/crWM8+ZtlWouzJcp+tY6whVOJMVCXOSFXhRKm7GofrHagCg8RpCiSO1bhuB4nTCxKnGEgcgHpJlDhP/4JcSOSmmAxB4oT7b1rieI77tddWzUvPfsw8m1K5U5HEWbr99ttvhRvNwZpZmPbuOzF5hswJ15mXbFGGxLFTQOiMvMT5WqwaRQkrUtz1XVSO2PsL4kqchQHdv635u3grsF8VPml87fS2yGlI4pyV+NZ3473oolEDGiKzxNFpm3GcdjPSEscWF9EyUXxdodrLdGXdNdlgJGUGSRxf12f2fFeabF0YyDajzW5JHEk0296uu/8kiZPlPtv7qiGMiTMxEmfkqnCi1F2Nw/UOVIFB4jQFEkeuN3xB4vSCxCkGEgegXhIkTtcUcjhCf8VOmlBwujvLLHFq7k4tj8RxKpQSZYybRiWOs45zPtO6X6tI4lzet29fAYmzMmj/Celutcek8eY3v/kPZJ1lyRZlSxw7GYVOCyXOdFiVEi4TEYmJmMTpZ+O8yg5HxiTRt/+M60UUXd9eL3Z/1sxXogof7VIuvLXHtvxpSOIckfjWt3NV4oVGDWiIzBJn3Bm7ShxbaGQh2o4vgySOr7JlkEzxHZctVrYkj2dfkdjJInEScdapOFTiTIzEGckqnCh1VuNwvQNVYJA4TYHECRvW3SBxekHiFAOJA1AvfomTpyzBpU+mDJYDffMzSxx3fr9YCJIwPk2lEifLur40KXGeHSyeikic7/iO/ebYsVPmh37ozFZ+8id/9fyLL5oz8WwuSi672bv3u/9DoYa5tQUz7Tynp+U5vd1cvmZWuv3drU1vNbYM5h3vOGDuv/9oTLS88ML2v6vMAKHTrMTJwVbVi0fi2FUqmvhYMZHY6e3frXqJV9N4JMzrC9tdpz254My3pIukyH7tdbaX7yUua+L70tQ4Jk7EdYlvG1G8Xakp2ohhNWjQqAF1kSpx9K/NuE63WuJkqR5xl817zSlfCvu2GaVOiWNvW9e1K3ei7tGSJE6m++ysU3EYE2cixsQZ2SqcKHVW4xw69/Jy/Hrn5dgPuACKYJA4TYHECRvW3SBxekHiFAOJA1AvXokT/26ZIEe24lbSuMu781UQhNU6Ov6KMy9Z4mxvd0sCuWPyyDJb29blnl3tmx9tI3XbQ0kcd/sqjz61te3HA2Gybl575VLQVdnWPlskceIVVWmPcb/E+ckHjplPfGLDKyKyZs+evWZ2djbcZh7WzMpC13SnpwOZkyRnVuSDJfbcz9iQpI2FKqjsY61L4tixhc4f+kNv+lux+2LFJwKGT0GJk1i5IqRVw/RVpTjHEJufXP0SJVmsDLNff1oocdK6VDsg8aLSJt6ogcSBWkiVOJPC2EmcQSIlir2MLWP0du1OLRrLJq/EGTTfljLRZt37Fy2yoscR/tteJkniZLnPNYdKnImoxNGugH33ybz5v/ghrzRpY+qqxjl07uVj9vXO4fkLM+EsgMIYJE5TIHHChnU3SJxekDjFQOIA1ItH4jjdSiV2U2bFkQquNIgLgzS2JU7ietb2XVkyCFtMpG97OInTL5iS2TquJiWO252aPg7B/fmYnOP+c+XuM/44fN783E+te8VDntx1134zMzMTbrMCVrrx5/70wlYbzCC0sfBtbzsYO9YmJI6d55//5h889dSyOXRo1rzhDbtj98snAoZPAYnjShpH4rjVK+6YNH3zJXE5YssPR8T0CaIBYmWo/Vp5sted3Ff6xslphcQZ1KXaNUkiKm3sRg2dDmcBVElmiaPTNuM47aY1Emcg8l6oFSrRsluyYzqY1btNZm4N8m8JFluS6AaCZWS9Fev9Vb4s5pc4kq1jl3UjGWTvW4+z75jD2DImwt5PksTJdJ/l37F1qg1j4oy9xNkr2ZD47pP5nuMve4VJG/Ng9+e89yGM3ke9r6Xw6MKF2UcWLizp3/AmgKEwSJymQOI4DexRkDi9IHGKgcQBqJc+ieNWLfSPceOLRwAMnG+zbl55xZYS1rpJIsSREj7JEEf24d6P1G07x5xX4oTzU0WOLckalTj5ZJv7vIhLnC+aX/SIhrx5+9uPmCNHjoTbrICCEueee/Y31p3aoPzUT62bv/SXFs299x6J3S+fCBg+GSXO62tm4/UV8xWnm7QgjsSJd4fWPz+dARLHVy0T274lVobZ75Ndj7RxaYXEUdYlubeDxIGGyCxxxp1WV+IMRN4bvRJH4pMhW8gKactE23Irates9+MkiWOLnj7CffuOOYglYwLC5aP0HU/O+1xjqMQZe4mTWIWz576jXlnS5ugx++5LGL2vAK3EIHGaAonjaWTXIHF6QeIUA4kDUC+OxJne/tFggEdMJMStiOkTC9p1Wky29LoTC6o9YlIiLoC067FXnK68tGuy2LY14fZfc5eN9uEuLxm87RIkjubxXiVL33G9thp0pRZbtmGJE9wu244d62sqwHpdwcUeY6dCK/74r5YicQ4enDH79u0Pt5mdtagrtbA7tcRu0gpKnNtv3y3bPhE71qYkTtil2tKf/tM/cSF2X6z4RMDwcSSOp9IlNeMmcTzrRQLry+3rTk1ZlPi2k9iVmoLEgYZIlTj612Zcp8dS4mi0CsWurFG0AieqUomWscWMbjNWsTId30YmiaNx1lN039H8pGPW2BfOfdUz7vEUuM81hTFxxnpMnLGpwomix+y7L2FKrcYBKBODxGkKJI6nkV2DxOkFiVMMJA5AvTgSZzt33fXHtxroCcmTt7zlcfPhD1/2Soc8UVGiz8W8rC1MO89np4vAgDWzMG0vI8kwJs7Gxkaw7LFjp2LHWrfEicbCWVoyu+V4FG3Aj9+fMD4RMHxqkDhOt2Z98wdmCIlTaL+Du29r4Zg4ijZEudu4LhkIEgcaIlXiTAqtlDiTnC2JI38bkC9lhUqcsa7EGasqnChU48AoYpA4TYHE8TSya5A4vSBxioHEAagXJA4pPSpx7rxzr/nrf/2SV0BkjY7xos/Fq1evylVtDtYWehU4dqa71o9d18xK1xU9bhWan0uXLgXLv//9y//qxRc3L0d5/vmb13z3odxsXl5cNCeWlsweOQaX8ZM4WURMYoaQOEX2myJ+WipxFLdLtbOSgSBxoCEySxydthnHaTcHJUdJ/XnTW4PnXpDv/W7/MiOSAxL3ecWYON7I6Ropxq4KJwrVODCKGCROUyBxPI3sGiROL0icYiBxAOoFiUNKj0oc33MqTJ4vv3umpqa+derUKbmqzceKfGjI+tmToQpHmZubMzt27PimrBNVwASoXPGLl+GyuHhz9YUXbp38xCdM2hfRMZQ4rtwwZuN8d2s/v35axcma2Xh1IeiyLL7/YSROgf06EmfjvD0GkDt+UJrE2Z7vO6clSxy3S7UjkoEgcaAhMkuccSdjQzMhQ4dKHG9GTeKMZRVOFKpxYNQwSJymQOI4DexRkDi9IHGKgcQBqBckDik9JUqcztTU1Kv33XffTbmszYevGicxvu7W/LzlLW/5fVlnWRKjTIkTVvWckW3m+dAbS4njypFBxMXJcBIn/36d/Wk1TbC9afPlV/tLvAZX6lh4jrtkiXNMEq2f2pWagsSBhkiVOPrXZlynP/3pTwf/JqTqfPGLXwyec4pO24zj9BhKnLGtwolCNQ6MGgaJ0xRIHE8juwaJ0wsSpxhIHIB6QeKQ0lOmxBFOSszq6qpc2eZkbcF03XFv3MS6WRvMxYsXo/VOSGIML3FuXn/xxc35l17SXnEKMZ4SJ1wuVaj07X9IiRPOz7PfRBHjIS6cJEnSqHqJoxVlNyS6fqZfrCJxoCFSJc6kMD8/7z0HhJSdX/qlXwqfdZPBGEqcsa7CiUI1DowSBonTFEgcTyO7BonTCxKnGEgcgHpB4pDSU7LE2avdlx0+fHhTLm0LsGbWVrpmejo+Bs70dNcsrMi8cKk0NjY2zNve9rabU1NTX5X1Y12pKUUkzuLizRsvvri5KOuW0SAwvhJH82SvomXD6ZZs4/WVoEuz/nVKkDianPv9dRU/sfOyZr4WdsUW6zLNc760m7avufuRde1lNCpx3to5an6oc9nItdHQub8j3yXlefKDwfZuXu12bqk4TQSJAw2RWeLotM04ThNSR1Ti6F+bcZ4eM4kz9lU4UajGgVHCIHGaAokjX/x8QeL0gsQpBhIHoF6QOKT0lCxxlOCXhFoJ0xTWL5+9DdxZJc7zz9/ceOGFzWX590y4alnULHFIU3nwtqN9ImaY/JnOJfNtnb2x2z7QMYlVPUgcaIjMEmfc8VXiHPjR/85+TRKSO/c++cN9zysqcbwZFYkTVLL7svvb95t3zL40Vvm2u9/hva9hTkkAWoFB4jQFEke+5PmCxOkFiVMMJA5AvSBxSOmpQOLs1gqYd7zjHbdu3LghV7j1ovu8++67N+UYvhgeTx9pEmdxcfPiiy/eml1aMn1VPCWBxJmQPD51MSZchs37OxvmYOeUc/tN7WLNyyEkDjRDqsTRvzbjOo3EIVUkTeLotM04To+RxNFrzXWJ7/gnMXouqrr+BsiFQeI0BRJHvuT5gsTpBYlTDCQOQL0gcUjpqUDiKLMSMzMzI1e49aHdqL373e/e1H1LEo/dL3E2L7/wwq25pSWzJ1ysSpA4E5Ind1xzhMvwUZHj3vbBhC+Sh5A444x2OaPvc8ck+p4SRX/FrLdrmmoIS5U4k8KnP/3pvvuPxCHDxidxvvjFL4bPuslgjCTOnMR37JMcPScAjWOQOE2BxJEveL4gcXpB4hQDiQNQL0gcUnoqkjhK0K3a6dOn5Sq3Hk6ePBkd98CuGCKJs7h4c/WFF26d/MQnTN39byNxJiTvnVrqEy5VJFnivLzsNP4hcUYbfa/Sxq2BkiSKjlEmf5clKtbrFDqZJY5O24zjtBskDhk2Polz/fr14K/NOE+PkcS5KPEd+yRHzwlA4xgkTlMgceQLni9InF6QOMVA4gDUCxKHlJ4KJY5ySWIWFxflSrdazp49Gx1z6he/F180BzThZBMgcSYk3/2G/eZE54ZXvJSZJIlzeP7CjN3w9+j8Be84UdB6VN4EYlzzpje96daJEyeCsce0IXN1dTV8JzTm6tWrwW1LS0tBNWS0ztTU1Nflr7731CFzMkucccfX0IzEIcMmSeJMEmMkcYJrZRKLnhOAxjFInKZA4sgXPF+QOL0gcYqBxAGoFyQOKT0VSxztmiz4cqpVMlWgXajNzc1Fx6sCZxT60UbiTEjeuqtjvq2z13xfZ978UOfyVmY7v3n9A53Ny3ny/s7Na3J9lUviKI+eu3D20LkLlx89t7z48PzFOroLhPLQ97NTO3fu/Ib8DaSMips86DhhKnSOHDkSvMfomGXyVytzqiRV4uhfm3GdRuKQKpImcXTaZhynx0ji0J1af+hODVqBQeI0BRJHvuD5gsTpBYlTDCQOQL1ULHE+ZV6R65FMvLZuXntt1bz07Mc82xkij3/KvPTKeriTENnXKy+VvB+ylYolTsSixBw7dsxcu3YtfGCHR399bo2Bc1Z3NCIgcSYkKnF8j7NEnwO5eEq+SMr1VW6JAyPLnqmpqc/L30DAaIPlsKgAuueee6L3zCVJVdKbSpwQJA6pIlTijFUljqLvx77jn8TouQBoBQaJ0xRIHPmC5wsSpxckTjGQOAD10h6JY/PKp8zj3u3lTfL+X0PiVJaaJI6y9UtDrcpZX3dkXQ503aj6Jhzz4YRklEDiTEiQOFCQA7fddttv79q1a1OraMpEqxd1rDLZh1blqCSqojors8TRaZtxnHaDxCHDhjFxxk7iKPo5rsc7yeFaBlqFQeI0BRJHvuD5gsTpBYlTDCQOQL3oi8r3JtWsxBFKkSzPbvfp7/LKs57lSSmpUeIo+hwOBnC98847N6MxHbKgDY/Ly8tmdnbWaMOmbkOiA3aP4ocNEmdCgsSBAhzV7tP0PVLHt6kKfT/V99KpqanXZZ9lP3+oxAmhEodUESpxxlLiAEDLMEicpkDiyBc8X5A4vSBxioHEAagXfVH53qQalzjGrJpnvdvMnsdfsisz1hE3NaVmiROh2926ONPGSu1qTX8drtHGRf31eTSt826//fZb0fISFUFHJKMKEmdCgsSBnOyfmpr6+t13371ZR4OsNoKGIueLsu8yu1ZLlTj616aS6W98y5gv/e72tEVd00gcUkUYE2esxsQBgJZikDhNgcSRL3i+IHF6QeIUA4kDUC/1SpxXPuVZppfHn101r4WL9Vg3Lz3uXzZrXIkz7PZItjQkcSL2SrSbtUsS3/6jbEhU3Gi3aeMwMDsSZ0KCxIEc7J6amvpXKqxzVeCsrZmV7rSZno4/x6anu2ZhZc2shYslocI8XEffY8uiHZU4//Yb8k3vRWN+6GVjfvpfbAmdOkHikCpCJQ6VOBDnPUtLuw99/DPz8vq4/Oi55UWdDmcBFMYgcZoCiSNf8HxB4vSCxCkGEgegXlojcTTPOmU7/sqZj8ly63Hh89q6eeWl7XF04vLGQ9JxPP4p85K7bSPTr1wyz/oEUKy7Nq0c+liw/havyW26Xt9yKq0umVfkuLeJ3wff/Xwt2t7WMv7l3PMRS9Zj9q2bMQ1LHB8qdnS/Gv33OILEmZAgcSAH2j1kIFWysrbSNdP9z614prtmJVw+CR2nLFxepXoZZJY4Om1T6nQkcaxce+Cj8s34V425fiNYpNT9Cb5pN0gcMmwYEweJUxF63a2fResSfR8/JhkJHl24MBt7ncwvj9p4mdBCDBKnKZA48gXPFyROL0icYiBxAOpltCTO45ccweKgAkKWKyJxUtcR+sbpcYTIK87xb3UJ17fcgH0FxybnLfGOWhVFGc9HoWMeIi2UOJMAEmdCgsSBjByUmLm5ufC9PQMrXd/zyp/phYEVOTrm2EMPPaTdqn1Vli/j18vtqsRJyp/7jDFL8jmry1UElTikilCJg8SpAH3vvyZxz+FIiJxH5i9csl8jOh3OAiiMQeI0BRJHvuD5gsTpBYlTDCQOQL20ROJ8LOhOLY4rE5xtJfHaJfNsTomTReBExERO3zHH2Vo2ZbncyH18PMf5iFXkZD3mIYLEaQQkzoQEiQMZuaRj06yvZ/18WzMLTvdpne7KtqhZW5HnRXz+9MLgjtUuXrwYLXtKMiypEkf/2lQynSZxrKz+5x8x5mf+1ZbQKWX/AhKHVBHGxGFMnArQSkzfOdT389Yjr4vLzutkJI4b2o1B4jQFEke+4PmCxOkFiVMMJA5AvdQrcfLgiBa3SmdbNvS6E7OJKngyjYnTV82yLutvi4yBY/V4hIi97lY8y72W1v2b3a1Z3zH2V9BkOR9Jx+I95iGCxGkEJM6EBIkDGZiRBF2aZWZtId6Nmq/Sxq3U6aZ1qmbMwYMHzdTU1Ldk+WG7skyVOLWQQ+LE0v05Y/7hrxvzu/8x3FBxkDikilCJQyVOBcxLfOfwuqT1yOsCiQOlY5A4TYHEkS94viBxekHiFAOJA1AvLZU4KVU4fRU9HzMv2ZYjnJ9F4sTlUEbRE+3fFSJu1UsUd7m+43fPU/9xuBIrRsbzESTrMQ8RJE4jIHEmJEgcyMDi7bfffit7FY7gShyvoHGqcVK6VFOsRtFhx8bJLHF02qbU6aISx8rl+z9szM/+hjHf+FawySLH4waJQ4YNY+IgcSpgSeI7h0gcmFgMEqcpkDjyBc8XJE4vSJxiIHEA6qV1Eue1Vy71D6zvSBRfl19xYdOTQOkSx5EdiUIjYTlHiCR2ReYs1zfWj3uePMfhrdYJyXo+gnlZj3mIIHEaAYkzIUHiQBq33Xbbv5mdnQ3f5TNSkcRR3va2t92U5YcdSyCzxKmUEiROLB/+hZjQycLIVuLMPdZ33Hc8cc6/7CjEuT93zXmWGaFQiYPEqQAkDoCDQeI0BRJHvuD5gsTpBYlTDCQOQL20R+K85pE3UdzqkVSySpy0Cp/txCthQimSKmfC5JU4nuMYJHHSSZY4icc8RJA4jYDEmZAgcSCFIxKztLQUvstnJYOgcbpTSxsTJ0K7dQu7VNNBrouSKnH0r00l02VLnCjf90mzfO9TxvzC/2PMt25u788imh5ViXO/O+aS5t7j5kHPsiORCZM4Om0zjtNInNJB4gA4GCROUyBx5AueL0icXpA4xUDiANRLvRLHlhOPfype3aLoODCx9cMgcZA4kAYSZ0KCxBlNbj364uzmIy8sbb7zxctV5q99xx/XxjFz48aN8F0+O2sL0/HnVHdlW+S4lTqdaZPR4Ww1jH7ij8z+uu+Ys+Tz7zh1Q7shS8rq4Y/JE/fnqs/xfyzf9DwSpsx83yeN+YlflBPnr4IYTYlzytzlHHMv95t9z/mWH4GMocT5o3I/TkkWwvyfR46Y/+vo0YnJlYMHt+57Uv63Tmf1SqdzuUW5dLnTOSXZI8/DtoHEAXAwSJymQOLIFzxfkDi9IHGKgcQBqJfmJE4Qp5syxSdynO7UsoqHdIlTbndqTUmcXCIGiTOuIHEmJEic0WPzXS8uehvrK8jMnoNm/z37wnf4/PSJHG+yCxxFx+bR9U6/5Qe9x0wG5OiSWdp/IiZ0+h+PEZA4nq7UtjJ9yr9O2zNmEuevHTxirsj9ICOb65c7nb3yXGwTSBwAB4PEaQokjnzB8wWJ0wsSpxhIHIB6aVjiaDwip2+57BUzdtIljlth418mcUyelkicrOcjCBJnXEHiTEiQOKOFOfTSQW/jfEU5csfbzZEjR8J3+GKsLXSdqhs702ZhJYfBCdF15+56t/eYScb8qf/FmP/+l8zqJ/+J85i0X+LEulK79zFzV6xrtcfM/Z51Wp8xkjg/8LEXzOd27vSJATJamZfnYptA4gA4GCROUyBx5AueL0icXpA4xUDiANRLCySOxJEkiisX4rJFRcqntqpmHn9W1183r71yybz07Me2b88gcfr3vS773h7s//FnV/vmb22nMYkj99U5YVnORxAkzriCxJmQIHFGi1vveuGkt0G+ouz/trvMzMxM+A6flzWz4Bu3xJNpu6u1DOx/2z1BlZDvmEn+rD/0U+bk3X9i6/FotcR57ri5w3ru3PHEuZwCJN4VW2/Zc+b+6fvj2733MXN/Utdsz50y+5zltSu3O6aPJ68TZMB+Mt2H/vU7995v7nriVKvGAvrLcz/hEwJk9NI2yYDEAXAwSJymQOLIFzxfkDi9IHGKgcQBqJd2SByNIxf6pItH9CQRVcpkkjgSVxANYqsKR9OgxHkpEDXZKHTMQwSJ0whInAkJEme0MI+8eMZtgK8yussTJ06E7/D5WJEHXtffyvSCNSbOium6gqe7Es5M58j3fq85esf93mMmOfLnPmOu/8Q/NAd27409Fm2WOA8+cb91rPeHY+A4Y+QM7FLNkThPxKWQG1emxPfvTyCWrHWCOPIpnvvNXdMpEmfg+hKVQfbyDeZ9P/l3fUKAjF6QOCUir402S5w3St4ruSSxz+3vhrfpPF2mbD4tifb1ZclbJHn4QYl9vDrdBu6TvCTJe39yY5A4TYHEket8X5A4vSBxioHEAaiX9kgcSZ9McceoedativFgrZNV4miefcVe1se6ecWWIZomJY7el5znIwgSZ1xB4kxIkDijhalZ4uzZ9YeLSZyVrvN86pp+RbMizw17mexj4xx86GEkTsFcf/C/N+an/4Ux128E5zL+OPXSXolzzuy71zrWe49vVaDEuljbkju+OMInLdY+sgicKHGR4xx3hsQlTsZjto616fy9t9zjkwJktILEKRF5XbRV4sxKVNb4zq0dXUaXLZNxkziRvCl6f3JjkDhNgcSRL3i+IHF6QeIUA4kDUC+tkjh9ywuxKhLN4x8LhEu8OzGdXg26DrOXzSNxgjz+KfOSb9uvXDLP+tZtWuLovBznIwgSZ1xB4kxI2iBxHl24MHvo3MvLhxZengtvggRMzRJn/x96szl69Gj4Dp+dtYXp+PMpocrGrdaZzmhx9t51t5n99kPeYyae6Pg3Km6+9LvhGdzm8uXLscdA01qJ4+tKLZrndEfmrYYJ4hEi91rdoPVVvNzfE0Ke2++a297Hg7J/73o63zm2oGpmSzL1ukiLzZfYEicuqOz71r+uvxu2+vPAn/9vzDNyPD8v8cgBMhpB4pSIvC7aKHE+LPGd00HRdcpi3CTOsPcnNwaJ0xRIHLmG9wWJ0wsSpxhIHIB6qVjikEkMEqcRkDgTkqYlzqH5zx6MNWrML58IZ4EHM0DihIuUzeWDBw+avGSVM0UlTrj8MINue798R1FxpX9tKpn+t9/wPpZlRMe5Mf/9Lxnzq/92e38W0fQoSRx/V2pRkqt04nElTn83ZL79ZKr0cUVP2K1blnVdUbMtY5zj7esqzrnfA7uSqy/3PvnD28cU5vr168FzTtFpm3Gc9r22PGn8OvZKp7PkyBskTgXI66JtEscVIHnStCyJQOIgcZoCiSPX8L4gcXpB4hQDiQNQL0gcUnqQOI2AxJmQNC5xtALHatR4ZP6C9r0OCZj6Jc7yXXfdddPkpG88nBIrcbQhOFz+lKQoqRKnFsqWOEeXjDlzxZh//lvhDtIZHYmTLmnc7s78VSmOFEndjkqXrILIt1zGdZ1qna1jH1R9FCZ+vO0YGydN4kwCSJzSQeKUh45v84sS91z+tGSvJEL//SGJ292arlvFGDl5QeIgcZoCiSPX8L4gcXpB4hQDiQNQL0gcUnqQOI2AxJmQNC9xWj3Qb+sw9Usc7eLOXLt2zeShrzu1TGPiyBc/v+uJsby8HC1/RFKUzBJHp21KnS5B4my88xM9cXO510Be5HjctFLiZOkuLaESJp60yhZJbF8qcTKsEyZeUaNCJeO6zrFvSRy3K7bUtFvi6F+bcZ5G4pQOEqc8XPmhkuadkiR0nitydBvudlxxof/W25LmZ5EeKotULtn71x/86PgzWSTOeyW6vL2cbktvs++ze6y6rUH7tknrlk7vZyUYJE5TIHHkC54vSJxekDjFQOIA1AsSh5QeJE4jIHEmJEic0cLUL3GCz/WzZ8+afPQLms70glmJCm3WVsyC032Uzs/Smdrs7KyZmpr6qqwzDJklTqUUlTjf90ljfuIXjfmF/8eYb+UulIoxKpU4bndj2eITGkicOkIlDhKnApA45WHLE02WcW5cURGJiUHbcue5ksWe75M4PnkURW9/0bnN3b4KGHu+L7MSxZU4z0mS9q2x94XEmTyQOPIFzxckTi9IHD8vdDtLvudNSRmmlwaAiQSJQ0oPEqcRkDgTEiTOaGHqlzidN7zhDb/y7ne/e9PkpL8aZ3CyVOFsbGyYN77xjX8gy2tj3jCkShz9a1PJdF6J8+FfMOZnfyMQN6XsXxgNieOIkBzpr9gpInHa052av4u49oUxcRgTpwKQOOXgdqWmomJQFU6EK1SiLtVc+RFtTyVHdJvGJzIGSRz3OLPEFiv2/u37qFU09vFG+3XvR1rsLuWQOJMHEke+4PmCxOkFiePnhW7nmO95U0ao1AHIDxKHlB4kTiMgcSYkSJzRwjQgcYTg/WB1ddXkZW2la6bjzytPpjMJHGVxcTFab0YyDKkSpxaySJwflZOj4uYb3wpXKpeRkDi5q1Gs9EmTIhLHrbDp3da3XsL4NVnWdSuNtmVN9iqgNoVKHCpxKgCJUw6uHHHlSRKu5LAlhitsPif5ZWs6aR+DJI67Td1e1I2Z7tdXZWNLHHvbbqWRLV0iweOTOHofo326EssWQxGD7k8lGCROUyBx5AueL0icXpA4fpaOd3Y/3+1s+J47w+SFbudquAsAyAESh5QeJE4jIHEmJEic0cI0I3H2Tk1NfevYsWOmGGtmZaFrpqedyhyZ7i6sZOpCTdEqnLvvvntzx44d/07W3y0ZhswSR6dtSp1OkjjdnzPmH/66Mb/7H8vdn+CbdtM2iZNJoGzFqXzpW76YxOkbb0duv2tuu8rnQVnHnb+1X1dC3fuYuX/rmM7J/bs/Pl9iV9y4gueOJ05tiakH5/S47jd3TB83++R4/BVC9YcxcZA4FYDEKYeyJI67ni0w3NhyxWaQ9LDn+YSJ4u4zaT8uWSSO77z41rNB4kwOSBz5gucLEqcXJE4yL3Q7y77nzpChKzWAAiBxSOlB4jQCEmdCgsQZLUwzEkeZl5iLFy+appifn4+emyf0gIYks8SpFFvi/MV/aMzP/KtA3NRJ+ytxHOmS2JWZFVeaxERNQYkjt7syZVDi3bi5Yik9sW7T+gRScvq7j2smVOIgcSoAiVMOVVTiKO78KCo2kkiSHu4xuvuKcKt1BkmcvZL3Sl6S2OskSRzfPpE4EIHEkS94viBxekHiJPPiBzqzvufOMKErNYBiIHFI6UHiNAISZ0KCxBktTHMSJ6jGOXjwYFARUzfr6+tBFY4cwxfD4xmWVImjf20qmVZho+Lm336jnO1ZZJ1uu8R58Il4lUo2SeGImthg/8UljsZXNRPP/eYu7zHKfgeInDumH4sdV9/YN32VPp5kEVw1hTFxGBOnApA45eAKkqQqFxddRpeN1vNJDleqpG07SXq4QiVJBLnH5Eoc7QrNlTZuomPMsk/7/vnuGxJnckDiyBc8X5A4vSBxkim7S7Xn39+5Fm4aAHKCxCGlB4nTCEicCQkSZ7QwzUkcRcvUzdzcnKkTlUaHDx/e1H1LynrPT5U4k0K7JU5a12jJGWqMmQESJ8hzp8y+6fvNHc6xaZdm292k+XLO3P9EXMbcce9jQTdo7nH1SRzNc72u1/r2u7UNzzoNhUocKnEqAIlTHrZs0CRJEhu7CiVpHXcZjd6WRJL0KEPiuEJJc0mi1TinrduQOFAEJI58wfMFidMLEmcwi091LvqeP4XygfztFgDQA4lDSg8SpxGQOBMSJM5oYZqVOMqyJOjarC5UGuk+JSf1AEois8TRaZtxnHbTtjFxyOiFMXGQOBWAxCkPn+CwBYiLK0t8y/uW0fhkR0SS9Bi2OzVXyLjr+7pFQ+JAHpA48gXPFyROL0icwSw+1Tnhe/4UzIFwswCQEyQOKT1InEZA4kxIkDijhWle4uyempr6vPw1S0tLpmpOnjwZPR8XdeclklnijDtt706NjGaoxEHiVAASpzxcSRLlpyU6dkyE/ltvc5dzpUjS9qIkSZhB0sOelySC7GU0kcRxhZIrnJA4MCxIHPmC5wsSpxckzmCWjnf2lNGlGl2pAQwHEoeUHiROIyBxJiRInNHCNC9xlD3h2DTm1KlTpgq0C7WZmZnouXhRsltSJqkSR//ajOs0EodUEcbEYUycCkDilIstJPJmkBTRzEpcweLrVm2Q9HCP75clOsaNokLIJ5ei43Iljr1vVzhVJXHs+T6BVQoGidMUSBz5gucLEqcXJE46Lz7VueR7DuUKXakBDAUSh5QeJE4jIHEmJEic0cK0Q+IoeyTat7yZnZ016+vrpixWV1ftMXDmJVWQKnEmBSQOqSJU4lCJUwFInPJx5UuWuDLGFSZR1Y0rRdKkhytxXNmSJZHEcfet/1YBNEj+lCFxks6nb1ulYJA4TYHEkS94viBxekHipFNGl2ovPdU5GG4OAAqAxCGlB4nTCIkS55E7yDhl15T/cZYgcVqIaY/EidBuzsyuXbs2T58+bW7cuGGKoiLoxIkTwfNvx44d35S/c7qDisgscXTaZhyn3SBxyLBhTBwkTgUgcapBq2ZsCZMUXUaXtUmqaomwpYfG7VZtkMRRdForcOxt2LkgscVLJHGUPIJKly1D4rhCKwoSZ/xA4sgXPF+QOL0gcdL5xI909vqeQ5nz/tH4/AdoM0gcUnqQOI2QKHHIxASJ00JM+ySOckQSfJm98847N+fm5oLGyyxot2nLy8tBNY+KIN2GZFlS9Zcb75fvKFTiIHHIcKESB4lTAUic6lCx8l6JVti6EkJv03m2fIlwRYkrK1zJo7EredIkjqLb+JDEPq7omFzxYkscRaXTlyTRfP23bku3ae9bj1ErdYaVOIoely2edLnTkkowSJym8F5HInGQOFGQONl48QOdy77nUZYsPtU5G24GAAqCxCGlB4nTCEgcgsRpIaadEifimOSqJHgO3X333Zs6ro1W6GhU1iwtLW1NqyixxI1G5U1dJfGpEkf/2ozrNBKHVBHGxGFMnApA4gA4GCROUyBx5AueL0icXpA42Xjhqc6c73mUJc8/FfyQEACGAIlDSg8SpxFOSnznm0xOkDgtxLRb4kToY63vIVtCJyEbkouSExIdY6dOUiXOpIDEIVWEShwqcSoAiQPgYJA4TYHEkS94viBxekHiZKNwl2p0pQZQCkgcUnqQOI2gv6j3nW8yOdGG9VwgcarHjIbE8aGPv75fa+oWNj4ySxydthnHaTdIHDJsGBMHiVMBSBwAB4PEaQokjnzB8wWJ0wsSJzsvdDtXfc+lgflAZz5cHQCGAIlDSg8SpzEGNnKSsc41yW5JLpA41WNGV+K0jYHvb1TiIHHIcKESB4lTASMtcR6Zv3DJfo3odDgLoDAGidMUSBz5gucLEqcXJE525Hlzyn0epWXxg7QDApRBosTZs+edQWM8IXnzHd8x7X1OheHNuzq0EV9/4aAXqeMelRb6fNKGAN/8SYqOS1KoUgKJUz0GiVMW+jyzP0tiYUwcJA4ZLoyJw5g4FTDSEufR+Qsn7deIToezAApjkDhN4b2OROIgcaIgcbKz+MHOft9zKTFPddbDVQFgSBIlDiEVBYkDZaC/htTnk8ocKAgSp3oMEqcsUiXOpIDEIVWEShwqcSpgpCXOe5aWdh/6+GfmHzl34fqj55YXH56/2IauRWHEMUicpkDiyBc8X5A4vSBx8pGrS7UPdhbD1QBgSJA4pO4gcWBY9Eu0DrAePacOSKAASJzqMUicssgscXTaZhyn3SBxyLBhTBwkTgWMtMQBqAKDxGkKJI58wfMFidMLEicfL36gc8b3fPKFrtQAygOJQ+oOb+AwLDqAv/2cOiOBAiBxqscgccois8QZd6jEIVWEShwkTgUgcQAcDBKnKZA48gXPFyROL0icfMhz54D7XPJlsdu5Ea4CACWgY2j43qSIne/w3EaK5qAEYBiirtSi0KVaQZA41WOQOGWRKnH0r824TiNxSBVhTBzGxKkAJA6Ag0HiNAUSR77g+YLE6QWJk5/n39+55ntO2XmhG1wLAECJXJX43qiIZpfkh5zbSNGohVdxCFAUff7YXalF4cKqAEic6jFInLJIlTiTAhKHVBEqcajEqQAkDoCDQeI0hfc6cufOPYHImYT4Gtg1f+779nuXn7Ts3n2g7/lhhdemhyxdqr3Q7RwLFweAktDxJNYlvjcrcr9E3nw6d1i3kSLRhvdZCcAw6HPI9/w6JYGcIHGqxyBxyiKzxNFpm3GcdoPEIcOGMXGQOBWAxAFwMEicphh4HTkJ+am/7G9k/6FH/MuTWHhtenjpqc5B33MqinaltnScH3EDVMFeyUmJji1B7Dze+b8DiTPd+XnvfJIl2sDOBx+UwbLEd2GlFYWQEyRO9RgkTllkljjjDpU4pIpQiYPEqQAkDoCDQeI0xcRLnKf+hL+h/YG3+ZcnsfDaTODF93eu+55XGrpSA4B6UWvc7WwEEucDrftiBDBpJHWlFoWLq5wgcarHIHHKIlXi6F+bcZ3O2NBMyNBhTBxvkDjZQeIAOBgkTlO4Y6pOXO78to756F+IN7L/he/zL0v6wmszgcWnOmft55STmXAxAIAa+EBnNhA4UX4kqFgCgGZI6kotCl2q5QSJUz0GiVMWqRJnUkDikLpCJY43SJzsIHEAHAwSpynOSnzvRxOVb9vVMX/zv+41sP/5I/5lSF90XGdI4PmnOkcccRPk+W5ng67UAKBeup3lmMR5qjMXzgGA+klqDIiCTMgJEqd6DBKnLDJLHJ22Gcfp3bt3B38JqSr6HLtx40bwb5txnkbilA4SB8DBIHGaQs/toB4dJiJajRM1sv/1P+NfhvRFhweAAfi6VHtB21IBAGrD7kotCl2qATSF/opDfwXju7CyQ7VcDpA41WOQOGWRWeJMAjMzM97zQEhZmZ2dDZ9tkwMSp3SQOAAOBonTJEckA68nxz3fd/92I/sn3t8xb9jpX44E0c8qevrIwIsf7CzaAieI9moEAFAb3c6xmMDpZaNzvLMnXAIA6uOYxHdx5YZquRwgcarHIHHKIlXi6F+bcZ7e2NgIpk+fPr0Vppkua3p+fj6YtpmEaSRO6SBxABwMEgca5MWnOpdoaIeyWfxg56j9vKIrNQCon6588ZA3oL481TkRLgEA9ZHWlVoUhEIOkDjVY5A4ZZEqcQAAhgGJUzpIHAAHg8SBhlg63tmjjet2YztdXkFZvPhUZ53nFQA0Q68rtRt9AkfzVOdSuBQA1EPWrtSi0KVaRopInEfnL5yMSZyPf2Y+nAUeDBKnLDJLHJ22YZppG6aZtrGnkTilg8QBcDBIHGiIxac6J2yBo6FiAsrC7lJNn2vhzQAANeDvSi0KXaoB1EvWrtSicNGQkSIS5z1LS7sfmb9wSQXOo/MvX33k4z9zIJwFHgwSpyyoxAGASkHilA4SB8DBIHGgIfq6UotCl2pQAi90O8f0+RSKQdpLAaBGkrpSi4JZBqiTRYmvESApVMtlpIjEiTj0ic9S8ZQBg8Qpi1SJo39tmGbahmmmbXzTSJzSQeIAOBgkDjSAVtu4XalFeUHbvgCGRJ9ji93ODZWF4U0AADWR1JValKc6F8MlAaB61iW+RoCkbEj49UcGhpE4kA2DxCkLKnEAoFKQOKWDxAFwMEgcaACttvEJHI02vNOlGpSBCkG6UgOAevmgfDmTD7OUaJdqfNABVI82lvgaANLCxUMGkDjVY5A4ZZFZ4ui0DdNM2zDNtI093XaJI2+Ce650OouSDUvcIHEARgiDxIEG0IHmfQIninaFFS4KUJjFD3aO0pUaANTLBzuLHmnTH/oOBaiDvF2pRaGMNwNInOoxSJyyoBIHACqlzRJH3gCPXel01h1p4waJA9ByDBIHamZQV2pR6FINAABGk6c6615p05/lcA0AqI68XalFoUu1DCBxqscgccoiVeLoXxummbZhmmkb33RbJY68+c16hI0vSJyS0fH/Ds0vn2AcQCgLg8SBmhnUlVoUulQDAIDRI1tXalHoUg2gWo5IfF/+s4ZquRSQONVjkDhlkSpxAACGoY0SR9749l7pdG44siYpbRuzc6QlzqH5zx581/yFjUPnLhjN4XMX9LoUYCgMEgdqJq0rtSh0qQYAAKPFBzrzHlkzKDPhmgBQPmclvi//WUO1XApInOoxSJyyyCxxdNqGaaZtmGbaxp5uo8RRMeOImsTIm2TbGuBGW+Kce3k5Eji9vMx1JQyNQeJAjWh1jVbZ+KRNX3RYAQAAgJHh/fKlQj7AcoS+QwGqQ7/k+778Z412qUa13ACQONVjkDhlQSUOAFTKEBJHPy/19lLz/Z3OX1mQfablpzqd9ROdzt/0baPh6PiEvnM4IhLnwuW4xLmgn0MAQ2GQOFAjWl3jFTa+6LACAAAAI8FTnSMeSZOWG3SpBlAJw3alFoUu1QaAxKkeg8Qpi1SJo39tmGbahmmmbXzTBSSOjr2XJCpIcpA4MLEYJA7UyAvdzpJX2CRkUYcXAAAAaD1Pdc56JE2W0HcoQPkM25VaFLq+GEBNEueE5JrE9/gQ4ouO63BAYkMlDgBUSgGJo+9VvmXI4CBxYGIxSByoiVxdqUWhSzUAABgJ8nelFoUu1QDKp6xG/xsSquUSqEHizEl8jwshadHX7l5JRGaJo9M2TDNtwzTTNvZ0Tomj1xa++SQ9SBwYW0xP0pxJymZn8x/LX3nz6Y/MW5C/3vU0tzq3+PEoZCZXV2pR6FINAABaz1Odgx45kzXa0AQA5aG/wPd96S8avvAkUIPEoQKHDJNTkggqcQCgUnJKHO1KzTefpEevDVoPEgeKEAoXr6QZNkgcyINW1XhFTUqe12EGAAAAWssHOmc8ciZ76DsUoEzOSHxf+ouGarkEapA4vseDkKyxX7upEkf/2jDNtA3TTNv4pgt0pzbwfYkkZl7SepA4UATTMQdc+VJGbnZu3pC/9C4AmdGqGp+kScuiDjMAAADQWt7fueaVM1lD36EAZVJ29QZdqiWAxCEtTy6JAwAwDAUkjlYOU3GaL1clWsXUepA4UJSbnZvXXAkzbDY7m4zzCZlZ/GDnqE/QZIoOMwAAANBKuvIFTD6shgp9hwKURdldqUWh+wEPSBzS8hSSODptwzTTNkwzbWNPF5A4iv5IRG8rPe/tdH5kQfY5KP9Dp/P/e67TufT9nc5f8W2jZRmpLnqQOFAUU0GXarc6t2bDzQOkUrQrtSh0qQYAAO1k2K7UotClGkAZ6BgYvkaTYUO1nIemJM53vuU/Mw8+ci8hQXbtus37PJFQiQMAtVFQ4lTKlU5nVWIy5Ia8SeoPYaAkkDhQlFudW0d8IqZobnZubshfehWAzBTtSi0KXaoBAEA76XZW+4RMkXxgNPp3Bmg52s2Gr9Fk2FAt56EpifPkB37A/JNf+duEBFGp53ueSBgTx4Jppm2YLn+6jRJH3viOeIRNUuz3TBgSJA4Mw83OzeuujCkaulKDPGgVjU/M5MnzOtwAAABAq/hgZ79XyBQJfYcCDIv2ka5fkAdFx7fxNaro7b7l7fALVQckDmlDypI4AADD0EaJo1zpdM46siYp+j4JJYHEgWHY7Gye9QmZIqErNciDVtH4xEyB8N0ZAABaRLdzqk/GDBP6DgWomqSGXL5YF2AYiXP43IUs73e+xwqJQ2IpW+LotA3TTNswzbSNPd1WiaNcySZyuBYqESQODENZXaqFXanpD90AMvHi+zvXPUImf3TYAQAAgNbQ7VztEzHDhL5DAaoGiVMiRSTOoU98du+h+QvXtEHjXfM/s35o/rMHw1k+fI8VEofEQiUOALSBNkscRd4EtWu1a464scO1UImotLEEDhIHcnOzc3PdlTJ5s9nZvBRuDiCVMrpSi0KXagAA0B7K7EotCl2qAVRNUkMuX6wLUEjinFs+YzdqPLJwYVAf/L7HColDYmFMnB5MM23DdP3TbZc4EVc6nYuOvEHiVIBKG/t6R6fDWQCZ2OxsLvrETM6cCDcHkEqJXalFoUs1AABoAd3OyT4JU0ae6gz6VToADAcSp0SKSZxcjRq+xwqJQ2KhEgcA2sAISZwlR94gcSog5/UOQB9GLk8cIZMrdKUGedHqGY+IGSanwk0DAAA0yAfki458MJUe+g4FqJKkhly+WBcAiUPaEMbEYdqGaaZt6pxG4oBNzusdAC/DdKlGV2qQhxe7nQOOgBk6L+jwAwAAAI3yI529XgFTRug7FKBKkhpy+WJdACQOaUOoxAGANoDEAZuc1zsAXjY7m0s+QZMxdKUGmXnxA50zPhEzbBZ1GAIAAIDGON7Z0/mgfAkblKc6615J88HOpb5l3QBAVSQ15PLFugBIHNKGMCZOD6aZtmG6/mkkDtjkvN4B8HKrc+uYR85kzd5wMwCpVNCVWhS6VAMAgJbz/s51r8TpxhqVAKBekhpy+WJdACQOaUOoxAGANoDEAZuc1zsAXkzH7L7ZuXnDkTOp2exs8nyDzLxYQVdqUehSDQAA2g8SB6CNJDXk8kWnAEgc0obUMybOijyv/esOSnclaXvbVDm9Ii9Gne6lK/ei3O0rTDNtM8nTSBywyXm9A5BIkS7VbnVuzYWrA6TyiR/p7F38YOfooPgETZjzvuXthLsBAABoKUgcgDaS1JDLF+sCIHFIG1JPJU5xidMkPokDANWAxAGbnNc7AImYjplxJU2G0JUalIpH3vTygc6ZcBEAAIARBYkD0EaSGnL5Yl0AJA5pQ+oZE2cltnzW2BJHp23qmI5LHJkO5ym+5W2YZtqG6fRpJA7Y5LzeAUjE9LpU23AkTWLoSg2qwCtwNEgcAAAYeZA4AG0kqSGXLzsFQOKQNoRKnGSoxAGoDyQO2OS83gEYyGZnc9knbBLCQPJQOl6Bo0HiAADAyIPEAWgjSQ25fLEuABKHtCFNjIkzvbDWmyn4l9+myWnGxGGa6fqmkThgk/N6B2Agtzq3Zj2yJinea3CAYfAKHA0SBwAARh4kDkAbSWrI5Yt1AZA4WfOM6T7ovy9uDjy4zxx75rj5pHc7xJcmKnFsiZOd+DZ6VTprZqU7baat26enu2bFu3lZdqEr87eXjZZf8K+QvRJnbcUsOMfR6ch0dyHhWBT/8Wyv567oVDN5ypQSj3el69y+Fhzv1m1956z/vHamp013QdcEqAYkDtjkvN4BGIjJ2KWaLHM1XAWgVLwCR4PEAQCAkQeJA9BGkhpy+WJdACRO1mSXONvZZ7oXfdsibpoYE0clzuDl/dNul2xxadKfLdayjcljo9NZxsRZW7BkSEL67u/aQt8yvrgVS+79t9HpxON1JE7XWU5v078BcmwDz6sKH1lM/23DNNM2RaaROGCT83oHIJXNzuYln7hxQldqUAlegaNB4gAAwMiDxAFoI0kNuXyxLgASJ2uKSBzNIfNR7/aIndaOidNXaZJzG9MLYdXImlnoq3bxx60QSqvEySJwomxvO/vxaFXO9iGVVYnTn+1jy3iOt84tQHkgccAm5/UOQCpGrrsdYeMLXalBJXgFjgaJAwAAIw8SB6CNJDXk8sW6AEicrCkqcTrm2Dnf9oidJsbEyZRQUui/e3i2Md2raAnoqyDpCZDt6e1s6ZQVtyLGqkgRfFJka75nf92V7YqbtZVu4vG4lS7bQqS3fq/rsl5XbDrdwy9xtucPOF6PxNFjVYL5IW4lz3YFUa97NXte5JB687dhmmmbPNNIHLDJeb0DkIrpmD2DulSTedfCRQFKxytwNEgcAAAYeZA4AG0kqSGXL9YFQOJkjSNxHnyfd8ybT148bo65sueJ433LkXhGtxInrTJGpYlT9eKpIAnGftFxcXS8F2fmoEqc+Dy7YsbCFT16n2K3JaznxS9xbBKP15U43kqatO0759Kzf4BhQOKATc7rHYBMpHSpRmM6VIZX4GiQOAAAMGLslcxJLkku79y583fk79YXtp1v2mk6b5V/75c82vkluW2PBADqJ6khly/WBUDiZE02iRPk4vvMAeu+bi177tD2bUE3a7LNJ/ZZy8ltW2PoPGM+KvPi29lnjj1zPHm/I5wmxsTJGhuddkWQLSKCaad7s4W1ZDGh0za+abcyZXvtsGImil0RFNKb9kkktzu1aTPd7a3v3h8bnXbvv41OJx6vI3G2K2y2CW63lvHNd8+vrXF8y9swzbSNbxqJAzY5r3cAMnGrc2vOI2+iyKUfQDV4BY4GiQMAACPCjGSrYejOO+/c1IYgzcmTJ83p06fN3NxcMK25/fbb7S9xFyXHJABQH0kNuXyxLgASJ2vKlzjHnrCWCW8Lxs9x13ejssfe3xikiUocd+yZbKRXosRlhVa5DLff5EqcDMcS4t1GX1dsdnpSJ+ztzCJ9n1krcbyH6+lybXDilUkAw4LEAZuc1zsAmTAds9cRN0HoSg2qxitwNEgcAABoOUempqY+L38DcXPixAlz8eJFuYIazMbGhlleXjazs7MqdG7p+hK9oD8oAYDqSWrI5Yt1AZA4WZNF4jxjPnnufcndqcUkTn8OPPOMLHfcHPPM68sgiTSCaWJMHFum+JffZnvaLzFiy7sSxxnzJqkCxcae9kmR3vxkodKbv83WMkF6xxew1j/OTF9iFT7p9z/xeAdInGC+UlDi6L9tmGbaJs80Egdscl7vAGRms7MpbzbyphMPDelQKV6Bo0HiAABAS9ktWZYE8kYrbVTMFOHGjRvm1KlTtsyZD7cPANWR1JDLF+sCIHGyxpE4OXLsXLgNj8Q5dk7FzfZ+PupU5/TETm//2r2aPW9ru2OQSarE8a4zgORKnPSxdnpkXE6FzsqCWdDxeaJlw2yfq7T74nbTZh3vAImzhVMdlPNUAQwNEgdsDn38M/Ox6x2ZDmcBDIWvSzW57Ug4G6ASvAJHg8QBAIAWsvcNb3jDr8jfoIu09fV1/b42NLodrczR7U5NTb0qfxkvB6A6kDglgsTJmoISx66YcSVOXzWNU4UTVfBsxTmGvvmjmybGxMlbEaPodExieOa7smJhLVls6HSArjPdq4ixuzALpuXFuL1u/xgw2+mtbxNMO2IkWwWSX/zov937bwsh3/xBEkf/2gS3W8v45tswzbRNGdNIHLB55OM/c+DQueUbeq3zrvkLG4fmP0vPC1AKRq6xbYFzs3PzejgLoDK8AkeDxAEAgJZx8LbbbvvtXbt2bWbpNq0IS0tLRre/c+fO35T9eRs/AWBokDglgsTJmgISx5U0jsTZrrIJ44yF0zdf8sln7Gqc7bFx3AqeWEZA9jRRiZM5sXKQIpU46lGcLstkvS354VbqhOtEJFfiCH3j2kybrmWB1uRY3PnRttdkvwtdnT9tphes4xHWVpztblXvuEJKZUy0QdmeMy93JY7gSiv72HrH1RuvZ0H2ax8zQBkgccDle+eX9z8yv3xU/4Y3AZTCzc7Nq5HE2exsng1vBqgMr8DRIHEAAKBF7N+5c+c37r777s3V1dXet7SK0C9/2k3b1NTUV3W/vd0DQIkgcUoEiZM1GSXOg/vMgQcPma7TTVoQR+L0dYeWMmZOf5A4dvKOiZM53V4FTw+/xNmeL3gkjv67X3AkJDYGjSs1elIkef7gRFU4vnlpiegTUgNjHe8AiRPMj1iLjyE0KPb9sWGaaZs800gcAKgL0zGnIolDV2pQB16Bo0HiAABAS9ijlTE6bk3VAidCvwBqRc7U1NTnZf+MkQNQLkicEkHiZI0jcfq6QssQJE5ixr0Sp4esmyZypp1KG2FgJU7ISjdNrEyb7vaBBGSVMdN993HQeZT9dO37n78SJ0CWjVcQeZI4BhBAcZA4AFAXJuxSja7UoC68AkeDxAEAgJZwUWKWl5fDr2fFcBs77D7lfSwuLkbL2g1QADA8SJwSQeJkTQ0Sx+lOrW/+gCBx8o+JkzmWbdBpV2DYBNOOrLAvF3R6ZaFrph2ZMz3dDboH03/bBMvLi9Fe1nYfseXXevevb9vdha1xdmLLCzq90J3uW0dljK7nWz4g6IrNvi6ylnfu/yCJo39tYtNrvfORdK6U2PIC00zbFJlG4gBAndzs3Fzd7GwuhpMAleIVOBokDgAAtICTEnPy5Mnw61lB+vqc76RKHGVubi5afkYCAOWAxCkRJE7W1CBxfuW4OWbNHwX5UlbqqcQBABgMEgcA6sR0zBlJ4+8pMBl4BY4GiQMAAA2zW8el+c7v/M5bGxsb4VezIvQP4qvJInHW19eNduMmx/FFWQcAygGJUyJInKypQ+L0V9QceOb41n4+eU4rdfaZA0+8LxhzJ/f+W5x6xsTZhmmmbZhmOgKJAwBl8vTDS/slR62clJyJMn/fzy/Y0yOWE+HdhBHBK3A0SBwAAGiYoArn4sWL4deyYiT1GZ9F4ijz8/PROlTjAJQDEqdEkDhZU4/EcbtUG5QDzzzTv/6IhkocAGgDSBwAyMqH3rV05OQ7l+Y+9PD5xZMHz18OsyoxExLeb0YMr8DRIHEAAKBJdu7c+VsPPfTQZvidrBiebtSiZJU4WgV09913b05NTX1e1gOA4UlqyOWLRAGQOFlTk8QJl0sVOUX23+LUMyYO00wzbcN0/zQSBwB8PP3w0kGtPDl58Py8ygtLZExyeL8ZMbwCR4PEAQCABjkoMUtLS+HXsiL4u1GLklXiKGfPno3W8zaIAkAukhpy+SJRACRO1tQocTQXnzEffWKfOWDvU7tSe/BQ0JWad50RDpU4ANAGkDgAoPzYoaW9Tz+8dFJFxdMPn99w5AXphfebEcMrcDRIHAAAaBD9EArGpClKUjdqUfJInOvXr0frzUkAYDiSGnL5IlEAJA5pQxgTh2kbppm2qXMaiQMwuTz98NIerbZ5+uHzlzzCgvSH95sRwytwNEgcAABoije84Q2/cvjw4eJdqbndqHVXzIp8uG1NS/JIHOXtb3/7H8h6XOgADE9SQy6vrwIgcUgbQiUOALQBJA7A5PH0w0szTz98fpmKm9zh/WbE8AocDRIHAAAaYq/EnDp1Kvw6lhe3G7WuWZFbh5U4J0+eNFNTU9+SdQFgOJIacvkiUQAkDmlDGBOnB9NM2zBd/zQSB2Ay0O7STvbGt7lhSQmSL+PyfjMj0evNy1NTU/9K/m693+/cufMbenuYk5KR7h7fK3A0SBwAAGiIYDycxcXF8CtZPtxu1LpqcIRhJQ7j4gCURlJDLg0XBSgkcT7+mXlb4jx67jMXw1k+fI8VEofEQiUOALQBJA7AeBN2mXaGqptSMsrvNwckS6GkCd7bjxw5ElxLzs7OmtOnTwfRac3dd9+9GS0nWZVoN/m7JSOFV+BokDgAANAQ+sXKXLx4Mfw6lgNPN2oRw0qcpaWlaN0jEgAoDhKnRApJnPnPHrQlzuH5C/oLtiR8jxUSh8TCmDhM2zDNtE2d00gcgPHk9HuWdj/98NLJpx8+v+6REaRYRvH9RnttWZQE7+d67ag//s0ylrJ+PszNzW0Jnampqa/K31nJyOAVOBokDgAANMQJibl69Wr4cZsVfzdqEcNKnEuXLkXrDmrsBIB0kDglUkTiKI/MLx89dG75zKFzLx8Lb0rC91ghcUgsVOIAQBtA4gCMHx9659LsyYPnrzsCggyfUXu/mYsqb2ZmZsz169fDd/78LC8vm3vuuSeSOZ+XvyPR24pX4GiQOAAA0BBa2pr7QzmpG7WIYSWO9aVQJRMAFAeJUyJFJU4OfI8VEofEwpg4PZhm2obp+qeROADjw4fetXTk5MHzq454IOVllN5v5iVBl2n5f+zrZ2NjI+gy/4477ri5c+fO35Htt77HFa/A0SBxAACgIbSkNfgSlpkB3ahFDCtxtHu3cN3Gv/gBjDhInBJB4pA2hEocAGgDSByA8eDkwaVTHulAys0ovN/sue22235W/gZdoVXBtWvXgqqcqampb8l+Wt29mlfgaJA4AADQEPrFKihxzYpbhZM3HufTh/a1Gi5/UAIAxUHilAgSh7QhjInDtA3TTNvUOY3EARhtfuzQ0t6nHz5/ySMcSPlp+/vN7qmpqVflr5mfnw/f5avhxo0b5vDhw0H3apLWdp/vFTgaJA4AADSENjrm+qCuQ+KcPn06Wl4H0wOA4iBxSgSJQ9oQKnEAoA0gccDH984vl3E9BBXz9MNLB08y9k2dafv7TdCFmnZ5Vgcqcu67776bO3bs+Kbst5U/3PUKHA0SBwAAGmKPlrKePHky/DhNpw6Jc+LECR307uuyPAAMBxKnRJA4pA1hTJweTDNtw3T900gcsDn0ic/uPTR/4dqhcxdM8Femw1nQMp5+eOnoyYPnbziSgVSbNr/fBOMkz87Ohu/w/cS7y++aDE06fbjtSO/8iV8wd955p3at9rpM75G0Cq/A0SBxAACgQS5qv6ThZ2sqdUgcHfBOlrUbowCgGEicEkHikDaEShwAaANIHLA5tLB8KhA4W1mmobOFPP3w0szTD5/f8EgGUm3a+n6zV3/U+9BDD21ubGyE7+4O7pjIRSRO3zZ64yZbYyFrJVCr8AocDRIHAAAa5ITErK6uhp+wwxP/pUbvAzor1hfCVg90BzAiIHFKZLQkznFzzLMtbx7cZw48eMh0zz3j2c4QuXjcdJ/Y17evY8+UvJ8JSxkShxBCagoSZ0I4dO7C5bjEucD5bRkfeufSMQROY2nr6yHoRi2xLcgjX/JLnDWzMO1uY7uNaGZmRnth+Zbc1qrqPa/A0SBxAACgQfTDMhiHpiyGkTjatVv4Ib5bAgDDkdSQyxfrAoytxLHzxHHzSe/28iZ5/weQOEMFiUMIGaEgcSYEJE67QeA0nja+Hg5qu4tKlH7WzEpiDyz5JE5STy5RG5EKpPC2ZUlr8AocDRIHAACaRD68P3/33Xdv6gBzZVBU4ly/ft3s2rVrU9a5KAGA4UlqyOWLdQEmQuJISpEs5w55t605ds6zPMkcJA4hZISCxJkQJlXi/Nihpb0nD56ff/rhpVYOzq7osSFwGk8bXw+LEqcKZ82srXTNtKdyZjs5JI63kqcXu41IRVJ4exnfp0rBK3A0SBwAAGiYGUlQBVMGRSWO9eHd2otggBEjqSGXhosCTIrE6XQOmY96t5k9n3zG7kZtH+KmxCBxCCEjFCTOhDCpEufph5f2Ww311yWtEjqn37O0++mHz1+zjpE0k9a9Hm677bbfPnbsWNgS08Ntx/Enq8Txd6MWxW4j0h/zhreflLQCr8DRIHEAAKAFXNYqmPX19fCjtF6sMlq7EQoAhiOpIZeGiwKMtMR54rhnmV4+ee6QOWAv29lnuhf9y2aNK3GG3R7ZTkaJc0niW4YQQurMEUmjXEHi1AISJx4VJzLvzDOPLMklVnPIscy7x0YaSdteD/q8NEtLS2FrTI8+iTPdNSt91TTZJE5SN2pR3B/63nfffTfl9tacJ6/A0SBxAACgBegvhszhw4c3NzY2wo/SetD9PfDAAzd37NjxTTmGVg1oBzDi6IWw78KZhosCjKvE0Xz0CWtZSX/lzDOyzL647Hlwnzn2THwMnbi88cR3HBePm6677Y5MP/E+89Ek+RPrrk0rh54JtrF124Ny2zPuMiqs3meOyXFv3+7eh/77eUC35T2ObOdkK1mOOYPsyihxzkp8yxBCSJ1pfIzLK0icWkDiJKcpoaPj4PiOhzSStr0eVEQY9we82xJn2nQXVkygWYpIHHed7kpqby2nTp2KxkbeI2kcr8DRIHEAAKAlaPmqmZubCz9K68HqRu2EHgQAlAYSp0QmVuJcfJ8jWJyofAiXzStxUpeXeMfocYTIMef4A0nSt8yAfQXHJefsQc+8IE41UY5zkuuY3XU8yShxtKFoQ+JbjhBC6kgrquuvIHFqAYmTOauyzkldL9xEZei+nH2T5tK218Olhx56aDNsjtlipTttpruhvInILXHcbtR6y6dJnEuXLkXzZiWN4xU4GiQOAAC0iGWJWVxcDD9Oq+Xs2bPRh/W87hwASgWJUyLjKXGeCbpTs/cXlwnOdpLy4PuC6pM8EieLwInSJ3L6jjmeYPmUZXInvI95z0muY7aXT0hGiaPoDyMQOYSQJnJV0opfU19B4tQCEqdQAqHzY4eWSu+JQrfr2R9pLq16PfjGw0kkp8Rxu1HrhgunSZxr165F8+YkjeMVOBokDgAAtIjdU1NTr8rfQLBUiZbM6n4k2nd/490tAIwhSJwSGWmJkyeWaHErdLZFQ68rMXueXb0TFzSeMXH6Kln2yfrbEiN1nB6PELHXT1rmgNXVmVci2V2a9R1jT24VPSeZjjlDckgcRSty9Mumfs7q654QQqrMoqQVDXARV5A4tYDEGTqXT75zaa4MoXP6PUu7n374/LpnH6S5tOr1oN2WnThxImyVSSGPxPF0oxaRJnFu3LgRzWuFJPEKHA0SBwAAWoYKlaAiRz/cyx4jR7dndaGmX/YQOADVoF8YoteaHRouCjAZEmdAFU5fNc8zpmt3P5ZYZdMvceIixCN5NK5EsffvChG36sW3TN/xu+coy3EWPyeZjjlDckocAICJ5goSpxaQOKUmEDqy7ULVbB9659KsZ5uk2bTp9aDPK3P69OmwdSaFzBLH341aRJrEUXbt2rUp81pxPesVOBokDgAAtBT9gDJ333335vLycvjROhzaTZtuT7cr0TF4AKA6kDglMu4S58AT74sPrO9IFF93X3FZsy2ABkscR3QkyowByzlCxNsVmbNMrComiHOOPMfRdz/OFT8nmY45Q5A4AADZuYLEqQUkTmW5KPs4kUfoPP3w+Uue7ZCG8uz3/o/mzA+8///Wxv825L/9s50FeZqULnGSulGLyCJx3va279p8+3d2Vn3HXXvkeL2ReXL8AAAArWRmamrqdflrdPC7ixcvhh+x2dHKG5VADzzwwE3dzo4dO/61/D2mGweASkHilMjYSpwHHXkTxa0cSU1WiZNWzbKdeCVMshDpFzRZlkk/jr778Uzxc5LpmDMEiQMAkJ0rSJxaqFPiaJdjEyoqLmqVjXaXFp6KPmqQSiRHzvzJ4+aFD7zBLwMajDxVzMmTJ8PWmhSySJwB3ahFZJE4evu7v8d/zK0JEgcAAFqOXiiempqa+rr8NXfeeeemdrOmQmd9fT38yI2jt6u4mZ2dNbfffvstXS9cn+obgPpA4pRIEYnznqWl3Y8sXFjSBo1H5i9cOvSJzw7q69z3WJUjcWxBcfF4vMJFo2PBxNaXIHGQOAAAI84VJE4tqLSxBE5lEicc7+War8F8UiL3f0Oy7BM6WrXjW4fUn//2yNlWChzNH969M+g2PxMZJI5bhZM36ny0/Uj//YOP+I+5NUHiAADAiKCNjzpYaV/D8K7bd5mjR4/GbrNyUXJCUqhfXwAoDBKnRIpInMPzF2bijRrLgy78fY9V+RIniNNVmcYVOU53anmkw2CJU353arVJHKc7tVwiBokDAFA7V5A4taDSJn69U43EefrhpRlfg/mkRoWO/F3S86LnR/9tzyfN5W8ee9IvAVqQt3z7zqDtJhM1SZzV1dXg38eP+o+5NUHiAADACKJCR8WMfoid6Xxn5z913iofwm+TPBLmT0j+cudndGEAaAQkTokUkThB9U32Rg3fY1WRxNF4RE5suewVM24GSxy3wqZ/fpBBY/I0JXEuFj8nSBwAgPq5gsSpBb2+yXG9U5iTB5dO+RrMyfnVsArnunM7aSjalZpXArQgB/d3zL573hYqmBRqkjjay4v++8M/6D/mtuSFLj3LAADAqPP+zvWOfKh5QqMSQHMgcUqkiMTJ2ajhe6wqlDgSR5RobLkQly0qUo5vVcN8MqhK2WcOPPE+0z33TKyaJk3i9O93n+x3W9J88tyhvvmxbTQmcYqfEyQOAED9XEHi1ELO653CPP3w0hlfg/kkRruV0/PxzCNLcsnUw7ccaSYfPnSutd2pabWLPF2C6pdUapI42r3bt+2e8h5vW/J8t7Mhf7debwAAAKMJEgegjSBxSmQsJY7GkQsxYeKRPEmxK2VSJY7ElSGDEqvC0TQocYqeEyQOAED9XEHi1ELO653CIHHOX//QO8+ftcVNhJyb/Z7lSYP5yXefMs//1Td5hUCT+am/3Lt2PH36dKhhBpBB4mRhRfa7vY2OmV5YC+f0eNOdd5jp+/3H24Ysdjs3XvxAZ1aOHQAAYMRB4gC0ESROiYytxJH0CRVn/JlUaeGMa5NF4mg++oS9nC/7zDFX4GialDg6r8A5QeIAANTPFSROLeS83inMIImj8xrIgu9YSo52kTYv+zoYngYvKnac9UhL8pPf/+y/XPxg52ibcsfuqS8+/PBDt0KHkkwNEufSpUvBbe+8t/M3fcfadJ5/qnNEjg8AAGBMQOIAtBEkTomMs8TpW14SqyK5+EwgXA7ExtDR6UNBt2HxbWWXOEEuHjdd37afeJ/5aNJ6TUscTc5zgsQBAKifK0icWsh5vVMYFSe+RnJNuEityPFUUv3y9MPn1z/08PlF2f7RcFep6LK+bZFWpI3vNzq2SzAWzUBqkDgPPfTQ5o4dO74pt++RAAAAQKUgcQDaiH5hiF0wh6HhogCjJXHIuAaJAwCQnStInFrIeb1TmDGXODckS3nEjY2sd9DZHmlP2vh+s3tqauqr+/btu7WxsRHqFA8VSxyVSOFt8xIAAACoHCQOQBvRLwyxC+YwNFwUAIlD2hAkDgBAdq4gcWoh5/VOYcZQ4kTiZibcZGFKOBZSXdr6fhNU48zPzwdCpQm0CkdlkhzH7uCIAAAAoGKQOABtRL8wuA29GhouCoDEIW0IEgcAIDtXkDi1kPN6pzDjIHGefvj8hmT5Q+9cmj39nqXSGq51W779kVakre83QTXOnXfeuXn9+vVQq9THqVOnomtYlUkAAABQC0gcgDaiXxiii2M7NFwUAIlD2hAkDgBAdq4gcWoh5/VOYUZc4lwsW9y4yD6uO/sk7Uib32+OTE1Nfesd73jHrRs3boR6pXqsbtQuBUcBAAAANYHEAWgj+oUhukC2Q8NFAZA4pA1B4gAAZOcKEqcWcl7vFGYEJc5FWeaEpJYB22V/S87+STvS9vebWYk5duyYGTg+Tkmsrq6aXbt2be7YseM3ZL+1vDYAAAAgAokD0Eb0C4Pb0Kuh4aIASBzShiBxAACycwWJUws5r3cKMyIS5/LJdy7N/dihpb3hYrWhwshzPKT5jML7zRmJOXr0qKmyIkcrcEKB83uyP+/3JwAAAKgSJA5AG9EvDG5Dr4aGiwIgcUgbgsQBAMjOFSROLeS83ilMiyXOalPixuaZR5YO2OeEtCaj8n5zSmLuu+++m1WMkbO4uBhcs+7YseNfy98DukMAAACoGyTOuKIXV1perb/MIaOX6xK7kTcKDRcFQOKQNgSJAwCQnStInFrIeb1TmLZJHB3fRkVOONkK5Fxcds8NaTyj9H4zq2Pk3HnnnZunT58upXs17T5NK3xk25qrErpQAwAAaAwkzjgyJ4kutsh4hYaLAiBxSBuCxAEAyM4VJE4t5LzeKUzbJE4bkXNEl2rty6i93xyRqGwxd9999+b8/HyhLtZU3szOzgbXqTt27Pim/D0r2S0BAACAxkDijBt64WY3DpLxCg0XBUDikDYEiQMAkJ0rSJxayHm9UxgkTjpaHSTn44Z7fkijGdX3m5kdO3b8hvwNrjVnZmbM0tKSuXbtWqhp4mjVzuXLl83JkyfN2972tpvRehK9Rm20q0EAAACIQOKMG0F/uGRsQ8NFAZA4pA1B4gAAZOcKEqcWcl7vFAaJkw05Tyd954g0llF/v9Hu1ZfDaprY9edDDz20+eY3v/kP3Nsl1yTavXeruhsEAAAAJM64oY+beyFGxicXJZATJA5pQ5A4AADZuYLEqYWc1zuFQeJkI6zGue6eI9JYxuX9RrtCm5FE468uS/S+abSrNL3tpETH1QUAAIBWgsQZN5A4450TEsgJEoe0IUgcAIDsXEHi1ELO653CIHGyI+dqxneeSCPh/QYAAABaAhJn3EDijG/0V1JQACQOaUOQOAAA2bmCxKmFQ+deXo5f77ysv9AvHSROPuS8LLnniTQS3m8AAACgJSBxxo0kibMuOUpGNloCDwVB4pA2BIkDAJCdK0icWjh07uVj9vXO4fkL2uVS6SBx8iHna4+cG7pVaz683wAAAEBLQOKMG0kS57oEYCJB4pA2BIkDAJCdK0ic2nhkfvnooY9/Zl6FTnhT6SBx8vOhdy0defrh8xu+c0ZqC+83AAAA0BKQOOMGEgfAAYlD2hAkDgBAdq4gccYKJE4x5LwxPk6z4f0GAAAAWgISZ9xA4gA4NCVxtNH+wUfuJSTIrl23eZ8nEj5vAQAcriBxxgokTnHk3J3wnTdSS3i/AQAAgJaAxBk3kDgADk1JHEIyhs9bAACHK0icsQKJMxyInMbC+w0AAAC0BCTOuIHEAXBA4pCWh89bAACHK0icsQKJMzxyDmcYI6f28H4DAAAALQGJM24gcQAckDik5eHzFgDA4QoSZ6xA4pTDh961dETO2Q33HJLKwvsNAAAAtAQkzriBxAFwqEHirEp8rztCsuSkBAAALK4gccYKJE55yLnc//TD56/6ziUpPbzfAAAAQEtA4owbSBwAhxokzqzE97ojJC363rxHAgAAFleQOGMFEqd8PvTO82d955OUGt5vAAAAoCUgccYNJA6AQw0SRzkm0WUmMve94c3/+ugd9xtffMuTIMuSvRIAAHC4gsQZK5A41fChdy4dk3N43T2npLTwfgMAAAAtAYkzbiBxABxqkjgTjXnkxTMS40u4CAAAQGauIHHGCiROtcj5Pfn0w+fXfeeXDBXebwAAAKAlvL9zzSNwTOeDncVwCRgtkDgADkic6jFIHAAAKJErSJyxAolTPaffs7Q7PM833HNMCof3GwAAAGgJWnHT7fRLnKc6J8IlYLRA4gA4IHGqxyBxAACgRK4gccYKJE59/Nihpb1yXufd80wKhfcbAAAAaAk/0tnb16XaB+TL0fHO7nAJGC2QOAAORSTOI/MXLiFxsmOQOAAAUCJXkDhjBRKnfuSc73/64fPLkg3feSeZwvsNAAAAtIjjnT2dD3TOdLqdZclJBM5Ig8QBcCgicQ7PX5iJSZyF5VPhLPBgkDgAAFAiV5A4YwUSpznCbtZOPP3w+Uu+808GhvcbAAAAiPFOyUuS35XYDe//XPIhyV5JGvdJdBtvCaZgUkHiADgUkTiKihutwHn03IWzD89f3BPeDB4MEgcAAErkChJnrEDitIOgq7V3Ls3JeV91HwfiDe83AAAAEPBGiYoXu7E9KR+W+IjkjS7zZQkSZ7JB4gA4FJU4kB2DxAEAgBK5gsQZK5A47eOZR5YOhI8LQic5vN8AAABAwKcldkN7Wn5Q4mJvA4kDSBwAByRO9RgkDgAAlMgVJM5YgcRpP/IYHZWclMdkSYLY6YX3GwAAAAi6ULO7T/tliVbVRGiVzmlJNF/zixK93QaJAzZIHAAHJE71GCQOAACUyBUkzliBxBlNHLFzOcwkCR7ebwAAACCoqoka2FXmqNTxkSZpkDhgg8QBcEDiVI9B4gAAQIlcQeKMFUic8UUe2/2h7BnHHAzvJgAAAEwwOsaN3ciuMsatshmEu74b3V6EbvenJXblz5ckH5IM2ud7JZck9nZ1G3qbTzrZYioSSu42dH17v75j0+XtqiTIDhIHwAGJUz0GiQMAACVyBYlTC+9ZWtp9aH75xCPzFy7pX50OZ5XK00gcAAAAABhRbOERRUWGCo29kjSyShy32zY32o2br3pHj8O3vJ1ZiY0rcS5Y0270+HS/un/ffD3mpOokSAaJA+CAxKkeg8QBAIASuYLEqYXD8xdmDp27YLYyv3winFUqSBwAAAAAGFW0AkXHuLEb2u2o3NAqliSySByVJCpTfPPtuGPtJHX1ptUx9vbc7tt8YmqY+MYAgsEgcQAckDjVY5A4AABQIleQOLUQVOBYEkenw1mlgsQBAAAAgFEmrUpGo/MHdXumsiZa1pUq9jyNih8l6sLMnqcCJsJeL1onwpZHbrWMT+KclkTH7hNPKquirtPc8+HeH0gHiQPggMSpHoPEAQCAErmCxKmFQ+cuXLYljk6Hs0oFiQMAAAAAo44KjKQuxey4wiQiSeK4VTi6nI2KFbsSyJ2fRB6J427TPSbffbLvT9J9hmSQOAAOSJzqMUgcAAAokStInFpA4gAAAAAA5ENlzksSu+Hdja8yJUniuFUtbkWNYgsZ37YjdIwe7drNPb40iWNX9yiuxPF1lzZIEkE6SBwAByRO9RgkDgAAlMgVJE4tIHEAAAAAAIqjQuc5iS1horgyJkni+Lo2GxRX4mSRSsNKHF/1DxJnOJA4AA5VSZxDn/js3kfml482mfBQSqXI/br2pz553idwNL7lB+XwuQtHwkMple+dX97v219dGdf7dWj+swfDQymVRz7+Mwd8+6sr43q/dP/hoZSKni/v/upKRfdLX7fe/dUUfX2Hh1Iqo3C/rhSQOL591Rn9/AwPpVR8+yor7zq3vIrEAQAAAAAYnlmJ3Rjvio8qJI5vXR3kUqtxdIyb6DYkTvtA4gA4VCFxDi0sn3rX/IUNp+Gj9jxy7sL1MhubD51bPuPbT1pe+m8+7RU4Gt/yaQnuV4mNYYc+/pl5335qz/yFa2Xer0cWLix591NztBHwPUtLu8PDGppHz33mom8/defR+Zevlnm/ZJvuL94bSZkDl+v50fPk20/d0edNeFhDo6/T4PXq2U/defTc8mJ4WEMTyDZ9f/Xsp/bI+3J4WF6u5JA4gZRqy/2S64PwsIZG79e75n9m3buf6oLEAQAAAAAIySIzItyxa9wuyJIkjsoPu5LHFSpJuMfm7m+QZEHiNA8SB8ChbImjjZZtEDhbSWkIy4o2Wha9X2VLnF6Wz4SHNhT6i2//9pvJo/MXToaHNhTaGOvbfmOZXz4RHtpQ6C/DvdtvKIfnL8yEhzYUuh3f9puKnufw0IZCH3ff9htLSVJbX6fe7TeUsipyDp17edm3/SYSfN4MkNpXckgcFZO+fTQRvV9lyd+GhDYSBwAAAAAgxBUzg2RFmvhIkjhZhImPNPmDxGk3SBwAh2okTu2/jE3Mo+cunA0PbSgenr+4p1USp6RfMw8jpyrJwstz4aENhXYf5d1+Q3l04YJWDg9N6+TUuZePhYc2FLod//abSVnd+7VOTpXUrZq+Tn3bbywlVfC1TeLo5054aH1cySFx2lK918vyjbIkThOPV1nXFC5IHAAAAAAYVWxZoVFhod2V2fwxyS9L7OVcMWJLHFt6qCiy52m0K7Soqkb39SWJjnuj/45udyWOHmdEmnxC4jQPEgfAoZru1LSBb/mGrwGk1sxfuFbmmAn66/MiwqNsiRP00V9So6WiVT1tEDna7dSgRsu8aGObbz8N5HJZjZaKdh/l2UftKbPbMaU9DegvL4eHVAptqYIos9sxfZ22p5u48hrVVXJ5xkCpPb3348HVlldySJxA/rag+zu9X2VVWyr6eNXaTVzJ1xQ2SBwAAAAAGFVcIZIlbtdmiiuDoqggcYXMoESyxhUt+u/7JLrfnw5vs2OLGiRO8yBxAByqkDiKNvLZgwPXnbK6DXIpcr+u/alPnvcJHI1v+UGp6n6pFPLtr7ZUNPD6uN4vbUj07q+mVNWQOa73K2hs9uyvrpQpfW30/ci3v7oyrvcri8y+kkPiRARj43j2V1fKlPQ2ddyvqj57I5A4AAAAADDK5BE5PoGjJImaSJCoSEkTOe62k8SQL5H8UZA4zYPEAXCoSuLANuaRF8+48iZKuAgAAEBmrhSQONBekDgAAAAAMA6oqNBuzbR7M7vhPeruLE1kaHdodrdrKj+067QI/RWfVtHY29dltJsQtwu3CO3b3l5e//0hicoelS/R7bYAQuI0DxIHwAGJUz0GiQMAACVyBYkzViBxakW/3+v3fPuHnPrvLO0KbUSP2b4vbhtDW9HeTPScaxsIAAAAAEAMJA6AAxKnegwSBwAASuQKEmesQOLUgsoOdzxdX1Qs+Hr4aCujJnEieaPHqj9gReIAAADAWHNMogPv6hc1kj3rkugC186GxLc8GT7zkkr6rIdyQOJUj0HiADSNVlDrDzk0eg0FMNJcQeKMFUicynF7xEhLUlftbWTUJI7dawkSBwAAAMaaOUl04UPIKOSGpJLBvWF4kDjVY5A4AE1xRHJV4n4unZAAjCxXkDhjBRKnUlzJkTW+rs3bCBIHAAAAoKVo1Uh04UPIqEQrx6CFIHGqxyBxAOpGK0CTulDV6I8LdksARpIrSJyxAolTGVpNo1U19vu/Co9oLNsIX1droyIYkDgAAAAALeSgJLroIWSUck0CLQSJUz0GiQNQFypmTklU0rifQ260SgdgJLmCxBkrkDiV4QoO/bfe5sMnfD4s8RGN6+JuW2/TeTZ2V26RtHiv5FJ4W7SuLZb0709L7O3r8u62FZ/Esced0eh83Z4trvQ49HiiZXyVR4OEi25Lj/lLkmgZTXQe3POs59Jezo27/zznOMI91+55UFGXtC4AAABAqRyVRBchhIxSrkughSBxqscgcQDqQMe60R8MuJ8/SdFrKoCR5AoSZ6xA4lSGKw6SpEyEigeVEj8V/ttHmozQ2PtxxcIFa9qNigwVJW5VUBSVGO5xuRLnOWfajr3+MBLH3WdS7POQdt7s/ec9xxHuuf6cNR3dZosoAAAAgMpA4pBRDRKnpSBxqscgcQCqRN+n7F80Zw0SB0aWK0icsQKJUxm2hPAJkLxkkQtRIslgi4UyotVCdkVNVqESJRIZRSWO7tutWEqKfc6zSpwi5zgi7Vy7ywMAAABUBhKHjGqQOC0FiVM9BokDUAXaddpZSdGxApE4MLJcQeKMFUicSnBlw7BVGK4s0X/PSiL03+58XccnFk5LIhHjkxZ2t1/uft374ZM4dtdpuh23skf3WVTiuPuz74v+1X1rNZNWBPm6LvNtM6LoOY7wnWt7fQAAAIDaSJQ4ly93jDGENJsTJ/zPTwkSp6UgcarHIHEAykYbZdYl7mdNniBxYGS5gsQZK5A4lVC2xLHlgysPIlwJoeu4YsGVJa5M8W170L7dfbqVOorvuMqQOL5jTcO3zYhB9zPCd18i3HPtOxcAAAAAtYDEIa0OEmf0QOJUj0HiAJTFQclVifsZUyRIHBhZriBxxgokTiWUKXHcbSXJAd9y+qODaFqjosHGlSm+bdvVOq7ccKWGr8sw33FplUwRieNuS/f9kuSPSXznxCVJ4viO0be9Qcu5Eofu0wAAAKAxkDik1UHijB5InOoxSByAYdkjWZS4ny2JeaPkcec2J0gcGFmuIHHGCiROZWSp7MiCK1p8wiPClRRPWdOaNInj23YeieNuP8I9Ll0vbb/uOpFwcfdpJ5I6vq7UlKRtDnOOo224EifpXAAAAABUDhKHtDpInNEDiVM9BokDMAwnJTck7udKYv685OclC9ZtniBxYGS5gsQZK5A4lWHLD01aZYbKCR3PJaosiRhGMIyjxFH2SnT8mySZo/FV0yRtc5hzHG0DiQMAAACtAYlDWh0kzuiBxKkeg8QBKIJe86xK3M+TxByUfFISNWgjcWBckec3EmeMQOJUhis4XAHiYssBTSR9BnXhZeNbLm93aj55kUfi+ESV77jSulNz17FliYsKnb8gUfnlSh33eJIEzDDnOFoOiQMAAACtAYlDWh0kzuiBxKkeg8QByIM2Bl2UuJ8jifl2yX8ncRu0kTgwrsjzG4kzRiBxKsNt8NeoZPiQxBYEKkJ+WeIuZ8sSWz648yJ8QiVNLJQtcXzyw11G9+Hu113PnT9I4ti459zdbpLEUYqe4wgkDgAAALQGJA5pdZA4owcSp3oMEgcgC7slZyQbEvczxJtdkicl/1TiacxG4sDYIs9vJM4YgcSpFLfRP2tcmeJuR/+tVTYR+m93vq5Tt8TRqDiJxqTRv66g0mNwZYsmuj+6jjvPFi66z5+SaNdzpyW2pHmvxD6eQRLHvi+6jHtf9N9ZznEEEgcAAABaAxKHtDpInNEDiVM9BokDkMaMRD8n3M+OxByWXJB4GrG3gsSBcUWe30icMQKJUzna+O9+BgyKSg9f1YktINISVYg0IXEGxZYq9nbTEkkc9/6kxb2/SfuM7neRcxyRdq4BAAAAagOJQ1odJM7ogcSpHoPEAUjigOSSxP3MSMw9kr8j8TRe9wWJA6PI5U5nj+TMoMjze9V9voe57lveCZ/tLQOJUwtuhUhS3MoRFx3M37deFN3HU5KINLFQpsTRvxfCf/viyil333Z0Wy9a03YlTlb5o+fKJUk62fc77zmOQOIAAABAa0DikFYHiTN6IHGqxyBxAFz2SOYl7mdFYt4o6UqSuk7zBYkDo4o8f6+7z+eSsnG513UhtAgkTm2onFGZ4/54QKWADspvy5FBaHdjurx2J+ZuI+rGLKJuiaPT7n3U21WM+ORUdF/sZaP7YR+7LXEU3zmw1x90LvX47C7edB3tls0mzzmOQOIAAABAa0DikFYHiTN6IHGqxyBxAGzmJOsS93MiMT8g+UcST4P0wCBxYFSR5+9Z9/lcUpbDXUCLQOIAAAAAAIwXSBzS6iBxRg8kTvUYJA6AckRyVeJ+PiTmuyXPSzwN0ZmCxIFR5bK8XnzP6WEj27UHCYeWgMQBAAAAABgvkDik1UHijB5InOoxSByYbPZKliTu50Jivl3yjMTXCJ0nSBwYZeQ5XHaXanSl1lKQOAAAAAAA4wUSh7Q6SJzRA4lTPQaJA5OJNhafktyQuJ8Jifnzkp+XeBqgcweJA6OMPIfn3ef0kLkYbhpaBhIHAAAAAGC8QOKQVgeJM3ogcarHIHFg8jgmuSZxPwsSc1DyP0s8Dc+Fg8SBUeayPEd9z+uike2dCDcNLQOJAwAAAAAwXiBxSKuDxBk9kDjVY5A4MDnoe8YlifsZkBjtOu1vSXyNzsMGiQOjjjyP193ndcFoV2p7ws1Cy0DiAAAAAACMF0gc0uogcUYPJE71GCQOjD/addpZyYbEff/3ZpfkhOSfSjwNzqUEiQOjjjyPF93ndcGoXIWWgsQBAAAAABgvkDik1UHijB5InOoxSBwYb2Yl6xL3fT8xf1RyQeJpaC41SBwYdcrqUo2u1NoNEgcAAAAAYLxA4pBWB4kzeiBxqscgcWA8OSi5KnHf7xNzj+TvSHyNzFUEiQPjgDyXb7jP7byhK7V2g8QBAAAAABgvkDik1UHijBTa/dHsH+n8yX/81s5Ro3nTzv3B4xVN39a582dl+pTkgAQKYpA4MF5oY/CixH6PH5g3SroSX+NylUHiwDggz+Ul97mdM5fDTUFLQeIAAAAAAIwXSBzS6iBxRoIZyfLU1NS35G/w+OzZs8ccPXo0loMHD8Yewx07dvyG/D0j2SuBHBgkDowPJyU3JLH3h0E5JvlHEk/DcuVB4sA4cLnTOeZ7fmeNrD8XbgpaChIHAAAAAGC8QOKQVgeJ02qOTk1NfV7+Bo/JzMyMWVpaMjdu3JDHLpnV1VVz8uRJs2/fvlu6Xih/dABzumbJiEHiwOij1x+rEvt9fWC+R/K8xNeoXFeQODAOXO50dsvzuXCXarI+P75oOUgcAAAAAIDxAolDWh0kTitR2XJRYu68887N06dPp4qbJK5evRpU6ei2pqamvi5/9Vf5kIJB4sDooo2/wftH1ny75JTE15hcd5A4MC7I87lol2p0pdZu9D127r47D105snfG7L/zQfNdbzwQ/NVpjcw/IeGHMwAAAAAAIwQSh7Q6SJzWcWBqaup1+RtU06yvr8vjNDyXL182Dz300KZuVzKvO4JkDBKn7ej4UBBHz4l2n7ghsd/LB+ZJyc9LPA3JjQSJA+NC0S7V6EqtlQTiRqKCLfa+tHv37q0fy3iiQh2hAwAAAAAwAiBxSKuDxGkVR3fu3PmN22+//dbFixfl8SmXjY0NMzs7Gz2+2rBAQ3gCBonTFvQzVAfkvyyvjd+Rv9HzN4i+XnSeZEmiY0dNKvpaviSJnZ9BOSz5nyW+RuQmg8SBcUHemLRLtQ33OZ4WWW9/uAloHn1vPRV+1pg3velNt06cOGH0Gi3pRzZ6+/LycnC9pddzuh6V0AAAAAAA7QeJQ1odJE5rOKJj19x9992bOqZNlWiFj+xPo42+4MEgcZpEf/E8b0ubgwcPBr901ueudi+oOXXqVHDbkSNHoudz1FCmQuegZJLQxsGt8zAocnLN35L4Go/bECQOjBPynF52n+MpuRquCs0zI59DvyV/g8+gIj+u0R/PqNCJKqHDSutjunEAAAAAAGgXSBzS6iBxWsFebbDW8W+uX78uj0v1aAO47FdD12oeDBKnCbS7mbMqM+Vv0Gg2Pz9vsrwm9JfPi4uLbpc2KnNUCE0CqWPg7JKckPxTiafhuDVB4sA4cbnTmfU9z5Miy58KV4Vm0a4pjf6wRiVMGehnlG5PtyuhKgcAAAAAoGUgcUirg8RpnN1TU1Of37Vr16aOW5OPNbOy0DXT0/bjNm2muwtmZS1cZAAzM8Hguxr633cwSJy6mQmraAIRM0w1mkqfqNvAUAhNQmOZdikXvZ778kcl/0jiazRuW5A4ME7k7VKNrtQaR7tPW5bI9fGJoJKmTHR71rWXdhVKt7YAAAAAAC0BiUNaHSRO42glTPALzTysrXTNdP9jFsv0wmCTo40J2sVH2NA9KRULmTBInDoJugLbt2/frUuXLoXPzuFREWRV5mhj2TjjlTjfLlEp4mssbmuQODBuyPM6a5dqdKXWLPqjmlflrzl79mz4SVINVjW0dmuLyAEAAAAAaAFIHNLqIHEaZa8KFO02KhcrXd/j5U13JVwnAW3oDpcd90buXBgkTl0EElPHtblx40b4rCwPFZVRVY5knBvLvBLnoMTTUNzqIHFg3JAX5wnfc92NLKddeEFzBBU4eX9UUxQVRbo/Cd3aAgAAAAC0ACQOaXWQOI0SNGDn6kZtbSG1AieW6QWT1rOa1bXHpA0Gn4hB4tTBWUkgWcrussbF+tWzjh0zjiBxAFqKvDj3yHM7tUs1We5AuArUT1AROjc3F35qZGBtxSx0p51rMu3SdsWsZejSVrGuv05IAAAAAACgQZA4pNVB4jTGHq3C0S/weVjpuo/TtOluDYCjY+RM981P6VXNrsbRgeBBMEicqpmVmGPHjoXPwuqxRI7Ko3EDiQPQYuS5fcl9rju5Fi4K9aM/YAkqQrP+oGCt71rLjX1tlkzUre2OHTu+KevRrS0AAAAAQIMgcUirg8RpjKARO1cVjlkxXedx6h/3Zs0sTOu8aTM9remmShxFZdLOnTt/S7YJgkHiVMkRFZjveMc7bg3uQi16LhdIQj+CKo3CZfT1N04gcQBajLxAB3apJvPpSq0hdBycXbt2ba6vr4efFINJFzjbSevSVuGHNAAAAAAA7QCJQ1odJE5jLN15552b8iBkp68rta7J0D6QiaWlpWi7dKkmGCROZUxNTX1Rn/vXr18Pn31JlC9xVBqpPBrDXz0jcQBajLxAB3apJvPpSq0ZZiTm5MmT4adECnm7tM1QDa3QrS0AAAAAQPMgcUirg8Rphp07d37jxIkT8hhkp+/XnxnGu8mKNm6H2+XXwIJB4lRF0GA2Pz8fPvMGUb7EUS5evBgtN06DSSNxAFqOPL8vu8/3MFxvNcTU1NTn77777s3BVaHb+Lq0XRjYpa0kQzmO/qhBq4Fk+XEdtw0AAAAAoPUgcUirg8RphCMSs7y8LI9BdvokTtAwsGZWnIF1tQu1DF2x93H48GFtQFiVTDwGiVMJWoWjDWbZxh0oKnHSf/k8hmMQIHEAWo68SOd8z3nJOI7TNQro+785ffp0+MmQRv9nks/P9He3lq1qWquBtKtRWWe3BAAAAAAAagaJQ1odJE4jnJDkHA/H8wtQHfPGnnbSP17OYGZnZ7UB4auy7sRjkDhVEHweZqvCyY77usjwo2e7GueUZBxA4gC0HHmR7vU95+V2/WEH1E9wLaZj0mTDHZcw4QcDfV2uZetSTa8Jw3XGbcw2AAAAAICRAIlDWh0kTiOclATdZ+ShvxuP9OQROfor0HC9iccgcapg8fbbb7+VrQonIyvdred6kCwGJ+SBBx64OTU19aoe2BiAxAEYAeQ57napxrVWQ9x2220/e8899+QYmzCjxOlbLtuPC5Q77rjjpiy/JAEAAAAAgJpB4pBWB4nTCNp1isnbmF1E4mT9BaiiXYqE6+2XTDQGiZOJy/IZlzW333bb7+jgzeXhNpRl67ImInq+P9/p/KDveEcp39/prKqw0ezdOh9IHIC2Ia9Xt0s1ulJrhj3adZn+eCU7/d2peX8o4/64IGk5DzpWohzX12UdAAAAAACoGSQOaXWQOI2gv7KU858Pr8SJjX/jH1Q3a+PB0tJStA4SB4mTyOVOZ8+VTmfZaYgcmE9KZNXgOVYWRbpRs7l69Wqw3imJ75hHOT8v+QEJEgegXcj75377+a4SNpwF9aLXObm79+y/DpuWz57ta6y1FbcrtV6yXodZP6YZl/HaAAAAAABGBiQOaXWQOI1QUiWOv8qmb7npBZOl+YDGg20MEieRK53Okt0ImSVRxcy1a9fCZ9uQuGMOZHyOu3znm99sHpf1fcc8DvnzntvaHiQOjDvyPL8aPt/Xw5ugfoLvZ8vLy+GnQUY8VTZZklXiLC4uRusclAAAAAAAQI0gcUirg8RphEJj4qz1VdkkdB/lNjJkbOCem5uL1pl4DBLHy+VOZ/eVTmcjbIDMHJUJsnr4TBuW/i5t8lbhRLzju797JKtVsubveG5reyKJc1jyTDgd5X/rdFZlGR1ThJCRzSudzmvyV6tw/k+tbJTnO9TPrES+i10OPw2y462KTklWiXPx4sVoHYQ1AAAAAEDNIHFIq4PEaYRijQd9vwAtV+LMzs5qX+xflXUmHoPE8eJ2BZQ12rXXm+68M3ymDUlJVTjK0aNHzT2yDd8xj0P+nue2tkdlzShWEBFSMOvyvkrXWfUzJ8n9Y5oea3KZ1d917Vamu6abZewcD3pdGK5zQgIAAAAAADWCxCGtDhKnEY5I8nfj0TeQu78Coa9iJ2OZwgMPPHBTlr8qmXgMEsdLUYmj1S4HDhwIn2nDMexYODY6iPQdU1PeYx6HPO25re05J/mnzm2EjHkW9f0VakUlSTA2WlF0/JvutH29NW2m5QNpzVMtmlXiXLp0KVpnRgIAAAAAADWCxCGtDhKnGW677bb/r1a+5CV9UN1u36C6WRoP1tfXo+XPSCYeg8TxUlTifI/kyJEj4bNtGFyRmVCNlhGVOLod3zGPerSi5VHntlHIS57bCBnnyPvqF/X9FWol+H6m3ZeVT7Yf3PhYWlqK1tEf+wAAAAAAQI0gcUirg8RpjKU777xzc2NjQx6HHLhdSaUmWyO31XDAYLqCQeJ4SZE4SzL/jC/7Op21fffccyt8uhWmaJVZEjMzM+YPT039nu+YRyl/Td6vT8j5iKLd1+n5GcXxfkaxCzhChsy/kdcr1Ite65jFxcXw06BE+q7Tpk3GQhxz9uzZaL39EgAAAAAAqBEkDml1kDiNoV1lBP2f56WvIXtAsrZxP/bYY5tTU1OvyzogGCSOl8sDJI7M08+7JJZuv/32ISVOfxc1Qzocc/jw4U3Zzjh0ISinP35uNKMocbSC6JRzGyFjnl+R1yvUi45DZE6dOhV+GmQj6kJtWiPr+35I0FcxnWPctpMnT+rYhN+S9QAAAAAAoGaQOKTVQeI0xh79on7s2DF5HPKTLnKmTTfjTz+1T/hwvbMSEAwSx8sQEke76TM3btwIn3VFKLcrNeW7vuu7/kC2dUky6oyVxNFj18f6fw5vI2TMo69fqJk3vOENv6IiP/w4yMZKt+99drtL2zWz4rk2yzoejvL2t79dP5N4PgAAAAAANAASh7Q6SJxGmZcU75N9bcUsdMNfg0bRX4d2V8xa9jYD89BDD23u2LHjm7K+/jIVBIPE8TKExBl6EOm+xrMcv272oUJp165dWokzDvJy7CROQgY9xwBajTy/L7vP9zA02jdD8OMCHRMwO/3j3QxO9h8bXL9+PVpvTgIAAAAAADWDxCGtDhKnUfZOTU19XSWKPBiNoAJJjkNDFY6FQeJ4GULiBJVnp0+fDp95+Sl7PJzl5eVoW+MgBpA4AC1Hnt9InHYRjIujYwLmIXuXttnHwlEYDwcAAAAAoFmQOKTVQeI0zkmJGaZxuyhaifC2t73t5tTU1FflGHYHRwMBBonjZQiJ05Hn2avveMc7Co+L444zkKeLGh8nTpzQsQe+rsc2BiBxAFqOPL+ROC1j586dv1XkhzQr3fQubfN8RG1sbJi7775bxyb8vKwPAAAAAAANgMQhrQ4SpxXomBzFu1UryLvf/W7tSkof6xk9CNjGIHG8DCNxhEBYrq6uhs/APKyZhen4e9QwhTjafc4b3/hGHXtgSTIOIHEAWo48v5E47SP4XCpy/bW2smC6047Mkenuwkrurj7n5+ejbXA9BgAAAADQEEgc0uogcVqBdjX1+u23337r2rVr8rhUz8mTJ6PH+VRwBBDDIHG8DClxDkjMzMxM+CzMgzsOQb5fObtYz/9jknEAiQPQcuT5jcRpH7u1GlmrYLQapgn0RwV6/SfH8cXwmAAAAAAAoAFKkziZBtKc7pjpbsesrPm3MWpxu89Z8Sxj5L4uOMvpeegueJYtOZmOr+VB4rSGAzt27PjmnXfeuTnU4O8ZsBqwLwZ7hj4MEsfLkBJH0cqXAtU45UkcbTDbtWuXVqGNU8MpEgeg5cjzG4nTToJqHL02aoK5ubno/Y0qHAAAAACABqlX4lhRmbPm2c4oJYskSTov00icTEHitIoDWpGjDcw66HrZ6Bg4jz32WNSF2nywR/BikDheSpA4e+U5/q1jx46Fz8r6sSSmDmo9LiBxAFqOPL+ROO1Ff9Riqrj2GsTi4mL03jYuXXsCAAAAAIwsjUmcINOjLXJSJclKfL6drsyLLVtBkDhQAdq1mg5sG3Q7df36dXmchmdpaSkYNFe3K5nTHUEyBonjpQSJo5yVmLNnz4bPzvrQcQ9035Jxq0JD4gC0HHl+I3Hay54dO3b8hnZrVmzctvxcvnw5qgq9KtkdHAUAAAAAADRGsxJHUkdFSlVJkyRrct/s+XWIm3ELEqeV6Jd5rZQJHgutHNAuoIpw6dIl88ADD9zU7ezYseNfy18aQTNgkDheSpI4+vwOpEORwaSLouNNaYNZ+DrYowcyRiBxAFqOPL+ROO1m/9TU1Nfvuuuum1WLHBU4d9xxx03Z31d1v73dAwAAAABAk1Qjcbr+ZdZWZLlpa7kw///27j9WsvO+D/NwaVFEI1KE7crrWLIEx5SZuLUpu2EJNgIWBWwQggNsAsNY+I94UVHU1g2SpZUCiyICCcMo29oq2cL1RkKBtWugcoukdOOEi0ZGdxtDJUwYWDtAwbCsQMitsXCqYmEVwVYxydP3ezmHfu9735k5M3fOzJxzngf4gPfOnF/z457lfT/3vDPEK0Qi65Y4L47ks4B2GSXOQYsPgj+a4iNy7ty5o6k3VhU6MTgQc6zHQESsF4MS6b8x57u/9OyoUeJUbanECXHF2dd39VfPcUXbRz7ykRgwi5+F+LkaGyUOHLj0/lbiHL5H77333j+Mwr+vPzKIK6Pf9773vZX287+n/SlwAADgQOy0xGlTXrWz6AqVKEmeyJd9Ii37Yn0KtpfT7U9UCqL47J2XF5Qnq455VUmz6P6yvDmRtN6p9l1M0xb3vZgvn56HeMyLtlE+/8tSe8xdX5Oux3livSxKnEGI88i1+QD0e6/Rxx9+5KjYafP+++7PX7/IrZQob8Z21UHvGiVO1RZLnBCfAfUnfQ6WhSiJotBM+/pW2ueT7+56dKolzven/JOU2ut1qFHiMFbp/a3EGYb47LajaW3jD2I2vRK6FNu5cOFCey6L19z/mwEAwAHZS4lzouQol3+jKArKxOB/12XnqU3bNpYS5+li2Ugsv9USZ53XpE3H4zy2ThElzuCc/57Zj/3mX5pdav787NyJ/GuzD7+Ylonixl93nkKjxKnacokTYvqar6f/Ni+88EI6J21XTCcYJdG8AB1zAVAtcSLfnvI3U4ZS5ihxGKv0/lbiDEdcufzllKNpz5599tnm7t27839Z1nPnzp3mypUr7effxHkspst1ZTQAAByYvZQ4JwqBJ45fydGpZJiv82L6b/X+SsrpzMZS4pRpC6ttljjrvCbrHueyKHGG56n0ssVbupbPzhrlzRY0SpyqHkqcEH+NHB/s3Dz22GNvx3SApxWff3P+/Pmjc9n8M3DGOIVabmGJ0ybKnCsptdfukKLEYazS+1uJMzyPpxz9+/Tggw++ffHixU6f5RaFz5e//OWjK2+y8iZe50dTAACAA7SfEifl2PLZ4H9ZPOQD/eV9MY1XXgbFsnmJcLR82nYsV5u261RFSof7l30mzqn2XSlHalPSrTq+Y6lcabOoDFr6muTH0fE4l0WJMzxKnP41SpyqnkqcEH+V/Nz8ipmjAmaTKdaiAIpBttjGPPEXz1OYsub5lPxxL8zZlEMuc5Q4jFV6fytxhut8SrxOR+eimKKzncr28uXLTVypE1OvtbfF1Tvtsinx2YZjncoTAABG4+BKnFXbOXblTfo6Lx7KK21WZTQlTvb85Vl1fHmOHU8kO6a1XpP8/o7HuSxKnOFR4vSvUeJU9VjitM6mvHDPPff8f+m/x/7yOQqamJamFX/pHLfFlGkxePahD32o/WvnSAyaTelnIf66+25K+/hXJsqcX0ipvZb7jBKHsUrvbyXO8MW/UZdSrj/0bd/55p973wePnaMevO87mw9/4JH4Ov4Nupjic28AAGAgDqvEKa4GqU23VRYjT+QFQnyf9v3yy93KglMVKR3u31WJU3ueIl1LnBNT0uVlywavyXv76Xicy6LEGR4lTv8aJU7VDkqcVjtQFoOb5blpUW6lTPnzoOIvve+k1J6bhfn+lEMqc5Q4jFV6fytxRuRv//C15y4/+qtNLfNFAACAAdlPiVMUA++VBuWVGx0S06SV04DlOSp1svIkz1hKnEVTlHUpccplTiy3yWuyYN11p1KLKHGGR4nTv0aJU7XDEicXhU5sO0qd54pEaRP3ed+/K/7qO56XwZY5ShzGKr2/lTgjosQBAIBx2U+JUxYD7fKbFgZvvFtGLCtzalN5Tb3EKY8vcmJKuk1fk8q6SpxpUOL0r1HiVO2pxGF9R9PSpaw1xVrk0ZQoUmqv8S6ixGGs0vtbiTMiShwAABiXvZQ45fRd7w3uv3G8iNlk0P+o0EnrvZiOoSx1yum8Vh1zeZy7LHGW7rtjObJOERSpbuc0r0nH41wWJc7wKHH61yhxqpQ4gzO4MkeJw1il97cSZ0SUOAAAMC47LXHeeCMtV5QTkbxcWKcM6pJjZUj6Or8a59i+ivtO3J/SW4mz7r47liMLj68oZiLLPq9m49dEiTNJSpz+NUqcKiXOYLVlTnmeX5nHUv7rlNpr3keUOIxVen8rcUZEiQMAAOPST4mzRsryoCwe4v624Hjj5XfLh/icmxfT13F7FEPtVTf5svny722vKEuWXRFU3hfZZolzqn2nZfP71i1xTrxWably3TzrvibvrdvxOJdFiTM8Spz+NUqcKiXO4MX54VpKeb5fmb+SsosyR4nDWKX3txJnRJQ4AAAwLvstcYpS5SiVq0QW5YlK2bEsZYlQ+0yYZdlmiXOqfXcsR2rHt+5+j0q2dV6TWL49BiXOJClx+tcocaqUOKNxqjLnv0mpvQe2ESUOY5Xe30qcEVHiAADAuOytxIkrN04UOG1e7lAazAugrqVE7K+2r2XH/XRaJ/9+myVOZON977rEie2t8Zq8dwwdj3NZlDjDo8TpX6PEqVLijM4jKS+llOf/lXky5TdSau+F00SJw1il97cSZ0SUOAAAMC67LXGeeLdMebkoM6pJy0QJUV5tE9/HtF3lskdTqhXLHi2/an/zdavrFCXEtkucjffdsRzZaokTScfV+TWJdDzOZVHiDI8Sp3+NEqdKiTNaj6YcRJmjxGGs0vtbiTMiShwAABiXrZU4In1EiTM8Spz+NUqcKiXO6G1c5vxkyv+QUntvrBMlDmOV3t9KnBFR4gAAwLgoceSgo8QZHiVO/xolTpUSZzLitYyB5fLfhaW5L+W0ZY4Sh7FK728lzogocQAAYFyUOHLQUeIMjxKnf40Sp0qJMzkblzk/nfKPUmrvlWVR4jBW6f2txBkRJQ4AAIyLEkcOOkqc4VHi9K9R4lQpcSYrXttbKeW/E0vzgZSLKeuUOUocxiq9v5U4I6LEAQCAcVHiyEFHiTM8Spz+NUqcKiXO5J1P6bXMUeIwVun9rcQZESUOAACMixJHDjpKnOFR4vSvUeJUKXGY26jM+faUv5nyT1Jq76GIEoexSu9vJc6IKHEAAGBclDhy0FHiDI8Sp3+NEqdKiUPhQkr8W1H++7E0y8ocJQ5jld7f+ypxfiKl/Fn6XMpQlY8nvt85JQ4AAIyLEkcOOkqc4VHi9K9R4lQpcVjgYspGZc7PpeTvIyUOY5Xe3/sqcX4tpfxZ+u2UD6QMkRIHAADYOiWOHHSUOMOjxOlfo8SpUuKwwkZlztmUKynxPlLiMFbp/b2PEue7U76WUv4sfSPlEylDpMQBAAC2TokjBx0lzvAocfrXKHGqlDh0cH/K5ZTbKeW/K0sTZc5PFrcV8R5jsNJ5ch8lTll45IkrdIZIiQMAAGydEkcOOkqc4VHi9K9R4lQpcVjDxmXOkniPMVjpPLmPEiefSu3VlK9k38cVOnGlztAocQAAgK1T4shBR4kzPEqc/jVKnColDhuIMudKyp2U8t+ZdeM9xmCl8+SuS5yYLi2mTWt/fj6X0rUAKadhi+XiM3S+kJJv83rKwyk1cfuXUvLl4+u4bdE6rWX76vIYauu/nvJMylY+C0iJAwAA46LEkYOOEmd4lDj9a5Q4VUocTuGhlOdSTlPmeI8xWOk8uesSJ0qb9mcnyowodcpyZtGUauVyn0/JC5EyZZGS73tRYpmasnzKE7d/sbit3Pey9SNxRdKpr0BS4gAAwLgoceSgo8QZHiVO/xolTpUShy04TZnjPcZgpfPkLkucuNrkt1Pan534ur0CJZ9irS13SmWJsyr59rsUOG3KIqc87i7JS5yux50f70aUOAAAMC5KHDnoKHGGR4nTv0aJU6XEYYuizHkh5W5K+e/PoniPMVjpPLnLEqc2lVqrnI6sdkVMrQyJ4qOdBq3cflsG1W6/kNKKr2vrtcpji6tm2n1G6RJTpOX3R/ISJy+oIu1jq61bXsGzFiUOAACMixJHDjpKnOFR4vSvUeJUKXHowdmUrmXOoykwSOk8ucsSJ78apixKyqtdalellCVOfF1OQVbbR5erfMqiJ5/Srcv6ZVHTljHlMefbDeXjLu9fixIHAADGRYkjBx0lzvAocfrXKHGqlDj0qC1zyn+L2vg3iUFL58ldlThdSpq8gImUV6WUhciqbUTh8smUVfsNi45v0e2l8mqd9tjLcqi9CieXH3OtmOpMiQMAAOOixJGDjhJneJQ4/WuUOFVKHDoqB4CX5fWU6ymfSglxDruWki8Tn58zxqtw8isKTjWgzOFL58ldlThlyVErM5ZdDRNWXdUS8v3EtuJneNU6rdp7v8s+Q3nsbYlTPu5VOdXPnBIHAADGRYkjBx0lzvAocfrXKHGqlDh0VA7Gdk0M2rZ/eR/nsvj8jIsp8fk5Y1QbyGak0nlyVyVO/r7qmvL916VQUeJUCpzIfBEAAGBAlDhy0FHiDI8Sp3+NEqdKiUNH5WDsOqldNTBWtYFsRiqdJ3dR4mzrZ69LoVKWOIc2nVp7ey+UOAAAMC5KHDnoKHGGR4nTv0aJU6XEoaPTDCRPqcxQ4kxIOk/uosRZ92qUPHlpskmJEyVK/p5ubyuVZUteHnVZP18m0pY1XY55a5Q4AAAwLkocOegocYZHidO/RolTpcSho3UGU2PKtHxAd9HA7Rjlg9FKnJFL58ldlDhdSpBWeeVLvvymJU6k/HmOn/HWqp/3soR6NeXhlBDH+4WU/P5IW+KE/PFHnk1pi6mY7i0+g+tL869rV/l0psQBAIBxUeLIQUeJMzxKnP41SpwqJQ4drfsX8eXAaz4oG9rB23zwNwZjn0lZNBAbt8f9sVy+7espMYDbiuW6TOEU4oqBdrly8Lnr/nL5415U4sR2133sHKB0nuy7xCl/7pa9l1tladL+rG5a4oTy53lZyukT43jzn8cuyc8XZYm0LKeaulGJAwAA46LEkYOOEmd4lDj9a5Q4VUocOtpmibNqUDb+Ur8sP+Iv9+P22vJt8mNaVs60ysHlfP1199fKH3etxNnksXOg0nmy7xInfx9HupQU5c9q+z4sb6+9fxeVOKF2xUyeWP6plJrY97Kfp99IyY8tP1+E+H7Zz02kS8G1lBIHAADGRYkjBx0lzvAocfrXKHGqlDh01GUAOMQgakyv1C4XaQeRQ7mdRckHZNf5S/52kLvcT23wuyxU2oHjTfbXWlbibPLYOWDpPNlniVO+D8tSZZn8fRiJ93b5/lu3xAlRbsbUZfnVabFc3NZOkbZIPJ642iz/mWuvaiuPrSxxwtmUKJLKfS+7Mm4tShwAABgXJY4cdJQ4w6PE6V+jxKlS4tBR1wKilnywuBxcbkuQGOAt/9K/HciNZfLbY7m25IjB23xQOC9O8n3VipH8/ny9TfcXFm0zbPLYOWDpPLmLz8RhR5Q4AAAwLkocOegocYZHidO/RolTdSAlTv7X323KKxyGpnxMQx+U37TEyYuMchtRauSizMivPIj7y9tqZUwUIPHX+J9Oib/Wb+WvQRQv+VUF5bHkhcqm+wuLSpxNHjsHLp0nlTgjosQBAIBxUeLIQUeJMzxKnP41SpyqAylx8oHvNrXB8yFR4pycYqmcvqxW1OVXwcT+Yp1l5ccyi4qasKjgWVW2rJK/l2M7bYmzyWNv1+VApfOkEmdElDgAADAuShw56ChxhkeJ079GiVN1ACXOonKgvHJiaKZc4kQBV/t8jPI5WZXYX1ni1MqPZfJSJS8G89vzoqZ8nKfZX2ynLWI2eexKnAOXzpNKnBFR4gAAwLgoceSgo8QZHiVO/xolTtUBlDjLBrfzwfWhGXuJk782UdjkU4FFXk0pS4hNiozyM2jWLVXyK2DaYrC8KiZ/bcr7lDgslM6TSpwRUeIAAMC4KHHkoKPEGR4lTv8aJU7VAZQ4+aB3DPx/Jft+yAPZUypxQvmZLpGyyFlWniyyar+rlMcVpUyk/b58j512f4tKnE0eOwcunSeVOCOixAEAgHFR4shBR4kzPEqc/jVKnKo9lzi1qx7WKT/KAfdYNgbt44Pn8+3Gh9DXpvcKcXt8dku+fHxdfp5LzbJ9rXoctXVfT3kmJe47NF3KjbIwKZfbpCApt5kXI614btvnrvaa5aVNFEuR9vvySpvT7m9RibPJY+fApfOkEmdElDgAADAuShw56ChxhkeJ079GiVO15xInH1yPMiNKnXUGu8tlP5+SlyJlyiIl3/+ilIP8rbKAyhO3f7G4Ld/3snUjtanI9q3r61J7bPljz0uOyLMpbWkVU6dFORIFWnzd3l6+TrGN9r4oUfLjin3HMeQWPd+1ZcNp9pc/vlgufx03eewcsHSeVOKMiBIHAADGRYkjBx0lzvAocfrXKHGq9ljixCB1fsVDfN0OXOeD3YsG2kNZLKxKvo8uBU6bssgpj71L2iKj6zHnx3oIupY4IR5r/ljy13BRoVJL+7yv83wvet7KAmXZsqfZ37ISZ5PHzgFL50klzogocQAAYFyUOHLQUeIMjxKnf40Sp2qPJU45oJ0PWpclwKIB7VohEoPq7RRX5T7aMqF2+4WUVnxdW69VHl9cOdPuMwb0Y5q0/P5IW+KUZUJeVJTrtescgnVKnFA+zrzsiMeVP7+1lOVI7D+fBq2WZVcwla9ZZNnzu+n+lpU4YZPHzoFK50klzogocQAAYFyUOHLQUeIMjxKnf40Sp2qPJU6UF+25qSxJYgA7BrLb+xcNascAeV4s1AbNa/vJB9rLfbfKoicvLbqsX5YYMXhfHm++zVA+7vL+fVp17KVy+Uhexp1NidIqphBr74/nMj5TKKYTq4nnJz6HJl8n0q6zrPjo8l4pbbK//HVftI9NHjsHKJ0nlTgjosQBAIBxUeLIQUeJMzxKnP41SpyqPZU4ZVlRK2ny8iVSu2qiHJhftZ0YKP9kyqp9h0XHuOj2UnnlR3xfFkN5qdHKj7dL0UA35XvlkAoyBiqdJ/suceLcEsVeFHztezeSl361808rrhCMz1nK143y8KmUXNflRk2JAwAA46LEkYOOEmd4lDj9a5Q4VXsqccqCo1ZmLLsSptVlYD7fV2wvBj27DubXrqroWgaUxx/HUT7uVWn3yenEIHf+WsbrUrt6CtaSzpN9ljjltI6LEsvk00G2ynNVnvyc23W50VPiAADAuChx5KCjxBkeJU7/GiVO1Z5KnHxAvWtqhUaXQkWJM12L3meLrp6CtaTzZF8lTn5FXteUhcuy803c1+q63OgpcQAAYFyUOHLQUeIMjxKnf40Sp2oPJU5ZgqyTcpBykxLnkKZTm9QA6R7USpx4/l2Fw1ak82QfJU557lgn+TklL4Lifb/ofNN1udFT4gAAwLgoceSgo8QZHiVO/xolTtUeSpzTDFCWhckmJU4M4OeD+4sG9cvCJS+QuqxfFghxHF2v4mE78sHpSHyGSHz2B2xFOk9uu8QpS+I2X0g5m9KKr59Jyc9RkfwcWZYzi8rLrsuNnhIHAADGRYkjBx0lzvAocfrXKHGq9lDidClAWuWAZrn8piVOJL7Ob88/U6L8LIpyv2UR9WpKWw7EMceAa35/JNYJZbnzbEo76BpTvcWHiccHjK/6wHJgz9J5ctslTnluKc89pfJcFvlq8X2Z9jxZlpxl1imZ2/NefixxHovzYnmM7bkwF+e7KFnbZSKxTty26PHHPqPIinNmuV7se9nzVqXEAQCAcVHiyEFHiTM8Spz+NUqcqh2XOGXpsmgqslw5qJkPLG5a4oSyTFmW/CqcEMdc+2v5ZWkHLmuDrotS7hc4IOk8ue0SpzwvdTkHrCpjyrTnyW2VOHEejiK7to041316/t/2trLEqZXeZfKSPXQ9j651DlXiAADAuChx5KCjxBkeJU7/GiVO1Y5LnHLQsMsAW1nUxNdxWzhNiRNWDR7G8k+l1CwbuIz8Rkp+bPnAZXy9agCyS8EF7FE6T26zxCnL4fJ8tcg6xXBkmyXOaQrtsOj8HFfwLDrvr7PPrs/hESUOAACMixJHDjpKnOFR4vSvUeJU7bDE2XSAMsRgYrtepB0EPG2JE2KwMKbeyafkieXaqYCWicdUfi5FTP8TUwOVx5YPXIb4TIsokcr9tusDBy6dJ/sscfLiYpnyXBPbiG3lJc2y823X5Wry82tknaklQ35uL0v9RccV/83PufmUlO0+47z6+ZRV5/BjlDgAADAuShw56ChxhkeJ079GiVO1wxIHYFTSefIQS5x2vV2UOHkJU1u3fEyRstBepEuJs+7xLqXEAQCAcVHiyEFHiTM8Spz+NUqcKiUOwGbSeXLsV+KUV0Hm+e9S8uNt91vKtx9ZVuLEFYpxJWJcCZmvkx9X+TzFfbH8J1Nq++9MiQMAAOOixJGDjhJneJQ4/WuUOFVKHE6hHDxelhhoXTVVXD5g3HUAG/YmnScP8TNxdlXi/MOU/Oc/lq0pp1wrS5x2Sst8mTLlcZWPuVy2y3SYJyhxAABgXJQ4ctBR4gyPEqd/jRKnSonDKaxT4uRZ9Bf7ShwGJZ0nt1nihLI0WVSM5MorXdp1hlDilPdF2rI3Puumva12/O3nii0qcyKLzjVVShwAABgXJY4cdJQ4w6PE6V+jxKlS4nAKm5Y4kdqAbz5grMTh4KXz5LZLnFqpUV65kqtdkdIu33eJc9rp1MrzR7l+1+MPUej8VEpcgVM+H7GdTpQ4AAAwLkocOegocYZHidO/RolTpcThFE5T4tRKGiUOg5LOk9sucaLEyIuRNnHFSRQVrfYqlHK5vAjZRomzSv4zW1u39njaEieWzQuXsqza9LjKfZbl0EJKHAAAGBcljhx0lDjDo8TpX6PEqVLicApliVO7uqYVn0/xakq7bG1QVonDoKTz5LZLnBBlRvtzsG7yImQXJU55rPEz3n4WTfy3VkgtKnHiOFplEVMeV3z9iymvp8S0a3lJE1Ox5dtV4gAAwEQpceSgo8QZHiVO/xolTpUSh1NYp8QJqwaLV5U47Qeg5wO08fWiDzHP91fbXjmIXBvsLQep4/tYpvwsjhhMfialNlicbyOOo30c7W35wDcDks6TfZQ4IX/vdk1egoRVP2+trsvVxPu9VtQsS1vilOeP9mej/fnK14m065U/k6vSrreSEgcAAMZFiSMHHSXO8Chx+tcocaqUOJzCOiXOJ1PyZWuFybISp8ugdjmIXZY05WBuORhcG8Auj6n8K/8yUciUZVG+n9jGV7Lv29vKdRiAdJ7sq8QJF1KWvdfaxDKxbGkXJU4ozwN54vanitvyn8MuP9dt8p/vrutFGdSZEgcAAMZFiSMHHSXO8Chx+tcocaqUOJzCssHbZVlUWiwqcTYd6C2vEsjvC/n+asuU60f50uXxlgVVWRaVKY+LgUjnyT5LnBDvoygOr6eUhU7cFveVZWgr/7nps8QJcQz51Wnx3/g+bs/f/7XtRwEVV7K1y+RXteU/o+XPVXtFW75uJPYRt6/9OJQ4AAAwLgtLnBdeeLfIEdlnnnyy/v5MUeIcKCVO/xolTpUSh1PYpMSJgdhFU4fVSpwYiG0HhiPxdX7VQXm1QjlIvGgQeNGxx/Ktct9l2vKlHcDO78uvNqiVOLUrJxiYdJ7su8QZg1UlzsFQ4gAAwLgsLHFEDjxKnAOlxOlfo8Sp6qHEWWdgP/6Cuv1r8qmpFRZDs0mJE1n0GTC15yS/bdEAcFm25EXMogHkWrESyV+L/AqFMvk+QhQ5+VU7i44hUl5RwECl8+TUS5z4GYlzeFw5U/vZjJ/z/Bxx0Oc6JQ4AAIyLEkeGGiXOgVLi9K9R4lTtucTJE4PeUxrYzsuJgx7YXGLT1zpSe8zlcxIDwHkxsqj8KAuUfLnyGKNQCXlBE6VSJL5ui55ym2Xaq3By+Tbzx1eWOLV1GaB0npx6ibOoDF2Ug37vK3EAAGBclDgy1ChxDpQSp3+NEqfqgEqcyJQGt8dY4uRXn5SiGGmLkjbl610+J7FO1+0vez7z++LrsqCJ48iXie/Lx/bV7OsuyY+hHOhuiyQGLp0nTad2cirBRVlUwh4MJQ4AAIxLDKiWv5iIDCG3UjhASpz+NUqcqgMrccrB9zFbVjoMRflax2Naply+HNQtn5NtlTh5iRL3xfR97fRr7ZU3+TKxrfjMmvb7WObz2fddkh+DEmek0nlSifOu+Bn6UkpMkZm/1+NnZzBTZipxAABgfF5LyX9JERlCnk/hAClx+tcocap2UOIsG3hf9aH0Y7asdBiKdV7rUC6/qsTZxnRqId9vvMe+OP860j738b5r34tx21fmX0die59Myd+r6xQxSpyRSudJJc6IKHEAAGB8Hk25nZL/Ui5yyIkBhftTOEBKnP41SpyqPZc4IR+4j9QGuGNAPqbsyQfR4y++48O0Fw3qx33lX4WXfxG+avA/F1NstcuVZVPX/eW6lDix3XUe966t81qXhUykfL5rz0l+W/m8t/ICJlKblq98n7VpjzmOozy+NrXp1ZY91pISZ4DS+e9sOg9GSbMsd1Jq58+4vbb8e0nbf2S+Kw6EEgcAAMbpoZTzKc/JqfJLKe3ARnxdW0Y2z5WUTQZi2SElTv8aJU7VAEqccoC+THzOSl6ARFlQfvZKmfyYlpUzrXKAP19/3f218sddK3HWfdz7UL7W66YsW2rPSfk8xNdxBVer69Vc+eucJ3+/1ZbJt5cfX+TZlLaEirIuCraYUiq+zsspJc5ApfPga+V5cUu5k86v/rDmwChxAAAAFruU0g5sxNcwOUqc/jVKnKo9ljgxyJ1/7kikLDO6lgTtFR1l2bIsbYFQ7qMsFkJZJLSD8Jvsr7WsxFn3ce9L1+OspXzMYdFzUpYny1J7/UKtFCuPoSxbIvlzXNvGouTHocQZqHQOfK52btxCrs13wQFR4gAAACyWfkd+b2AjvobJUeL0r1HiVO2gxFknZeFTDt63A+MxqB7TjOX3xcB43J/fFsu0A/BxdUQ+AL+oJKgVI4vKhU33FxZtM6z7uPdl09c6npfa1TLLnpPycZeJbT6Vskg8d2XhVr7WtceTlzEhnu9VRU65XSXOQKVz4CO1c+Npk7b75HwXHBAlDgAAQN3ZlHxgIxK3waQocfrXKHGqDqjEKQfty+3EAH+uHJT/B8X35UB6iCIgPqfm0yn5vzX5IHtZMJTHkRcqm+4vLCos1n3c5f27VB7rqnw1Zdnn+SwrcUJMXRfTleWfPRSvV9wW961Slm5lQRPyY1hUNsVrGa9teRyLPgNJiTNg6Vy47SnVTKV2oJQ4AAAAdflUam1MqcbkKHH61yhxqg6kxKkNwpdTV9UG3MtB+TzrlBvlMef7WlTwrCpbVllUWKz7uGtlB7Al6Ty47SnVTKV2oJQ4AAAAdfFXq+1AVJu4DSZFidO/RolTtecSJ64oWXQFRXn1wrqplR/L5KVKflVNfnte1CwrfrpYVOKs+7iVONCjdB58vHZ+3DRpe/FZYBwgJQ4AAMBJD6XcTSkHpOK2uA8mQ4nTv0aJU7WDEicvPqKwyacCi7yaUishdl3i5FfAtFfclFfF5NNgdbliZhklDgxEOh++WZ4fN8zddF41ldqBUuIAAACcdDGlHIxqE/fBZChx+tcocap2XOKE8jNdIrUiZ1mBUrNqv6uUxxWlTKT9vixLTru/RSXOuo8b6Fk6Hz5fnh83zJfnm+QAKXEAAABOqk2l1saUakyKEqd/jRKnag8lTqgVOeVy65Yk5TbL0iVEIRIfRh8frl+bxi0vbaJYirTfl1fanHZ/i0qcdR830LN0LtzKlGppO6ZSO2BKHAAAgOMWTaXWxpRqTIoSp3+NEqdqTyVOKK84iZRXneRFR+TZlChPwqdSoiD50vzruD0vYSKxfrt8lCj5ccW+4xhytWNatGw4zf7yx5aXOGHdxw30LJ0TTzulmqnUDpwSBwAA4Lj4S8R8gKoWf63IZChx+tcocar2WOKEKG3a5SJl0bGoVKklCpUoNMorfBYllqsVIGWBsmzZ0+xvWYmz7uMGepbOiVfLc+SacZX5gVPiAAAAHBdzgpcDUWXMG85kKHH61yhxqvZc4oSyNCnLjih6VhUa+Tqx/3watFpqn8HTKoulSHmFUG7T/S0rccK6jxvoUZwPa+fJrknr+7zHA6fEAQAA+DMxlcSyqdTaxDKmnWASlDj9a5Q4VQdQ4pTLR8qrS86mfCElphFrl4mCI/6yPaYUK0WxEZ9Dky8faZdfVnyUx1MrWEqb7G9ViRPWfdxAj9J58XZ5nuyYmErNNMEHTokDAADwZ7pMpdbGlGpMghKnf40Sp6qHEmfo1i2hgIlI58VNp1QzldoAKHEAAAD+TJep1NqYUo1JUOL0r1HiVClxjokrZvIrZOKql/wzeoAJi3Ni7Vy5Kmk9U6kNgBIHAADgXTE92p2UdoBsVWJZU6oxekqc/jVKnColzpG8uMnjM2eA96Rz4v3p3HinPFeuSlovpkbkwClxAAAA3vVkSjlItiqxDoyaEqd/jRKnSolzpFbiuAoHOCGdG6+V58oVSadShkCJAwAA8K5rKeVA2arEOjBqSpz+NUqcKiXOkc+l5P/uxOdXPJwCcEw6Lz5ZO18uSlr+0nxVDpwSBwAAYP2p1NqYUo3RU+L0r1HiVClxALpL58W1plRLy5tKbSCUOAAAAJtNpdbGlGqMmhKnf40Sp0qJA7CedH7sOqVaOo0yFEocAACA2exqSl7MrJNYF0ZLidO/RolTpcQBWE86N16onTPLpOWuzFdhAJQ4AAAAs9ntlLyYWSexLoyWEqd/jRKnSokDsJ50bowp1e6W58wycX6dr8IAKHEAAICpi4HAvJTZJAYTGS0lTv8aJU6VEgdgfekc+eXynFnklfmiDIQSBwAAmLrTTKXWxpRqjJYSp3+NEqdKiQOwvnR+XDqlWrrfVGoDo8QBAACm7jRTqbUxpRqjpcTpX6PEqVLiAKwvnR+XTqkW59b5ogyEEgcAAJiybUyl1saAIqOkxOlfo8SpGkGJ86mU6ynfSMn/vXg95ZmUsykAW5fOky+V5815bs0XYUCUOAAAwJQ9n5IPrJ0msS0YHSVO/xolTtWAS5xPpLyaUv47UcsXUj6QArA16Rx5ccG587n5IgyIEgcAAJiyN1PKAbVNE9uC0VHi9K9R4lQNtMT5iZTyyptV+bUUgK1J58iH0rnyxJRq6fZH5oswIEocAABgqh5PKQfSTpvYJoyKEqd/jRKnaoAlTlyBs26B0ybKH4CtSefK68W587X5XQyMEgcAAJiqbU6l1saUaoyOEqd/jRKnamAlTkyJ9tsp5b8LX0qJcqcVy11IKcueWNe0asDWpPPksSnV0vemUhsoJQ4AADBV25xKrY0p1RgdJU7/GiVO1cBKnPIqnPh62dU1teXzsid8KuV6SrtMu1zcVi7biiLomZTXU8r1ykIJGLF0nowp1fLz5qPzuxgYJQ4AADBFMR94Pri1zZhrnFFR4vSvUeJUDazE+VxK/m9BfL9KLPNqSpQuZ+OGzBdS8u3VElf05MpiaFG6HBswAul8eWN+3vSHRgOmxAEAAKYoppMoB7W2FVNVMCpKnP41SpyqAZU45VRqtatq1hFX8NS29XDK11La++Lr704Ji6Zzq+W0x8duxPn1Wkp6u4tslp+ezV6Pc+bPzWZfr91/QIkpiR9KoUKJAwAATFFMJxEDgItyOaUc9GoT99XWaWOqCkZFidO/RolTdWO4JU5ermzi11LabZVXzeRX/ORlTHkVzrMp7WfsxH/jyp6YYu3zKVEGcdji3HonpX09RTbKt6fEOfMvZbcdcOJqoftTKChxAAAATorBwfIXyzaHNHAIvVPi9K9R4lSNsMTJC5haln2GTqtLieNKm+GLK3Da11nkVLlSue2AE38sRUGJAwAAcJISB+aUOP1rlDhVSpz3xOflfCrlSyn58nlZUx5D3BfLfzKlvSKH4biVkr/WIhsnnQCqtx9orqZQUOIAAACcpMSBOSVO/xolTtWASpyQT4G26EqYdUqcmPKsLG3KlPvJr8apLRvbM5XaMMS0UrXXUWTsiavQKChxAAAATlLiwJwSp3+NEqdqYCVOWdBEqbNKlDb5Om2JU94euZ4SV+PEZ920t9XKorhqJz7/ZlGZE4krdlydc9iUODLVKHEqlDgAAAAnKXFgTonTv0aJUzWwEqd2FcyFlGVqJU5MwxbTsbW3lYXLos/EqYlC56dS4gqc8thiOxyuaonz4INnm49//JzI4PO+991/4v09jxKnQokDAABwkhIH5pQ4/WuUOFUDK3FCPqVamyhQyqIlvq9NlRYlTlkGtVfntNYpcXLlZ+a4GuewVUucJ5642HwxnRpEhp7v+I6PnXh/z6PEqVDiAAAAnKTEgTklTv8aJU7VAEucsoBZN7USJ79ipixiyhInvv7FlNdTYtq1vKSJqdjy7SpxDpsSR0YdJc56lDgAAAAnKXFgTonTv0aJUzXAEidEEbNukRPLt1fclNOpxdcPp0ThEp91k68XadeL/5b3LUu7HodJiSOjjhJnPUocAACAk5Q4MKfE6V+jxKkaaIkTonR5NaX896OWmFYtls/lU6atSn6lTtf1ogzisClxZNRR4qxHiQMAAHCSEgfmlDj9a5Q4VQMucVoxvVmUNDG9Wf7vyFdTnkk5m7LIhZR8vfg61okrcvLP3imnRYtCqLbPuNqn9vk8HCYljow6Spz1KHEAAABOUuLAnBKnf40Sp2oEJQ5sSokjo44SZz1KHAAAgJOUODCnxOlfo8SpUuIwYUocGXWUOOtR4gAAAJykxIE5JU7/GiVOlRKHCVPiyKijxFmPEgcAAOAkJQ7MKXH61yhxqpQ4TJgSR0YdJc56lDgAAAAnKXFgTonTv0aJU6XEYcKUODLqKHHWo8QBAAA4SYkDc0qc/jVKnColDhOmxJFRR4mzHiUOAADAbBYD0ZdTbkTuvffer6X/Hv0ymb7Of7GM/I0UmAwlTv8aJU6VEocJU+LIqKPEWY8SBwAAmKr7Uy6fOXPmD9J/3/vl8dy5c0e5ePFic+nSpfe+/+AHP/jeMvfcc88/T/99LuVsCoyaEqd/jRKnSonDhClxZNRR4qxHiQMAAEzRpTNnzvxx+m/zXd/1Xe9EWXPjxo1mlVu3bjWXL19uPvrRj74T6957773fTP+NMuehFBglJU7/GiVOlRKHCVPiyKijxFmPEgcAAJiSR8+cOfP19N+jIuall16a1zPri9InrtCJbc0LoQuxAxgbJU7/GiVOlRKHCVPiyKijxFmPEgcAAJiK82fOnPnWBz/4wXeuXr06r2JOL4qgH/iBHzi6MiflytGeYESUOP1rlDhVShwmTIkjo44SZz1KHAAAYAoupxxdffPmm2/O65ftuXPnzntX5aRcjR3CWChx+tcocaqUOEyYEkdGHSXOepQ4AADA2F1KaR5//PGjsqUvd+/ebS5evNj+AqrIYTSUOP1rlDhVShwmTIkjo44SZz1KHAAAYMzOxRRqUeBEybILFy5caH8Jjat/YPCUOP1rlDhVShwmTIkjo44SZz1KHAAAYKw+du+9937zQx/60Nu3b9+eVyzre/np/BfLp5uX57cvEmXRY4899vZ8HYOMDJ4Sp3+NEqdKicOEKXFk1FHirEeJAwAAjNKZM2f+4P3vf/87r7zyyrxe2cAbLzZPHPvFcnWJE6I0+shHPvJWOoY/TuvdH8cDQ6XE6V+jxKlS4jBhShwZdZQ461HiAAAAY3Q+pbl8+fK8VtnAiQIn0q3ECS+99FK7nmnVGDQlTv8aJc4JN2azx2/OZq+U5U0bJQ4jp8SRUUeJsx4lDgAAMDrtVTibTaP2RvPyi0+Uv1DO073ECT/0Qz/0tqtxGDolTv8aJc57bqTz5c3Z7PmytCmjxGHklDgy6ihx1qPEAQAAxiYG9ja4CueN5o2Xn26eeKL6C+U865U42dU4l1JgkJQ4/WuUOEfmBc71srCpRYnDyClxZNRR4qxHiQMAAIzN8/fdd9/bd+7cmVcp3bz8dPUXySLrlTjh+77v+/40rXs9BQZJidO/Rolz5MZs9lytsKklLfvofDUYIyWOjDpKnPUocQAAgFG599573zh37ty8QunuRInzxNPNyyc+F2f9EufKlSvNmTNnvpXWfygFBkeJ079GiRMFziM3Z7O7ZVmzILfmq8FYKXFk1FHirEeJAwAAjEkMKDdXr16dVyjd/VmJ80Tz9IsvN2/EjVsocW7cuNGufyEFBkeJ079mSYnT/OjVc1PI777/X/8fK2XNiXz1zAd+//ZHf+ZCbRsiY8mPPfgDt8898PEm8rP/9vnm8id/6ih/57P/afNbv9XIiPP3/3699BhblDjrUeIAAABjciWlee211+YVSncvP/1E88TT8/KmtYUSJzzwwANvpfWvpsDgKHH61ywtcaaR//V9D1ZLm8g/e/AHm//7L/z7zd1/8z+urisyqVz8zab5xr+c/x8GY/TWW03zO79TLz/GEiXOepQ4AADAmDyf0ty9e3f+a/ApbanE+chHPhIlzo0UGBwlTv+aiZc43/qhX6yWN5Hff+Dj1XVEJp2nf2v+fxiMWVyZUytAxhAlznqUOAAAwJhce/DBB9+e/+57elsqceIzetL6r8UBwtAocfrXTLzEiatsagVO5P95+G9V1xGZfP7om/P/y2CsXn+9XoCMIUqc9ShxAACAMbnxyCOPzH/13YItlTgXLlxo7r333n9xdIQwMEqc/jU/cvVidZB2Irn9sZ+pFjiR//cv/t3qOiKTz+vfmP9fBmP1R39UL0DGECXOepQ4AADAaJw5c+Z346qXrdlSiXPx4sV2GzA4Spz+NT/6xUfeevRX7p4YpJ1IoqipFTiRr3/PX6uuIzLp/PivN8233pr/XwZjpcShpcQBAADG5PpHP/rRd+a/+57elkqc8+fPN2fOnPnjoyOEgVHi7MY7P/L3LlcHayeQtz/xy80/PfO+aokTt8d0a7X1RCaZc9ea5qt/OP8/DMZMiUNLiQMAAIzJtfe///0HV+LMPxPnVhwgDI0SZ3eaH/3iIylXUuIzciaVr37bd/yftRKnzf9yz5k//d37z77xf3zXj/1mbX2RMeX57/7rd57783+1+Y1/9z9sbv70F97LV3/uv23+4H/+l83v/V4jI8o3F3y8kRKHlhIHAAAYk+dTmjt37sx//T2lLZU4H/7wh/80rX89BQZHicMu3JjNLtbKmwW5Ol8NxurNlOz/P97NE09crA6Iy7ATZU2NEoeWEgcAABiTSynNrVu35r/+ntIWSpy7d+82991339tp/RdSYHCUOOzKzdnsRlHWLMyN2cx7jzFT4kwoSpxjUeJUKHEAAIAxOZvSPPvss/Nff09pCyXO9evX2/WfTIHBUeKwK1HM3JzN7pSFTS1p2XPz1WCMlDgTihLnWJQ4FUocAABgVM6cOfO7jz322Nvz339PZwslzqVLl5p0TH+S1r8/jg+GRonDLt2YzR69OZvdLkubMkocRk6JM6EocY5FiVOhxAEAAMbmuZTm9u3b81+BT+GUJU5Mpfad3/md8Xk4X06BQVLisGs3ZrOHbs5m18riJo8Sh5FT4kwoSpxjUeJUKHEAAICxeSSluXz58vxX4FM4ZYnzwgsvtOueT4FBUuKwL1HU1AqciBKHkVPiTChKnGNR4lQocQAAgDF66b777nv7zTffnP8avKFTlDh37txpPvShD7195syZPzg6IhgoJQ77cuPdz8hR4jBFSpwJRYlzLEqcCiUOAAAwRo+mNOfPn5//Grx7V65caX8ZdRUOg6bEYV+UOEyYEmdCUeIcixKnQokDAACMVXwOTXPt2rX5r8K788orrzRxJVDa/ytHRwIDpsRhX5Q4TJgSZ0JR4hyLEqdCiQMAAIzV/ffcc88/jzIlSpVduX37dvPhD3/4T8+cOfMn6RgMcDN4Shz2RYnDhClxJhQlzrEocSqUOAAAwJh9LMqU7/3e7307ypW+3b17t3nsscfiCpz4hcoAI6OgxGFflDhMmBJnQlHiHIsSp0KJAwAAjN25M2fOfCuKnNdee23+a/H23blzJy9wLh3tGUZAicO+KHGYMCXOhKLEORYlToUSBwAAmILH44qcBx544K0bN27MfzXeniiH5lOofSvt68K7u4RxUOKwL0ocJkyJM6EocY5FiVOhxAEAAKYiplb7Z+m/zYULF44+u+a04uqbK1euNPG5O1ESpW0/frQnGBElDvuixGHClDgTihLnWJQ4FUocAABgSh5KiV8Oj4qXKGA2KXOivHnhhReaBx98sJ0+7XqKwWxGSYnDvihxmDAlzoSixDkWJU6FEgcAAJiiR1NupBz9wnju3Lnm6tWrR+XMInfv3m2uXbvWnD9/Pv9F81bKkykwWkoc9kWJw4QpcSYUJc6xKHEqlDgAAMCUxSDgtflUaO/9AhlX6USxE3nggQfeuz1yzz33/Kv03y+n+OwbJkGJw74ocZgwJc6EosQ5FiVOhRIHAADgXedTnpsnrrApf6ls8+MpMBlKHPZFicOEKXEmFCXOsShxKpQ4AAAAJ8XgYPlLZRsDh0yKEod9UeIwYUqcCUWJcyxKnAolDgAAwElKHJhT4rAvShwmTIkzoShxjkWJU6HEAQAAOEmJA3NKHPZFicOEKXEmFCXOsShxKpQ4AAAAJylxYE6Jw74ocZgwJc6EosQ5FiVOhRIHAADgJCUOzClx2BclDhOmxJlQlDjHosSpUOIAAACcpMSBOSUO+6LEYcKUOBOKEudYlDgVShwAAICTlDgwp8RhX5Q4TJgSZ0JR4hyLEqdCiQMAAHCSEgfmlDjsixKHCVPiTChKnGNR4lQocQAAAE5S4sCcEoe+3JjNHo0yZkku1AqcSLrvcrFsmUfnu4EhUuJMKEqcY1HiVChxAAAATlLiwJwSh77cmM2eqxU0W8rz893AEClxJhQlzrEocSqUOAAAACcpcWBOiUNfbsxmj1TKl60kbfvx+W5giJQ4E4oS51iUOBVKHAAAgJOUODCnxKFPN2ez18oCZgu5Pd88DJUSZ0JR4hyLEqdCiQMAAHCSEgfmlDj0qacp1a7ONw9DpcSZUJQ4x6LEqVDiAAAAnKTEgTklDn3qY0q1tE3naYZOiTOhKHGORYlTocQBAAA4SYkDc0oc+nZzNnuzLGJOEVOpMQZKnAlFiXMsSpwKJQ4AAMBJShyYU+LQt5uz2fNFEXOaGABkDJQ4E4oS51icwyuUOAAAACcpcWBOiUPfbsxmj1fKmI2StvXkfLMwZEqcCUWJcyxKnAolDgAAwElKHJhT4rALN7czpdqdG7PZ/fNNwpApcSYUJc6xKHEqlDgAAAAnKXFgTonDLtzczpRqBv8YCyXOhDK1EucXnrrV/Hv/xi9VCwlZP+ncAAAAMElKHJhT4rALN9K5tVLKrJW0jfPzzcHQKXEmlCmVOD//N16tFhGyedK5AQAAYJKUODCnxGFXbs5mt8tiZo3cNZUaI6LEmVCmUuL8yn/5rWoJIadLOjcAAABMkhIH5pQ47MrN2exqUcysky/PNwNjoMSZUKZS4rz48/+iWkLI6ZLODQAAAJOkxIE5JQ67cpop1dK6F+abgTFQ4kwoUylx/t6vvNX83L/169UiQjbL3/7hX30tnRsAAAAmSYkDc0ocdunmZlOqmUqNsVHiTChTKXEiz/8H/1u1jJDN8swnrj2Zzg0AAACTpMSBOSUOu3RzNrtWFDRdcn2+OoyFEmdCmVKJE/nP/+7/1fy1H/g7zU9+/5UT+emHf+H25Ud/9YYszzM//KtXn/mRa4+n8wIAAMBkKXFgTonDLt2YzZ6slDRLk9a5OF8dxkKJM6FMrcSJfMd3fOzE+3ueaykAAACwkhIH5pQ47FJMi3ZzNrtTFjVLElOpPTRfHcZCiTOhKHGORYkDAABAJ0ocmFPisGs315tSzVRqjJESZ0JR4hyLEgcAAIBOlDgwp8Rh19aZUi0te2m+GoyJEmdCUeIcixIHAACATpQ4MKfEYdfmU6rdLQubWtKyZ+erwZgocSYUJc6xKHEAAADoRIkDc0oc9uHmbPblsrCp5MZ8cRgbJc6EosQ5FiUOAAAAnShxYE6Jwz7cmM0uVEqbYzGVGiOmxJlQlDjHosQBAACgEyUOzClx2IcuU6qlZbz/GCslzoSixDkWJQ4AAACdKHFgTonDvtxcPqXaK/PF4KB8evbWa5+ZNc+lc+Qj85s2ocSZUJQ4x6LEAQAAoJNHU2q/WEbiPpgMJQ77smxKtXTflflicFDyc2Rb6GxwrlTiTChKnGNR4gAAANDJ/Sm3U8pfLOO2uA8mQ4nDvtyYzR66uWBKNVOpcahq58p389atp2fvXO543lTiTChKnGNR4gAAANDZ+ZS7Ke0vlfF13AaTosRhn27OZtfLAifl1vxuODi1c+XJvFvo/OysOTtfraTEmVCUOMeixAEAAGAtMUD9XEpM22OwmklS4rBPN2azi2WJk26L8zIcpNq5clk+M3v7xlOzdy4VhY4SZ0JR4hyLEgcAAABgHUoc9qk2pVq67TQfGA+9qp0ru+bdQqe5+G2zb/962tSJAW4lzjijxDkWJQ4AAADAOpQ47NvN41OqvTa/GQ5S7Vy5SX589lLz8dnF5r7ZQ+8NcCtxxhklzrEocQAAAADWocRh327MZpfaEsdUahy62rnytIlC5y/MLjT/zuOfqQ6Iy7CjxFHiAAAAAGxsWYnzmdk7Fz47a86J9Jmfn/2jv96WOP/V7MrP1pYROZTUzpXbymfO/Kvmyl9umuefapqrv1wfHJfhRYmjxAEAAADY2LISR2RX+e9n55p/PPtY9T6RKebS+5rm53+8aW7906b5xjfmo/6MihIHAAAAgJWUOHII+c9mV5tfmV2p3icy1XztlfloP6OkxAEAAABgJSWOHEL+1ux28x/NXqneJzLF/BdPzkf6GS0lDgAAAAArPT1758naAKKIiOwvv3pxPtLPaP3hH9YLkDFEiQMAAACwJT8zax56avbW7dogooiI7Cf/yePzkX5G69ategEyhihxAAAAdue7U76W0v7i9Y2UT6Qs8msp7bKxXqy/DQ+nfCllW9vbpW09J59KuZ4Sr0G7vcjrKc+knE2BjTw9a84/PXvrTjmIKCIi+8ml9zXN7/9P89F+Rueb32yaX//1egEyhihxAAAAdqcscSJRSiyy7RKnLW+2tb19OO1zEqXZqyntNpblCykfSIG1/eysOfvZWXNOREQWp1a4bDNX/nLTPP9U01z95XcHw3/nd96ddis+P0XGkd/7vaa5du1k8TGmKHEAAAB2p1biRH4ipWbbJc62t7cPp3kM8TyXV96sSuwPAOhBrXg5bX589lLz8dnF5q889rPVAXGRoUWJAwAAsDuLSpxFZYQS56RNH0NcgbNugdNmUckGAJxCrYTZJH91dqP5i7NLzX2zh9779/uJJy5WB8RFhhYlDgAAwO4sKnEin0spKXFO2uQxxJRov53SrtcmppbLP5MolruQUpY9sa5p1QBgy2qFTPe89cpTs3cu/bnZ9/xh2lT+7/ZRlDgylihxAAAAdmdZiRPFQV4ohC6FRfsB/eW24rZ2e1EQ5feXif20ymPM72stOq64YiW/Pf8Mnkh8Fk3c1upy7KVNSpzyKpz4etnVNbXly+PZ5NijCHom5fWUcr2yUAKA0auXM8vy1q2nZ+9c/uys+dh8E+HNlPzf1aMocWQsUeIAAADszrISJ1IWJqsKi/jg/Xz9WuLKkn2VOF/Jvi+X7XrspVXPSU35+GtXPZVimSidonQ5GzdkNjn2shhalC7HBgCjUC9qjufTs7de+8ysea4obnJKHBl1lDgAAAC7UxYk/yClnOYrv0JkWWGRFyb5lSJxpUu+j/j6l7Lva+mjxKmlLSjWOfaypFm3xCmnUsv3t4lNjn3RdG61nPb4AGAwaqVN5NOzt96M4iZ9/ch80WWUODLqKHEAAAB2p1aQxIB9DNy3t+Wfv7KssMjvK6/eiO/b+/JSoEsBUjvG0qLt1EqcVVfTdD32VpfHkCsLlC7rLLPJsZev8bMp7Wsc/40re2KKtc+n5NPNAcConSxu3n7hqVnz6PzurpQ4MuoocQAAAHZnUUGSFwORthxYt7BoLSoTumxv0THmFm2nLHHyQqqrfZU4+X5rice2SpcSp/aYAGCSnpq9dfuzs7evPjV75/H5TZtQ4sioo8QBAADYnUUFSXl7O9C/TmERn9sSH7YfH5DfrpNvK3TZ3qJjzC3aTlnitGXUKl2OvbXOcxL6LnG6HHt5DHFfLP/JlHVLLgDgOCWOjDpKHAAAgN1ZVpCUJULct6qwiKm3yvKgzD5LnGVXr6x77K0uj6GUr1PbZlinxNnk2OPruG3RsrE9U6kBwPqUODLqKHEAAAB2Z1lBUl6tUaYsLMrCJHI9Ja4Kic9caW/Ly4QuBciyY2wt2k7XEmeTY291eQylWkG2yqLHcppjj6t24vNvFpU5kU2moAOAKVPiyKijxAEAANidVQXJsqs18sKi3E458J+XFtsuccqyKd/OouIjt+mxtzYpcWrP64WUZWqP5bTHnotC56dS4gqc8thiOwBAN0ocGXWUOAAAALuzqiAJeUmRJy8sylKiLEu2WeKURUV5f76dLiXOpsfe2qTECbXnNQqUcvvxfW2qtDjO0x77ImUxVj7nAMBiShwZdZQ4AAAAu1MWILUSp1ymTV5YlGVCfuVGWQjkZUJeZOS354VBuX6kvWolPrOlvO+0JU7XY29tWuKU+103tRJnnWOPr38x5fWUmHYtf85jKrZ8u7Gd/H4AYDEljow6ShwAAIDd6VLihPyKjjZ5YVFuJ76OgiUG/uMzV/L1Im2ZUttupDyORcvVkh9XlxJn02NvbVrihNjWukVOLN8ew6bHHv8t71uW8jEDAIspcWTUUeIAAADsTlkCLCpxohRYdsVLWKdoaa8YWXQ1Snkc5XHmifW/mH2fH1dZViwqIzY59tZpSpwQpcurKfk+FiWmVYvlc5see9f1ogwCALpT4sioo8QBAADYna4lTigLl1phEdOcxfRc7TLx9TMpUQLlZUc+PVdM3ZWXGLGPmN6rFOVF/tkwsVxbauRlzSYlTtjk2MNpS5xWPL/xePJjiHw1JY7jbMoimx57+5yW+2yf23z6NQCgGyWOjDpKHAAAAAAAhkqJI6OOEgcAAAAAgKFS4sioo8QBAAAAAGColDgy6ihxAAAAAAAYKiWOjDpKHAAAAAAAhkqJI6OOEgcAAAAAgKFS4sioo8QBAAAAAGColDgy6ihxAAAAAAAYKiWOjDpKHAAAAAAAhkqJI6OOEgcAAAAAgKGqljg/+INPNp/73A2RwefBB8+eeH/Po8QBAAAAAOCgVUsckQlEiQMAAAAAwEFT4shUo8QBAAAAAOCgKXFkqlHiAAAAAABw0K6n1Aa4RcaeF1IAAAAAAOBgXUmpDXCLjD3nUgAAAAAA4KDFtFK1QW6RsSbKSwAAAAAAGITHU+LKBJGx55EUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgL78REpT5HMpQ1U+nvi+L9+d8rWUdl+/lrJM3N8uG+vF+q14ztv7TptFj/kTKd9IaZcrjwEAAAAAADggebHQ5rdTPpAyRFMrcaKU+XxxW62cidczXtd8uSGXdQAAAAAAMGplCdEmioG4amOIpljixGtVlnHlsZTbH3JRBwAAAAAAo1cWHnlWFRKHaqolTq2Qax97OY3akEs6AAAAAACYhLxUeDXlK9n3ZckwFEMtcWrW3f6iq23y/UZMowYAAAAAAAesvDojBva7FiBluRDLRVnwhZR8m9dTHk6pidu/lFJeIRK3LVqntWxfXR5Dbf3XU55JWWeKsUMrceLYy8+9+WrxfZf9AgAAAAAAe5RftRFlRm1KrkWlQblcfLB+XoiUKYuULlOHLbpapCyf8sTtXyxuK/e9bP1IXJHUteRYt2Tpu8QJqx5frdQCAAAAAAAORHnFRv4h93nREGVAlAKlslxYlXz7XQqcNmWRU7vSZFXy0qLrcefHu8y6z0OevkqcsOg57ro+AAAAAACwJ+XVGnlZEqVHPvBfuyKmVl5E8dFOg1Zuvy2DardfSGnF17X1WuWxxVUz7T6jdIkp0vL7I3mJkxdUkfax1dbtcsXKoZY4teMqn0sAAAAAAOAA5VdqlIP75dUutatSypKgVkjU9tHlKp+4Le5rl8uLiy7rl0VNW8asKkTKx13eX1MrS7qm9pyVVh3zIrXj6rI/AAAAAABgj7qUNHkBEymvSilLglXbiMLlkymr9hsWHd+i20vl1TrtsZflUHsVTi4/5k1KlnWyyfa7ljjl67fu+gAAAAAAwB6UJUetzFh2NUzoUi7k+4ltfSqlayER97XLtWVH10KjPPa2xCkf96q0+11m3ZKl9riWWXf7oXz8ZdrnAwAAAAAAODB5kdA1ZeHQpVxQ4pxUe1zLrLv98mqlyFeL77vsFwAAAAAA2LGyFFgn+RU7XcqFssQ5tOnU2ttPY92Spe8Sp5xGrd1Hvt/Iqu0AAAAAAAA7tu7VKHny0mSTEidKlLxMaG8rlWVLXh51Wb8sLNqyZt1CpIt1t5kfW1uwLLPO9svnLbKowFr03AEAAAAAAHuSlwirBvLLK1/y5TctcWplwoWUVnxd3p8fY1lCvZrycEqI4/1CSn5/pC0yQv74I8+mtMVUTPf2esqX5l/XrvIpHVKJUz62ctnyKp1FVzIBAAAAAAA7VhYCXQbxy9KkLQY2LXFCWTYsS34VTojjzYulLslLnLJEWpZy3zWHUuKUr1Nt27XnrstjBAAAAAAAelZeibFJSdGWA13KhUUlTqhdMZMnln8qpSb2HVfg1NaL/EZKfmx5iRPi+1VFTterVLo8D7k+Spxymcii17Yse8rXBQAAAAAA2LHyKox1Bu/z4iESRUCXcmFZiRNiGrSYuiymMMuXi9vaKdIWicfzTEpexlxPiWnQymMrS5xwNiWKpHLf7Ta66vI85PooccrXZ1UBVS6/6pgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgGGbzf5/WYTGZsBZvn8AAAAASUVORK5CYII=\n", + "image/png": "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", "text/plain": [ "" ] @@ -133,7 +133,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", diff --git a/idaes_examples/archive/power_gen/rsofc/cpu.py b/idaes_examples/archive/power_gen/rsofc/cpu.py index 0138249c..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", 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 81d00db4..5a229bbf 100644 --- a/idaes_examples/archive/power_gen/rsofc/rsofc_soec_flowsheet.py +++ b/idaes_examples/archive/power_gen/rsofc/rsofc_soec_flowsheet.py @@ -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/soec/soec.py b/idaes_examples/archive/power_gen/soec/soec.py index 9b13fa0b..087a54db 100644 --- a/idaes_examples/archive/power_gen/soec/soec.py +++ b/idaes_examples/archive/power_gen/soec/soec.py @@ -1558,7 +1558,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[0], format_string="{:.3f}", display_units=pyo.units.MW, diff --git a/idaes_examples/archive/power_gen/subcritical/subcritical_boiler_src.ipynb b/idaes_examples/archive/power_gen/subcritical/subcritical_boiler_src.ipynb index a68da956..320da8f9 100644 --- a/idaes_examples/archive/power_gen/subcritical/subcritical_boiler_src.ipynb +++ b/idaes_examples/archive/power_gen/subcritical/subcritical_boiler_src.ipynb @@ -55,7 +55,7 @@ "In the drum the water steam mixture is separated, and the vapor leaves the top of the drum (as steam outlet). The separation is calculated using the IAPWS95 steam properties. Feedwater enters the drum from the economizer. The steam leaving the ```drum``` is heated in the superheaters, using hot flue gases, before it passes to the high-pressure turbine inlet as main steam. At this point superheaters have not been included in this simulation.\n", "\n", "The ```initialize()``` function uses the initial guess to initialize the models. Each model at the time, and using the solution from the previous interconnected model. \n", - "The ```set_inputs()``` function unfixes the inlet streams of the intermediate units and fixes the appropiate variables (feedwater_inlet flow_mol and enth_mol)." + "The ```set_inputs()``` function unfixes the inlet streams of the intermediate units and fixes the appropriate variables (feedwater_inlet flow_mol and enth_mol)." ] }, { @@ -88,7 +88,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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", "text/plain": [ "" ] @@ -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+/btl5xqu5J27dqxfPlyjh07RkpKCtOmTeOGG24APNt17NixdO7cmZYtW7J06VKKFi1K2bJl012WP7ezyX92HztLv4lrGD43ihY1yrH4n50ZdH1tV5II5HwiiQVmq8daIBWo5LTX8JouCDjgtAel0473PCJSCCgLnPBr9DlkxIgRJCUlERoaSkhICCNGjADg4YcfpkmTJrRq1YqQkBAeffRRkpOTufPOO6lfvz7NmjXj8ccfv7izA8/O8PDhw3Tu3BmA0NBQQkNDLx7BvPLKK7Rr146bb775kk7dfv368dZbb9GyZUt27tzJ1KlTmTRpEs2bN6dp06bMmzfviuvRqFEj4uLiLu4o3333XUJCQmjevDnFixfnlltuITQ0lEKFCtG8eXPeeeedDNexf//+hIeHExYWxtSpU6+qA3rp0qX06tXL5+mrVq3KG2+8wY033kjz5s1p1aoVffr0ATxHevv27aNz584ULFiQGjVqcP3112e4LH9uZ5N/JKekMn75Tnq+u4Log6d58+5QvnioLTUqlHA3MFX12wsIBqK8fn8M+Lcz3ADPqSnB08m+CSgK1AZ2AQWd6dbhOYIRPH0jtzrtTwDjneF+wHRfYmrdurVebsuWLX9oM9lj3LhxOnHiRLfD0EOHDulNN93kdhjZxv5m858tB+L0tvdXaq0hC3Tw5+v0cNz5HH1/IFwz2K/68/LfaUAXoJKIxAIjgcnAZBGJAi4AA5wAN4vIdGALnsuCn1DPFVvg6aCfgufy30XOC2AS8IXTMX/CSSYmwDz++OMXT9W4ae/evZf0XxiTWyQmp/DhTzF8smwn5UoU5uP+rbgl5NqAqrkmmrWLnHKdsLAwvfyu5a1bt9KoUaOA+mCMyYiqEh0dTePGjd0OxfjZ+t9PMmRWBDFHztC3ZXVG3NaE8iWLuBKLiKxX1bD0xlmtLTzX+x8/ftxKyZuAp87zSIoVK+Z2KMaPziYmM3bxNqb8sodqZYsz5cE2dGlYxe2wMmSJBAgKCiI2NpajR4+6HYoxV5T2hESTN63ccZRhsyOJPXmeAR1q8VzPRpQqGti76sCOLocULlzYnjZnjHFV3LkkXlu4henhsdSpXJIZj3WgTXAFt8PyiSUSY4xx2XdRhxgxL4oTZy/w9y51ebprfYoV/mO1iEBlicQYY1xyJD6BUfM3szDyEE2qluHTgW0IqZ7+Ta2BzBKJMcbkMFVl1m/7eWXBFs4npfBcj4YM7lyHwgVz55M9LJEYY0wOij15jhfmRLFi+1Fa1yrPmLtCqVellNthZYklEmOMyQGpqcoXa35nzHfRALzcuyn3t69FAZfqY2UnSyTGGONnO4+eYcjMCMJ/P0nnBpV5/c4Qgsq7XB8rG1kiMcYYP0lKSWXCil289+MOihcuyNh7mnNXq+p57sZnSyTGGOMHUfvjeH5mBFsOnubWZtcyqndTqpTOmxUJLJEYY0w2SkhK4b0fdzBhxS7KlyjC+Pta0TOkqtth+ZUlEmOMySbr9pxgyMwIdh07yz2tgxjeqwllSxR2Oyy/s0RijDFZdCYxmTe/i+bz1b9TvVxxPh/Uls4NAv9prNnFEokxxmTB8u1HeWF2JAfizjPwumCe69GQkgFeZDG75a+1NcaYbHLq3AX+vWALs3/bT93KJZnxaAfCckmRxexmicQYY/6khZEHeWleFCfPJfHkjfV48qZ6uarIYnazRGKMMT46cjqBEfOi+H7zYZpWK8Nng9rStFruK7KY3SyRGGPMFagqM9bH8uqCLSQkpzKkZyMe6VSbQrm0yGJ2s0RijDGZ2HfiHMNmR7Iq5hhtgysw+q5m1Kmcu4ssZjdLJMYYk46UVOXz1Xt487ttFBB4pU9T+rfLG0UWs5slEmOMuUzMkXienxnBb3tPcUODyrzetxnVyxV3O6yAZYnEGGMcSSmp/Gf5Tt7/MYYSRQsy7i/NubNl3iuymN0skRhjDBAZG8dzMzcRfSieXqFVGXV7UyqXLup2WLmCJRJjTL6WkJTCu0t2MHHlLiqULMJ/7m9Nj6bXuh1WrmKJxBiTb/266zhDZ0ey+9hZ/hpWgxdubZwviixmN0skxph8Jz4hiTHfRfP/1uylRoXiTH24HR3rVXI7rFzLEokxJl9ZGn2EF+dEcvB0AoM61uZfPRpQoojtCrPCtp4xJl84cfYCryzYwpwN+6lfpRSzHr+OVjXLux1WnuC3+/tFZLKIHBGRqHTG/UtEVEQqebUNE5EYEdkmIj282luLSKQz7n1xrsMTkaIi8rXT/quIBPtrXYwxuZeqsiDiADePW843mw7w9E31WPD09ZZEspE/C8VMAXpe3igiNYCbgb1ebU2AfkBTZ56PRSStlOYnwGCgvvNKW+ZDwElVrQe8A4zxy1oYY3Ktw6cTGPzFep78cgPVyxfnm6eu59nuDSlaKP9W6vUHvyUSVV0BnEhn1DvA84B6tfUBvlLVRFXdDcQAbUWkKlBGVVerqgKfA3d4zfOZMzwT6Cp215AxBs9RyNfr9tJt3HJWbD/KC7c2Yvbj19G4ahm3Q8uTcrSPRER6A/tVddNl+/zqwBqv32OdtiRn+PL2tHn2AahqsojEARWBY+m872A8RzXUrFkzW9bFGBOY9h4/x9DZEfyy8zjtaldgzF2hBFcq6XZYeVqOJRIRKQG8CHRPb3Q6bZpJe2bz/LFRdQIwASAsLCzdaYwxuVtKqvLpz7sZu3gbhQoU4LU7Q7i3TU0rspgDcvKIpC5QG0g7GgkCfhORtniONGp4TRsEHHDag9Jpx2ueWBEpBJQl/VNpxpg8bvthT5HFjftOcVOjKrx2ZwhVy1qRxZySY4lEVSOBKmm/i8geIExVj4nIfOBLERkHVMPTqb5WVVNEJF5E2gO/Ag8AHziLmA8MAFYDdwM/Of0oxph84kJyKp8s28mHS3dQqmgh3uvXgt7Nq1mRxRzmt0QiItOALkAlEYkFRqrqpPSmVdXNIjId2AIkA0+oaooz+nE8V4AVBxY5L4BJwBciEoPnSKSfn1bFGBOANu07xZBZEUQfiqd382qMvL0JFUtZkUU3SH77Eh8WFqbh4eFuh2GMuUrnL6TwzpLt/HflLqqULsard4TQrck1boeV54nIelUNS2+c3dlujMk1Vu88zrDZEew5fo5729Zk2K2NKFPMiiy6zRKJMSbgnU5IYvSiaL78dS+1Kpbgy0facV1dK7IYKCyRGGMC2o9bD/PinCiOxCfwSKfaPHtzQ4oXsTvTA4klEmNMQDp+JpGXv9nC/E0HaHhNacbf35oWNcq5HZZJhyUSY0xAUVXmbzrAy99sIT4hiX92a8DjXepSpJA/SwOarLBEYowJGAfjzjN8ThQ/Rh+heY1yvHlXKA2vLe12WOYKLJEYY1yXmqpMW7eXNxZGk5yayvBejXmwY20KWnmTXMESiTHGVXuOnWXo7AjW7DpBhzoVGX1XM2pVtCKLuYklEmOMK5JTUpn8827eXrydIgULMLpvM/7apoaVN8mFLJEYY3Jc9KHTDJkZwabYOLo1voZX7wjh2rLF3A7LXCVLJMaYHJOYnMJHS3fy8dIYyhYvzAf3tuS20Kp2FJLLWSIxxuSI3/aeZMjMCHYcOcOdLasz4rYmVChZxO2wTDawRGKM8atzF5J5e/F2Jv+8m2vLFGPywDBuamRFFvMSSyTGGL/5OeYYQ2dHsO/Eefq3q8nQWxpR2oos5jmWSIwx2S7ufBJvLNzKV+v2UbtSSb4a3J72dSq6HZbxkysmEhG5B/hOVeNFZDjQCnhVVX/ze3TGmFxn8eZDDJ8bxbEziTx6Qx3+2a0BxQpbkcW8zJcjkhGqOkNErgd6AGOBT4B2fo3MGJOrHDuTyKj5m1kQcZBG15bmvwPCCA0q53ZYJgf4kkjSHnnbC/hEVeeJyCj/hWSMyU1Ulbkb9/PyN1s4l5jC/93cgMe61KVwQSuymF/4kkj2i8h/gG7AGBEpCthfiDGGA6fO8+KcSJZuO0qrmuUYc1co9a+xIov5jS+J5C9AT2Csqp4SkarAc/4NyxgTyFJTlalr9zJmUTQpqcrI25vwQIdgK7KYT2WYSEQkHPgZWAQsVNUEAFU9CBzMmfCMMYFm97GzDJkVwdrdJ7i+XiXe6NuMGhVKuB2WcVFmRyTtgevxHI28LCLHge+BRaq6PSeCM8YEjuSUVP67ajfv/LCdooUK8ObdodzTOsjKm5iME4mqJgPLnBfOKa1bgFdFpD6wWlX/ngMxGmNctuXAaYbMiiByfxw9ml7DK31CqFLGiiwaD59vSHROaU0GJotIAaCD36IyxgSExOQUPvwphk+W7aRcicJ83L8Vt4Rca0ch5hKZ9ZF8A2hG41W1t18iMsYEhPW/n2TIrAhijpzhrlZBjLitMeVKWJFF80eZHZGMzbEojDEB42xiMmMXb2PKL3uoVrY4nw1qyw0NKrsdlglgmfWRLE8bFpEiQAPn122qmuTvwIwxOW/ljqMMmx1J7MnzDOhQi+d6NqJUUSvJZzLnS62tLsBnwB5AgBoiMkBVV/g1MmNMjok7l8Sr325hxvpY6lQuyYzHOtAmuILbYZlcwpevGm8D3VV1G4CINACmAa39GZgxJmd8F3WQEfM2c+LsBf7epS5Pd61vRRbNn+JLIimclkQAVHW7iNgDBYzJ5Y7EJzBy3mYWRR2iSdUyfDqwDSHVy7odlsmFfKmZFS4ik0Ski/OaCKy/0kwiMllEjohIlFfbWyISLSIRIjJHRMp5jRsmIjEisk1Eeni1txaRSGfc++JcdygiRUXka6f9VxEJ/jMrbkx+parMXB/LzeNW8GP0EZ7r0ZB5T3a0JGKumi+J5HFgM/A08AywBXjMh/mm4Lkr3tsPQIiqhgLbgWEAItIE6Ac0deb5WETSjq0/AQYD9Z1X2jIfAk6qaj3gHWCMDzEZk6/FnjzHgE/X8a8Zm6hfpRQLn+7EEzfWs0q9JkuueGpLVROBcc7LZ6q64vKjBFVd7PXrGuBuZ7gP8JXzXrtFJAZoKyJ7gDKquhpARD4H7sBT/6sPMMqZfybwoYiIqmZ474sx+VVqqvLFmt8Z8100AC/3bsr97WtRwIosmmzgy1VbtwGvALWc6QVQVS2TxfceBHztDFfHk1jSxDptSc7w5e1p8+zDE0yyiMQBFYFj6azDYDxHNdSsWTOLYRuTu8QcOcPQWRGE/36Szg0q8/qdIQSVtyKLJvv40tn+LtAXiMyub/si8iKQDExNa0pnMs2kPbN5/tioOgGYABAWFmZHLCZfSEpJZcKKXby3ZAfFixTk7Xua07dVdStvYrKdL4lkHxCVjUlkAHAb0NVrmbFADa/JgoADTntQOu3e88SKSCGgLHAiO2I0JreL2h/H8zMj2HLwNLc2u5aXe4dQuXRRt8MyeZQvieR5YKGILAcS0xpV9U/1mQCISE9gCHCDqp7zGjUf+FJExgHV8HSqr1XVFBGJF5H2wK/AA8AHXvMMAFbj6Wv5yfpHTH6XkJTCez/uYMKKXVQoWYTx97WiZ0hVt8MyeZwvieQ14AxQDPC5YpuITAO6AJVEJBYYiecqraLAD87h9RpVfUxVN4vIdDxXhCUDT6hq2rPiH8dzBVhxPJ3si5z2ScAXTsf8CTxXfRmTb63bc4IhMyPYdews97QOYnivJpQtYbd8Gf+TK32JF5FwVQ3LoXj8LiwsTMPDw90Ow5hscyYxmTe/i+bz1b8TVL44b/RtRqf6VmTRZC8RWZ9RLvDliGSJiHS/7NJdY0wAWLbtCC/OieJA3HkGXhfMcz0aUtKKLJoc5stf3BPA8yKSiOdy3Oy6/NcYc5VOnr3AK99uYfZv+6lbuSQzH+tA61pWZNG4w5cbEkvnRCDGmCtTVRZFHeKleVGcOpfEkzfW48mb6lmRReMqOwY2Jpc4cjqBEfOi+H7zYUKql+GzQW1pWs3qYxn3WSIxJsCpKjPWx/Lqgi0kJKcypGcjHulUm0JWH8sECEskxgSwfSfOMWx2JKtijtE2uAKj72pGncql3A7LmEv4lEhE5Hqgvqp+KiKVgVKqutu/oRmTf6WkKp/9soe3vt9GAYFX7gihf9uaVmTRBCRfijaOBMKAhsCnQGHg/wEd/RuaMfnTjsPxDJkVwW97T9GlYWVeu7MZ1csVdzssYzLkyxHJnUBL4DcAVT0gInYllzHZLCkllfHLdvLBTzGUKFqQd/7anDtaWJFFE/h8SSQXVFVFRAFEpKSfYzIm34mMjeO5mZuIPhTPbaFVGdW7KZVKWZFFkzv4kkimi8h/gHIi8gie54j8179hGZM/JCSl8M6S7UxcsYtKpYoy4f7WdG96rdthGfOn+HJD4lgRuRk4jaef5CVV/cHvkRmTx63ZdZxhsyPZfews/drUYNitjSlb3IosmtzHl872Mao6BM/z1i9vM8b8SfEJSYxeFM3UX/dSo0Jxpj7cjo71KrkdljFXzZdTWzfjeYaIt1vSaTPGXMHS6CO8MCeSw6cTePj62jzbvQElitjtXCZ3y/AvWEQeB/4O1BGRCK9RpYGf/R2YMXnJibMX+Pc3m5m78QD1q5Ti48evo2XN8m6HZUy2yOyr0Jd4HiL1BjDUqz1eVe2Rtsb4QFVZEHGQUfM3E3c+iae71ueJG+tStJAVWTR5R4aJRFXjgDjgXgARqYLnKYmlRKSUqu7NmRCNyZ0OxSUwfG4US7YeJjSoLFMfaUeja+3pCybv8aWz/XYg7VnqR4BawFagqX9DMyZ3UlW+WreP17/dSlJqKi/e2pgHOwZbkUWTZ/nSy/cq0B5YoqotReRGnKMUY8ylfj9+lqGzIlm96zjt61RgdN9QgivZPbwmb/MlkSSp6nERKSAiBVR1qYiM8XtkxuQiKanKpz/vZuzibRQuUIDX72xGvzY1rMiiyRd8SSSnRKQUsAKYKiJHgGT/hmVM7rHtUDzPz4pg075TdG1UhVfvDKFqWSuyaPIPXxJJH+A88E+gP1AW+Lc/gzImN7iQnMrHy2L4aGkMpYsV5r1+LejdvJoVWTT5TqaJREQKAvNUtRuQCnyWI1EZE+A27jvFkJkRbDscT58W1XjptiZUtCKLJp/KNJGoaoqInBORss7lwMbka+cvpDDuh21MWrWbKqWLMWlAGF0bX+N2WMa4ypdTWwlApIj8AJxNa1TVp/0WlTEB6Jedxxg6K5K9J87xt3Y1GXpLI8oUsyKLxviSSL51XsbkS6cTknhjYTTT1u6lVsUSTHukPR3qVnQ7LGMChi+JZB+wRlXP+TsYYwLNki2HeXFuJEfjExncuQ7/7NaA4kWsvIkx3nxJJAOB8SJyHFjpvFap6kl/BmaMm46fSeTlb7Ywf9MBGl1bmgn3h9G8Rjm3wzImIPnyYKsHAESkGnA38BGecilW+9rkOarK/E0HGDV/M2cSk3n25gY8dkNdihSy8ibGZOSK/x0icp/zqN2ZQDfgQ6CTD/NNFpEjIhLl1VZBRH4QkR3Oz/Je44aJSIyIbBORHl7trUUk0hn3vjgX6YtIURH52mn/VUSC/9SaG3OZg3HnefizcJ75aiO1Kpbk26c78XTX+pZEjLkCX/5D3gVaABOBp1X1TVVd7cN8U4Cel7UNBX5U1frAj87viEgToB+eQpA9gY+de1gAPgEGA/WdV9oyHwJOqmo94B3AyraYq5Kaqkz99XduHreCX3YeZ8RtTZj1+HU0uKa026EZkytcMZGoaiVgEJ4S8q+JyFoR+cKH+VYAlz+3pA//u6nxM+AOr/avVDVRVXcDMUBbEakKlFHV1aqqwOeXzZO2rJlA17SjFWN8tfvYWe6duIYX50TRvEZZvv9HZx66vjYFrUaWMT7zpYx8GaAmnvLxwXhKpKRe5ftdo6oHAVT1oPOME4DqwBqv6WKdtiRn+PL2tHn2OctKFpE4oCJwLJ11GIznqIaaNWteZegmL0lOSWXyz7t5e/F2ihQqwJi7mvGXsBpW3sSYq+BLh/kqr9eHqhp7hemvRnr/vZpJe2bz/LFRdQIwASAsLCzdaUz+sfXgaYbMiiAiNo6bm1zDq3eEcE2ZYm6HZUyu5ctVW6EAIlKaDHbUf8JhEanqHI1UxfOgLPAcadTwmi4IOOC0B6XT7j1PrIgUwnOkZI8ANhlKTE7ho6U7+XhpDOVKFOajv7Xi1mbX2lGIMVnky1VbISKyAYgCtojIehEJucr3mw8McIYHAPO82vs5V2LVxtOpvtY5DRYvIu2d/o8HLpsnbVl3Az85/SjG/MFve09y2/ureP/HHfRuXo0f/nkDvUKrWhIxJhv4cmprAvCsqi4FEJEuTtt1mc0kItOALkAlEYkFRgKjgeki8hCwF7gHQFU3i8h0YAueZ508oaopzqIex3MFWHFgkfMCmAR8ISIxeI5E+vmwLiafOXchmbcXb2fyz7upWqYYnz7YhhsbVrnyjMYYn8mVvsSLyCZVbX6lttwiLCxMw8PD3Q7D5ICfY44xdHYE+06c5772NRnSsxGlrciiMVdFRNaralh643w5ItklIiOAtEt+7wN2Z1dwxmS3uPNJvP7tVr4O30ftSiX5enB72tWxIovG+IsviWQQ8DIwG8+VUiuAB/0ZlDFXa/HmQwyfG8Xxsxd47Ia6/KNbfYoVtiKLxviTL1dtnQTs2SMmoB2NT2TUN5v5NuIgjauWYdKANjQLKut2WMbkCxkmEhH5hkwu91XV3n6JyJg/QVWZs2E//16whXOJKTzXoyGDO9ehcEGrj2VMTsnsiGRsjkVhzFXYf+o8L86JZNm2o7SqWY437w6lXhWrj2VMTssskexW1b05FokxPkorsjh6UTQKjLq9Cfd3CLb6WMa4JLNEMhdoBSAis1T1rhyJyJhM7Dp6hqGzIlm75wSd6lfi9TubUaNCCbfDMiZfyyyReH+9q+PvQIzJTHJKKhNX7uadJdspVqgAb90dyt2tg+zOdGMCQGaJRDMYNiZHbT4Qx5BZEUTtP03Pptfy7z5NqWJFFo0JGJklkuYichrPkUlxZxjnd1XVMn6PzuRrCUkpfPDTDsYv30X5EkX4uH8rbm1W1e2wjDGXyTCRqKrdxWVcs/73Ezw/M4KdR89yV6sgRtzWmHIlirgdljEmHb7c2W5MjjmbmMxb32/js9V7qFa2OJ8NassNDSq7HZYxJhOWSEzAWLH9KMNmR3Ig7jwPtK/Fcz0bUaqo/YkaE+jsv9S47tS5C7z67VZmro+lTuWSTH+0A22CK7gdljHGR5ZIjKsWRR5kxLzNnDx3gb93qcvTXa3IojG5jSUS44oj8QmMnLeZRVGHaFK1DFMebENIdSuyaExuZInE5ChVZeb6WF79divnk6zIojF5gSUSk2P2nTjHC3MiWbnjGGG1yjP6rlDqVSnldljGmCyyRGL8LjVV+Xz1Ht78fhsAL/duyv3ta1HAiiwakydYIjF+FXMkniGzIln/+0k61a/EG32bEVTeiiwak5dYIjF+kZSSyoQVu3hvyQ6KFynI2/c0p2+r6lZk0Zg8yBKJyXZR++N4fmYEWw6e5tZm1/Jy7xAqly7qdljGGD+xRGKyTUJSCu/9uIMJK3ZRoWQRxt/Xip4hVmTRmLzOEonJFuv2nGDIzAh2HTvLX8KCePHWJpQtUdjtsIwxOcASicmSM4nJvPldNJ+v/p2g8sX5fw+14/r6ldwOyxiTgyyRmKu2bNsRXpwTxYG48zzYMZh/dW9ISSuyaEy+Y//15k87efYCr3y7hdm/7adelVLMfOw6Wtcq73ZYxhiXWCIxPlNVFkUd4qV5UZw6l8TTN9XjiZvqUbSQFVk0Jj+zRGJ8cuR0AiPmRfH95sM0q16Wzwe1o0k1e9qyMQZcqZQnIv8Ukc0iEiUi00SkmIhUEJEfRGSH87O81/TDRCRGRLaJSA+v9tYiEumMe1/sbrdsp6pMX7ePruOWs2zbUYbd0og5f7/Okogx5qIcTyQiUh14GghT1RCgINAPGAr8qKr1gR+d3xGRJs74pkBP4GMRSTuX8gkwGKjvvHrm4KrkeftOnOP+SWt5flYEjauW4bt/dObRG+pSyCr1GmO8uHVqqxBQXESSgBLAAWAY0MUZ/xmwDBgC9AG+UtVEYLeIxABtRWQPUEZVVwOIyOfAHcCiHFuLPColVfnslz289f02ChYQXr0jhL+1rWlFFo0x6crxRKKq+0VkLLAXOA8sVtXFInKNqh50pjkoIlWcWaoDa7wWEeu0JTnDl7f/gYgMxnPkQs2aNbNzdfKcHYfjeX5WBBv2nuLGhpV57c5mVCtX3O2wjDEBLMcTidP30QeoDZwCZojIfZnNkk6bZtL+x0bVCcAEgLCwsHSnye8uJKcyfvlOPvwphpJFC/LuX1vQp0U1K7JojLkiN05tdQN2q+pRABGZDVwHHBaRqs7RSFXgiDN9LFDDa/4gPKfCYp3hy9vNnxQRe4rnZ0YQfSie25tXY+TtTahUyoosGmN840av6V6gvYiUcK6y6gpsBeYDA5xpBgDznOH5QD8RKSoitfF0qq91ToPFi0h7ZzkPeM1jfJCQlMIbC7dyx0c/c/LcBSY+EMYH97a0JGKM+VPc6CP5VURmAr8BycAGPKedSgHTReQhPMnmHmf6zSIyHdjiTP+EqqY4i3scmAIUx9PJbh3tPlqz6zhDZ0Ww5/g57m1bg2G3NqZMMSuyaIz580Q1f3UZhIWFaXh4uNthuCY+IYnRi6KZ+utealYowei+zbiunhVZNMZkTkTWq2pYeuPszvZ85Kfow7w4J4rDpxN4+Pra/F/3hhQvYuVNjDFZY4kkHzhx9gL//mYzczceoME1pfi4/3W0rGlFFo0x2cMSSR6mqnwTcZBR8zcTn5DEM13r88SN9ShSyO5MN8ZkH0skedShuASGz41iydbDNK9RjjfvCqXhtaXdDssYkwdZIsljVJWv1u3j9W+3kpSayvBejXmwY20KWnkTY4yfWCLJQ34/fpahsyJZves4HepUZPRdzahVsaTbYRlj8jhLJHlASqry6c+7Gbt4G4ULFOCNvs3o16aGlTcxxuQISyS53LZDniKLm/adolvjKrx6RzOuLVvM7bCMMfmIJZJc6kJyKh8vi+GjpTGULlaY9+9tye2hVe0oxBiT4yyR5EIb951iyMwIth2Op0+Laoy8vSkVShZxOyxjTD5liSQXOX8hhXE/bGPSqt1UKV2MSQPC6Nr4GrfDMsbkc5ZIcolfdh5j6KxI9p44R/92NRlySyMrsmiMCQiWSALc6YQk3lgYzbS1e6lVsQTTHmlPh7oV3Q7LGGMuskQSwJZsOcyLcyM5Gp/Io53r8I9uDazIojEm4FgiCUDHzyQy6pstfLPpAI2uLc3EB8IIDSrndljGGJMuSyQBRFWZv+kAo+Zv5kxiMs/e3IDHbqhrRRaNMQHNEkmAOHDqPMPnRvFT9BFa1izHmLtCaXCNFVk0xgQ+SyQuS01Vpq3byxsLo0lJVV66rQkDrgu2IovGmFzDEomLdh87y9BZEfy6+wQd61XkjTtDqVmxhNthGWPMn2KJxAXJKalMWrWbcT9sp0ihArx5Vyj3hAVZeRNjTK5kiSSHbT14miGzIoiIjaN7k2t45Y4QriljRRaNMbmXJZIckpicwkc/xfDxsp2UK1GYj/7WilubXWtHIcaYXM8SSQ74be9JhsyMYMeRM/RtWZ0RtzWhvBVZNMbkEZZI/OjchWTGfr+dT3/ZTdUyxfj0wTbc2LCK22EZY0y2skTiJ6t2HGPYnAj2nTjPAx1q8XzPRpQqapvbGJP32J4tm8WdT+K1b7cwPTyW2pVKMv3RDrStXcHtsIwxxm8skWSj7zcfYsTcKI6fvcDjXeryTNf6FCtsRRaNMXmbJZJscDQ+kVHzN/Nt5EEaVy3DpAFtaBZU1u2wjDEmR1giyQJVZc6G/fx7wRbOJabwXI+GDO5ch8IFrciiMSb/cGWPJyLlRGSmiESLyFYR6SAiFUTkBxHZ4fws7zX9MBGJEZFtItLDq721iEQ6496XHLwpY/+p8wz8dB3PTt9E3cqlWPhMJ564sZ4lEWNMvuPWXu894DtVbQQ0B7YCQ4EfVbU+8KPzOyLSBOgHNAV6Ah+LSFrHwyfAYKC+8+rp78BTU5XPV++h+7jlrNtzglG3N2HGox2oV6WUv9/aGGMCUo6f2hKRMkBnYCCAql4ALohIH6CLM9lnwDJgCNAH+EpVE4HdIhIDtBWRPUAZVV3tLPdz4A5gkb9i33n0DENnRbBuz0k61a/E63c2o0YFK7JojMnf3OgjqQMcBT4VkebAeuAZ4BpVPQigqgdFJO3OverAGq/5Y522JGf48na/mL5uH8PnRVGsUAHeujuUu1tbkUVjjAF3Tm0VAloBn6hqS+AszmmsDKS3t9ZM2v+4AJHBIhIuIuFHjx79s/ECULtySbo2qsKS/7uBe8JqWBIxxhiHG0cksUCsqv7q/D4TTyI5LCJVnaORqsARr+lreM0fBBxw2oPSaf8DVZ0ATAAICwtLN9lcSZvgCrQJthsLjTHmcjl+RKKqh4B9ItLQaeoKbAHmAwOctgHAPGd4PtBPRIqKSG08neprndNg8SLS3rla6wGveYwxxuQQt+4jeQqYKiJFgF3Ag3iS2nQReQjYC9wDoKqbRWQ6nmSTDDyhqinOch4HpgDF8XSy+62j3RhjTPpE9arO9ORaYWFhGh4e7nYYxhiTq4jIelUNS2+c3T1njDEmSyyRGGOMyRJLJMYYY7LEEokxxpgssURijDEmS/LdVVsichT43e04MlAJOOZ2EJmw+LIm0OODwI/R4suarMRXS1Urpzci3yWSQCYi4RldXhcILL6sCfT4IPBjtPiyxl/x2aktY4wxWWKJxBhjTJZYIgksE9wO4AosvqwJ9Pgg8GO0+LLGL/FZH4kxxpgssSMSY4wxWWKJxBhjTJZYInGJiNQQkaUislVENovIM077KBHZLyIbndetLsa4R0QinTjCnbYKIvKDiOxwfpZ3KbaGXttoo4icFpF/uLn9RGSyiBwRkSivtgy3l4gME5EYEdkmIj1ciu8tEYkWkQgRmSMi5Zz2YBE577Udx7sUX4afZ4Bsv6+9YtsjIhuddje2X0b7FP//DaqqvVx4AVWBVs5waWA70AQYBfzL7ficuPYAlS5rexMY6gwPBcYEQJwFgUNALTe3H9AZz2Oko660vZzPehNQFKgN7AQKuhBfd6CQMzzGK75g7+lc3H7pfp6Bsv0uG/828JKL2y+jfYrf/wbtiMQlqnpQVX9zhuOBrUB1d6PySR/gM2f4M+AO90K5qCuwU1VdrVigqiuAE5c1Z7S9+gBfqWqiqu4GYoC2OR2fqi5W1WTn1zVc+vjqHJXB9stIQGy/NM5TWv8CTPNnDJnJZJ/i979BSyQBQESCgZZA2nPsn3RONUx269SRQ4HFIrJeRAY7bdeo5zHHOD+ruBbd//Tj0n/gQNl+kPH2qg7s85ouFve/SAzi0qeM1haRDSKyXEQ6uRUU6X+egbb9OgGHVXWHV5tr2++yfYrf/wYtkbhMREoBs4B/qOpp4BOgLtACOIjncNktHVW1FXAL8ISIdHYxlnSJ53HNvYEZTlMgbb/MSDptrl2LLyIv4nmU9VSn6SBQU1VbAs8CX4pIGRdCy+jzDKjtB9zLpV9mXNt+6exTMpw0nbar2oaWSFwkIoXxfOBTVXU2gKoeVtUUVU0FJuLnw/XMqOoB5+cRYI4Ty2ERqQrg/DziVnyOW4DfVPUwBNb2c2S0vWKBGl7TBQEHcjg2AERkAHAb0F+dk+fO6Y7jzvB6POfPG+R0bJl8noG0/QoBfYGv09rc2n7p7VPIgb9BSyQucc6pTgK2quo4r/aqXpPdCURdPm9OEJGSIlI6bRhPp2wUMB8Y4Ew2AJjnRnxeLvkmGCjbz0tG22s+0E9EiopIbaA+sDangxORnsAQoLeqnvNqrywiBZ3hOk58u1yIL6PPMyC2n6MbEK2qsWkNbmy/jPYp5MTfYE5eVWCvS66wuB7PYWQEsNF53Qp8AUQ67fOBqi7FVwfPFR2bgM3Ai057ReBHYIfzs4KL27AEcBwo69Xm2vbDk9AOAkl4vu09lNn2Al7E8011G3CLS/HF4DlPnvY3ON6Z9i7nc98E/Abc7lJ8GX6egbD9nPYpwGOXTevG9ston+L3v0ErkWKMMSZL7NSWMcaYLLFEYowxJksskRhjjMkSSyTGGGOyxBKJMcaYLLFEYgKWU0E1W+4DEZEuInKdj9PuEZFKV5hmoIhUy6bYKovIKhGJEpE7vNrnZfQeIvKYiDyQHe+f07Jz25nAYInE5BddAJ8SiY8GAtm1M7wXTzG9DsBzACJyO5479tO901hVx6vq51l947Sb5nLYQLJv25kAYInEBLqCIjLReb7CYhEpDiAidUXkO6eg5EoRaeS03y4ivzrF8paIyDVOAbvHgH86z4a4pICeiFR0lr1BRP6DU4Po8iMiEfmXeJ6PcTcQBkx1ltdLROZ4TXeziMzGd0lAcTzlvFOdkhv/AN7KaAYnjn85w8tEZIyIrBWR7WnrJyIFRWSseJ4pEyEiTznte0TkJRFZBdwjIt1FZLWI/CYiM5xaTWnTve6MCxeRViLyvYjsFJHHvGJ5TkTWOe/xste223r5Z5fOtiv+J7aTCVCWSEygqw98pKpNgVN47hgGmAA8paqtgX8BHzvtq4D26imW9xXwvKruAcYD76hqC1Vdedl7jARWOfPMB2pmFpCqzgTC8dSmagEsBBqLSGVnkgeBT//EOn4J9AC+w/P8jb8Dn6tXyRIfFFLVtngS0EinbTCe50y0VNVQ/leQESBBVa8HlgDDgW7qKdAZjqfIYJp9qtoBWInnDu67gfbAvwFEpDuez6gtnsKKreV/xT3/8Nldvu1U9fyfWEcToAq5HYAxV7BbVTc6w+uBYOcb83XADE95IcDzbR48hee+dmo0FQF2+/AenfEU3UNVvxWRk38mQFVVEfkCuE9EPsVzisrn/gtVjQN6AYinTPoQoK+ITATKA2+r6uorLCbtCGg9nocqgacG1Hh1njeiqt7P0kgrMNgezwOOfna2ZRHA+73mOz8jgVLqec5FvIgkiOdpit2d1wZnulJ4Eshe0vnsrrAOJpeyRGICXaLXcAqeU0AFgFPO0cDlPgDGqep8EemC5xu+L9KrFZTMpUftxTKZ/1PgGyABmKH/e1gUACLSDviP8+tLqjqf9L0EvIan32Q9nqOVecCNV4g/bTul8L//ayHjsuBnvab5QVXvvcJyU7n0s0h13keAN1T1P94zOacT0/vsTB5kp7ZMrqOeZyzsFpF7wFP1VESaO6PLAvud4QFes8XjefxoelYA/Z1l3YLnKADgMFDF6UMpiqfUerrLczrFD+A5TTQlnZh/dU7ltMgoiYhIfaCaqi7HU5AyFU8iyCyBZWYx8JjT54KIVEhnmjVARxGp50xTQkT+TLnz74FBXv0q1UXkSg87y+yzMLmQJRKTW/UHHhKRtOrEfZz2UXhOea0EjnlN/w1wZ3qd7cDLQGcR+Q3PaZq9AKqahKcv4FdgARDtNc8UYPxlHcZT8fQpbLnKdXoNTyICT6XZgXh29GOvcnn/xbMuEc52+tvlE6jqUed9polIhPN+jXx9A1VdjOeoabWIRAIzuXKSmMIft53Jxaz6rzHZREQ+BDao6iS3YzEmJ1kiMSYbiMh6PP0ON6tq4pWmNyYvsURijDEmS6yPxBhjTJZYIjHGGJMllkiMMcZkiSUSY4wxWWKJxBhjTJb8f4OQ6E96SoeeAAAAAElFTkSuQmCC\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": "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", "text/plain": [ "
" ] @@ -1935,7 +1935,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAEGCAYAAABiq/5QAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAArRklEQVR4nO3dd3yV5f3/8dcnA8KGDEKYYcneYSPgRK0DHFUcoLVF2mK1Fr+12ir+WjvcqxVFUbQOqMU9ClqZsoKEJVvCJiRhhU2S6/fHuUMjJiFATu6TnPfz8TiPc5879znnk+sk7/s+133f123OOUREJHxE+F2AiIiULwW/iEiYUfCLiIQZBb+ISJhR8IuIhJkovwsojfj4eJecnOx3GSIiFcrixYuznHMJJ8+vEMGfnJxMamqq32WIiFQoZrapqPnq6hERCTMKfhGRMKPgFxEJMxWij19ETs/x48fZunUrR44c8bsUKQcxMTE0btyY6OjoUi2v4BephLZu3UqtWrVITk7GzPwuR4LIOUd2djZbt26lefPmpXqOunpEKqEjR44QFxen0A8DZkZcXNxpfbtT8ItUUgr98HG6n3WlDv5F6bt5YcYGv8sQEQkplTr4P1+xk0f/s5pvNu/xuxQROQ3jx4/n9ddfL5PXSk5OJisrq8Rl/vznP3/vcb9+/crkvUtrxowZfP311ycel+XvX5RKHfy/vugcGtSO4YH3VpCbl+93OSJhyTlHfv7p/f+NHj2aESNG/GB+bm5uWZX1PScHf+EQLisl1X5y8Bf3+5eVSh38NatG8dAVHVi1Yz+vzk33uxyRsJGenk67du34xS9+Qffu3dmyZQuPPfYYPXv2pHPnzjz00EMnln399dfp3LkzXbp04ZZbbgFg3LhxPP744wAMHjyY+++/n0GDBvHMM8+waNEi+vXrR5cuXejVqxc5OTm89tprjBkz5sRrXn755cyYMeMHdQ0dOpQePXrQoUMHXnrpJQDuu+8+Dh8+TNeuXbnpppsAqFmzJhBYad1777107NiRTp06MXnyZCAQ1IMHD+baa6+lbdu23HTTTRR1NcOTa//oo4/o3bs33bp148ILLyQjI4P09HTGjx/PU089RdeuXZk9e/b3fv+0tDT69OlD586dGTZsGHv2nH0PRqU/nHNIh0QubFefJ6ev5bLOSTSqW83vkkTK1cMfreTb7fvL9DXbN6zNQ1d0KHGZNWvW8Oqrr/KPf/yDadOmsW7dOhYuXIhzjiuvvJJZs2YRFxfHI488wty5c4mPj2f37t1FvtbevXuZOXMmx44do23btkyePJmePXuyf/9+qlUr/f/0xIkTiY2N5fDhw/Ts2ZNrrrmGv/71rzz//POkpaX9YPmpU6eSlpbG0qVLycrKomfPngwcOBCAJUuWsHLlSho2bEj//v2ZO3cuAwYMKLZ2gD179jB//nzMjJdffplHH32UJ554gtGjR1OzZk3Gjh0LwJdffnni+SNGjOC5555j0KBBPPjggzz88MM8/fTTpf6di1Kpt/ghsLd73JWBP9BxH670uRqR8NGsWTP69OkDwLRp05g2bRrdunWje/furF69mnXr1vHf//6Xa6+9lvj4eABiY2OLfK3rr78eCKxMkpKS6NmzJwC1a9cmKqr026/PPvssXbp0oU+fPmzZsoV169aVuPycOXMYPnw4kZGRJCYmMmjQIBYtWgRAr169aNy4MREREXTt2pX09PQSa4fA+RVDhgyhU6dOPPbYY6xcWXIm7du3j7179zJo0CAARo4cyaxZs0r9+xan0m/xAzSuV527L2zNXz5bzbSVO7m4QwO/SxIpN6faMg+WGjVqnJh2zvG73/2OO+6443vLPPvss6U6FLHgtZxzRS4fFRX1vf0IRR3TPmPGDL744gvmzZtH9erVGTx48CmPfS+q+6ZA1apVT0xHRkYW24dfuB3uvPNO7rnnHq688kpmzJjBuHHjSnz/YKn0W/wFfjKgOW0b1GLchys5eDQ4O4hEpGhDhgxh4sSJHDhwAIBt27axa9cuLrjgAqZMmUJ2djZAsV09Bdq2bcv27dtPbHXn5OSQm5tLcnIyaWlp5Ofns2XLFhYuXPiD5+7bt4969epRvXp1Vq9ezfz580/8LDo6muPHj//gOQMHDmTy5Mnk5eWRmZnJrFmz6NWr1xm3w759+2jUqBEAkyZNOjG/Vq1a5OTk/GD5OnXqUK9ePWbPng3AG2+8cWLr/2yETfBHR0bwyLCObN93hKe/WOt3OSJh5eKLL+bGG2+kb9++dOrUiWuvvZacnBw6dOjAAw88wKBBg+jSpQv33HNPia9TpUoVJk+ezJ133kmXLl246KKLOHLkCP3796d58+Z06tSJsWPH0r179x8895JLLiE3N5fOnTvzhz/84UQ3FMCoUaPo3LnziZ27BYYNG3Zix/P555/Po48+SoMGZ95jMG7cOK677jrOPffcE91bAFdccQXvvffeiZ27hU2aNIl7772Xzp07k5aWxoMPPnjG71/ASvoqEypSUlJcWV2I5XdTlzMldQsfjRlA+4a1y+Q1RULNqlWraNeund9lSDkq6jM3s8XOuZSTlw2bLf4C913SlrrVorn/veXk5Yf+Sk9EpKyFXfDXqR7N7y9vR9qWvby9cLPf5YiIlLuwC36AoV0b0b9VHH/7fDW7cjReuVROFaEbV8rG6X7WYRn8ZsYfr+rI0eP5/OnjVX6XI1LmYmJiyM7OVviHgYLx+GNiYkr9nLA4jr8oLRJq8ovzWvL0F+u4LqUx57ZO8LskkTLTuHFjtm7dSmZmpt+lSDkouAJXaYXdUT2FHTmex6XPzMY5x+d3DyQmOrLM30NExC86qqcIMdGRPDK0I+nZh/jHV+v9LkdEpFyEdfAD9GsVz7BujXhh5gbW7zrgdzkiIkEX9sEPcP9l7agWHcnv31+unWEiUukp+IGEWlW579J2zP9uN1O/2eZ3OSIiQaXg99zQswndm9blkU9XsefgMb/LEREJmqAFv5nFmNlCM1tqZivN7GFvfqyZTTezdd59vWDVcDoiIoxHhnVi3+Hj/O3z1X6XIyISNMHc4j8KnO+c6wJ0BS4xsz7AfcCXzrnWwJfe45DQLqk2Px3QnHcWbWFResnDw4qIVFRBC34XUHCYTLR3c8BVQMFA1JOAocGq4UzcdWFrGtWtxgPvLedYri7QLiKVT1D7+M0s0szSgF3AdOfcAiDRObcDwLuvX8xzR5lZqpmllufZh9WrRPHwlR1Ym3GAV+ZsLLf3FREpL0ENfudcnnOuK9AY6GVmHU/juS8551KccykJCeU7nMKF7RMZ0iGRZ75cy5bdh8r1vUVEgq1cjupxzu0FZgCXABlmlgTg3e8qjxpO17grOxBpxh8+WKFj+0WkUgnmUT0JZlbXm64GXAisBj4ERnqLjQQ+CFYNZyOpTjXuHdKGGWsyeWP+Jr/LEREpM8EcnTMJmGRmkQRWMFOccx+b2TxgipndDmwGrgtiDWdlZL9kZq3L4k+frCKlWawu1SgilUJYj85ZGtkHjnLpM7OpGRPFx3cOoHqVsB3JWkQqGI3OeYbialbl6Ru6sjHrIA99sNLvckREzpqCvxT6tYxnzHmt+NfirXyQprF8RKRiU/CX0l0XtCalWT0eeG8Fm7IP+l2OiMgZU/CXUlRkBE/f0JUIgzvfXqKzekWkwlLwn4bG9arz6LWdWbZ1H49PW+N3OSIiZ0TBf5ou6ZjEzX2a8tKs75ixJiTPPRMRKZGC/wz8/kftadugFr+ZspRd+4/4XY6IyGlR8J+BmOhInhvejYPHcvn1lDTy80P/XAgRkQIK/jPUOrEW467owNz12bwwc4Pf5YiIlJqC/yxc37MJP+qcxJPT17J40x6/yxERKRUF/1kwM/5ydSeS6sTwq7eXsO/wcb9LEhE5JQX/WaodE81zw7uRsf8Iv5u6TEM4i0jIU/CXgW5N6zF2SBs+Xb6Ttxdu8bscEZESKfjLyKhzW3Bu63ge/mglazNy/C5HRKRYCv4yEhFhPPHjLtSKiWLMW99w+Fie3yWJiBRJwV+G6teK4ckfd2VtxgH++Mm3fpcjIlIkBX8ZG3hOAncMasFbCzbzybIdfpcjIvIDCv4gGHtxG7o0qct9U5exZfchv8sREfkeBX8QREdG8NwN3cAFhnA+mqv+fhEJHQr+IGkaFxjCOW3LXn77ro7vF5HQoeAPoks7JTH24nN4P207z3y5zu9yREQAiPK7gMrul+e1YmPWIZ7+Yh3JcTUY2q2R3yWJSJjTFn+QFYzn07t5LP/37jJS03f7XZKIhDkFfzmoEhXB+Jt70KheNUa9sVgXaxcRXyn4y0m9GlWYeGtP8p3jttcWse+QRvIUEX8o+MtR8/gavHhzD7bsPsTofy7mWG6+3yWJSBhS8Jez3i3i+OvVnZn3XTa/f3+5DvMUkXKno3p8cE2PxmzKPsiz/11P8/ia/HxwS79LEpEwouD3ya8vOoeN2Yf42+eraRZXncs6JfldkoiECXX1+MTMeOzaznRvWpdfT04jbctev0sSkTCh4PdRTHQkE0akUL92VX46KZWtezSgm4gEn4LfZ3E1qzJxZE+O5uZx+2up5BzRYZ4iElwK/hDQOrEWL9zUgw2ZBxjz1hJy83SYp4gEj4I/RAxoHc8fh3Zk5tpMHv7oWx3mKSJBo6N6QsjwXk1JzzrIi7O+o3l8DX4yoLnfJYlIJaTgDzG/vaQt6dkH+eMn39I0tjoXtk/0uyQRqWTU1RNiIiKMp6/vRqdGdfjVO0tYsW2f3yWJSCWj4A9B1apE8vKIFOpUi+b2SYs0mqeIlCkFf4iqXzuG127rxbHcfIa/NF8XbReRMhO04DezJmb2lZmtMrOVZnaXN3+cmW0zszTvdlmwaqjo2jSoxT9/2puDx/K44aX5OsFLRMpEMLf4c4HfOOfaAX2AX5pZe+9nTznnunq3T4NYQ4XXoWEd3vxpb3KOHGf4hPls33vY75JEpIILWvA753Y4577xpnOAVYAuOHsGOjaqwxu392bvwePcOGE+O/cd8bskEanAyqWP38ySgW7AAm/WGDNbZmYTzaxeMc8ZZWapZpaamZlZHmWGtC5N6jLp9l5kHTjGjRPms2u/wl9EzkzQg9/MagL/Bu52zu0HXgBaAl2BHcATRT3POfeScy7FOZeSkJAQ7DIrhO5N6/HabT3Zuf8IwyfMJzPnqN8liUgFFNTgN7NoAqH/pnNuKoBzLsM5l+ecywcmAL2CWUNlk5Icy6u39mT73iPc9PJ8sg8o/EXk9ATzqB4DXgFWOeeeLDS/8BVHhgErglVDZdW7RRyv3JrC5t2HuOnlBew+eMzvkkSkAgnmFn9/4Bbg/JMO3XzUzJab2TLgPODXQayh0urXMp6XR/RkY9ZBbn55AXsPKfxFpHSsIowCmZKS4lJTU/0uIyTNXJvJzyalnjjmv061aL9LEpEQYWaLnXMpJ8/XmbsV3KBzEnjxlh6s3rmfERMXsl8XchGRU1DwVwLnta3PP27qwcpt+xg5caGu4iUiJVLwVxIXtU/k+Ru7s2zrPm57dREHj+b6XZKIhCgFfyVySccGPHtDN5Zs2cttry3i0DGFv4j8kIK/kvlR5ySeur4rqem7uf21VA4fy/O7JBEJMQr+SujKLg154sddmL8xm5+9nqpuHxH5HgV/JTWsW2Mev7YLX2/IYviE+WTpDF8R8Sj4K7FrejRmwogU1mbkcM0LX5OepSt5iYiCv9K7oF0ib/+sDzlHcrn6ha9J27LX75JExGcK/jDQrWk93h3dlxpVIxn+0nz+uzrD75JExEcK/jDRIqEmU3/en1b1a/Kz1xfzzsLNfpckIj5R8IeRhFpVeWdUH/q3iue+qct55ot1VISxmkSkbCn4w0yNqlG8MjKFa7o35qkv1nL/e8vJzcv3uywRKUdRpV3QzLoA53oPZzvnlganJAm26MgIHr+uM0l1Ynj+q/Xs2n+U527sRvUqpf5zEJEKrFRb/GZ2F/AmUN+7/dPM7gxmYRJcZsbYIW3449COfLVmFzdOWKCreYmEidJ29dwO9HbOPeicexDoA/wseGVJebmlTzNeuLkHq3bs59rx89icfcjvkkQkyEob/AYUHvQlz5snlcCQDg1462e92XPoGFe/MJflW/f5XZKIBFFpg/9VYIGZjTOzccB8AtfTlUqiR7NY3h3dj6pRkVz/0jxmrNnld0kiEiSlCn7vYum3AbuBPcBtzrmng1iX+KBV/ZpM/UU/msXV4KeTUnl38Va/SxKRICgx+M2stncfC6QD/wTeADZ586SSSawdw5Q7+tC7RSxj/7WU5/+rY/1FKptTbfG/5d0vBlIL3QoeSyVUKyaaV2/txdCuDXl82lrGvLWEAxraWaTSKPHAbefc5d598/IpR0JFlagInrq+K22TavPo56tZm5HD+Ft60DKhpt+lichZKu1x/F+WZp5ULmbG6EEteeP23mQfPMZVz8/lPyt3+l2WiJylU/Xxx3h9+fFmVs/MYr1bMtCwXCoU3/VvFc9Hdw6gRUIN7nhjMY//Zw15+er3F6moTrXFfweB/vy23n3B7QPg78EtTUJJo7rVmHJHX65PacLzX63nttcWsefgMb/LEpEzYKU5YsPM7nTOPVcO9RQpJSXFpaZqX3KoeHvhZh76YCX1a1dl/M096Niojt8liUgRzGyxcy7l5PmlPY7/OTPraGY/NrMRBbeyL1MqguG9mjJldF/y8h3XvPC1jvcXqWBKu3P3IeA573Ye8ChwZRDrkhDXtUldPrpzAN2b1mPsv5byh/dXcCxXwzuLVASlHbLhWuACYKdz7jagC1A1aFVJhRBfsypv3N6LUQNb8Mb8Tdzw0jwy9h/xuywROYXSBv8R51w+kOudzbsLaBG8sqSiiIqM4P7L2vH3G7uzemcOP3p2Dgu+y/a7LBEpwSmD38wMWGZmdYEJBI7q+QZYGNzSpCL5Ueck3v9lf2rHRHHjywuYOGejhnoQCVGnDH4X+O/t6pzb65wbD1wEjPS6fEROOCexFu+P6c/5bevz/z7+lrsnp3HomIZ6EAk1pe3qmW9mPQGcc+nOuWVBrEkqsNox0bx4cw/uHdKGD5du5+p/fM2anTl+lyUihZQ2+M8D5pnZBjNbZmbLzUzhL0WKiDB+eV4rJt3Wi6wDR7ni+Tm8Mmcj+TrbVyQklPYErmZFzXfObSrzioqgE7gqrqwDR7nv38v4YtUu+reK4/HrupBUp5rfZYmEhbM9gWtTUbeyL1Mqm/iaVZkwIoW/XN2JbzbtZchTs/h42Xa/yxIJa6Xt6hE5Y2bG8F5N+fSuc2mRUJMxby3h15PT2H/kuN+liYQlBb+Um+bxNXh3dF/uvrA1Hy7dzqVPz2a+jvkXKXdBC34za2JmX5nZKjNbaWZ3efNjzWy6ma3z7usFqwYJPVGREdx94Tm8O7ov0ZHG8Anz+ctnqziam+d3aSJhI5hb/LnAb5xz7YA+wC/NrD1wH/Clc6418KX3WMJMt6b1+ORX53JDz6a8OPM7hv79a9Zm6LBPkfIQtOB3zu1wzn3jTecAq4BGwFXAJG+xScDQYNUgoa1G1Sj+cnUnXh6Rwq79R7j8OR32KVIeyqWP37tiVzdgAZDonNsBgZUDUL+Y54wys1QzS83MzCyPMsUnF7ZP5PO7B3Juq3j++PG3jJi4kJ37NNibSLAEPfjNrCbwb+Bu59z+0j7POfeScy7FOZeSkJAQvAIlJCTUqsrLI1P487BOLN60hyFP67BPkWAJavCbWTSB0H/TOTfVm51hZknez5MIjPQpgplxY+/AYZ/J8TUY89YS7n5niS7xKFLGgnlUjwGvAKucc08W+tGHwEhveiSB6/eKnFBw2OddF7Tm42U7uODJmfx78VaN9ilSRko1ZMMZvbDZAGA2sBwouDTT/QT6+acATYHNwHXOud0lvZaGbAhfq3fu5/6py/lm8176t4rjT0M70Ty+ht9liVQIxQ3ZELTgL0sK/vCWn+94c+FmHv1sNUfz8rnzvFbcMaglVaJ0/qFISc5qrB4RP0VEGLf0acaXvxnERe0SeWL6Wi57djaL0kv8oigixVDwS4VRv3YMf7+pOxNvTeHwsTyuGz+P301dxr5DGvNH5HQo+KXCOb9tItPvGciogS2YkrqVC56cwQdp27TzV6SUFPxSIVWvEsX9l7XjwzH9aVS3Gne9k8bIVxexOfuQ36WJhDwFv1RoHRrWYeov+jPuivYsTt/NxU/P5IUZGziel3/qJ4uEKQW/VHiREcat/ZvzxW8GMeicBP72+WqueG4O32ze43dpIiFJwS+VRlKdarx4Swov3dKDfYePc80LX/PAe8t15q/ISRT8Uulc3KEB0+8ZxK39knl74WYGPfYVL8/+jmO56v4RAQW/VFI1q0bx0BUd+PzugXRtWo8/fbKKIU/PYtrKnTr6R8Kegl8qtXMSa/H6T3rx6m09iYwwRr2xmBsnLGDl9n1+lybiGwW/hIXz2tTn87vO5Y9XdWD1zv1c/twc/u/dpezar3H/Jfwo+CVsREVGcEvfZGbcex4/HdCc95ZsY/DjM3juy3UcOa5r/kr4UPBL2KlTLZoHftSe6b8exMDWCTwxfS3nPz6D95ds02UfJSwo+CVsJcfXYPwtPXhnVB9ia1bh7slpDHvhaxZv0uBvUrkp+CXs9WkRx4e/HMDj13Vh577DXPPCPMa89Q1bdmv4B6mcFPwiBIZ+vrZHY74aO5hfXdCaL1ZlcMGTM/nrZ6s1+qdUOroQi0gRduw7zGOfr2Hqkm3UionipwNa8JMBydSKifa7NJFS0xW4RM7Aqh37eWr6WqZ9m0Hd6tGMGtiCkX2TqVE1yu/SRE5JwS9yFpZv3ceT09fw1ZpM4mpU4eeDW3Jzn2bEREf6XZpIsRT8ImVg8aY9PDV9LXPWZ1G/VlV+eV4rbujVhKpRWgFI6FHwi5ShBd9l88T0tSzcuJuGdWIYc35rrktpTHSkjpeQ0KHgFyljzjnmrs/mielrWLJ5L01iq/Gr81szrFsjorQCkBBQXPDrr1PkDJkZA1rHM/Xn/Xj11p7UqRbNve8u4+KnZvFB2jbydBawhCgFv8hZMjPOa1ufj8YM4MVbelAlKoK73knj0mdm8enyHRoGQkKOunpEylh+vuPTFTt4avpaNmQepEVCDUYPbMlV3RpqJ7CUK/Xxi5SzvHzHp8t3MH7mBlZu309i7arcPqA5w3s11YlgUi4U/CI+cc4xe10W42du4OsN2dSKiWJE32bc2q85CbWq+l2eVGIKfpEQsHTLXl6ctYHPVuwkOjKC63o0ZtTAFjSLq+F3aVIJKfhFQsh3mQeYMPs7/r14G7n5+VzWKYnRg1rSsVEdv0uTSkTBLxKCdu0/witzN/LW/M3kHM3l3NbxjB7Ukn4t4zAzv8uTCk7BLxLC9h85zpvzN/PKnI1kHThK58Z1GD2oJUM6NCAyQisAOTMKfpEK4MjxPKZ+s42XZm0gPfsQyXHVGdkvmWt7NNaRQHLaFPwiFUhevuPzFTuZMPs70rbspUaVSK7p0ZgRfZNpVb+m3+VJBaHgF6mglm7Zy6Sv0/l42Q6O5eVzbut4bu2XzOA29dUNJCVS8ItUcFkHjvL2gs38c8EmMvYfpWlsdUb0bcZ1KU2oU03dQPJDCn6RSuJ4Xj7/WbmTSV+nsyh9D9WiIxnWvRG39kvmnMRafpcnIUTBL1IJrdi2j9fnpfNB2naO5ubTt0UcI/slc1H7RHUDiYJfpDLbc/AY7yzawj/nb2Lb3sM0qluNm/s044aeTahXo4rf5YlPyj34zWwicDmwyznX0Zs3DvgZkOktdr9z7tNTvZaCX6R0cvPy+WLVLiZ9nc6877KpGhXBZZ2SuL5nE3o3j9VJYWHGj+AfCBwAXj8p+A845x4/nddS8IucvjU7c/jn/E28n7aNnCO5NI+vwY9TmnBNj0bUrxXjd3lSDnzp6jGzZOBjBb+Ifw4fy+OzFTt4Z9EWFm7cTWSEcUHb+tzQqwkDWyfoMpGVWHHBH+VDLWPMbASQCvzGObenqIXMbBQwCqBp06blWJ5I5VKtSiRXd2/M1d0bsyHzAFNSt/DvxVuZ9m0GDWrHcF1KY36c0oQmsdX9LlXKSXlv8ScCWYAD/ggkOed+cqrX0Ra/SNk6npfPl6t28c6izcxcm4lzMKBVPNf3bMLFHRJ1pbBKIiS2+J1zGYUKmgB8XJ7vLyIB0ZERXNKxAZd0bMD2vYf5V+pWpqRu4c63l1CvejRXd2/M9T2b6LyASqpcg9/MkpxzO7yHw4AV5fn+IvJDDetW464LWzPm/FbMXZ/F5EVbeH1eOq/M2Ui3pnW5untjLu+UpMNCK5FgHtXzNjAYiAcygIe8x10JdPWkA3cUWhEUS109IuUr+8BR3luyjSmpW1ibcYDoSGNwm/oM69aI89vWJyZaXUEVgU7gEpHT5pzj2x37eX/JNj5I286unKPUioniso5JDO3WiN7NY4nQGcIhS8EvImclL98xb0M2U5ds5T8rdnLwWB4N68RwVbdGDOvWSPsDQpCCX0TKzKFjuUz/NoP3l2xj1ros8vId7ZNqM6xbI67s2pDE2jpBLBQo+EUkKLIOHOXjpdt5b8k2lm7dR4RB/1bxDO3aiCEdG1Czqh+nCwko+EWkHGzIPMAHS7bxXto2tuw+TEx0BOe1qc9lnZI4v219amglUK4U/CJSbpxzfLN5D+8v2c5nK3aSdeCoVgI+UPCLiC/y8h2L0nfz6fIdfLZiJ5k5gZXA4HPqc1nnJC7QSiBoFPwi4ru8fEdq+m4+KbQSqBrlfRPQSqDMKfhFJKQUrAQKvgns8lYCg9skcFmnJC5ol6gdw2dJwS8iISsv37F40x4+Wbb9eyuBQeckcHGHBlzQtr6GjDgDCn4RqRDy8x2pm/Z43wR2kLH/KBEGPZNjuah9Ihe3b0DTOA0hXRoKfhGpcPLzHcu37WP6txlM/zaDNRk5ALRJrMVF7RO5qH0inRrV0bARxVDwi0iFtzn7ENO+3cn0bzNYlL6bfAeJtatyYbtELmyfSL+WcbqWQCEKfhGpVPYcPMZXa3Yx/dsMZq7N5NCxPGpUiWRQmwQuap/I+W0SqVM92u8yfaXgF5FK68jxPOZtyGbatxl8sSqDzJyjREYYvZJjOb9tfQa3SaBV/ZqYhVeXkIJfRMJCfr5j6da9TPdWAmszDgDQqG41BrdJ4Lw29enXKo7qVSr/oaIKfhEJS9v2Hmbmmky+WrOLueuzOHQsjyqREfRqHsvgNgkMblOflgk1KuW3AQW/iIS9o7l5pKbvYcaaXcxYk8m6XYFvA01iqzH4nECXUN+WlefbgIJfROQkW/ccYsaaTGas2cXc9dkcPp5HlagIejePZXCbwIqgRXzF/Tag4BcRKcHR3DwWbdzDV2t2MWPNLjZkHgQC+wYGtIqnf+t4+reMI65mVZ8rLT0Fv4jIadiy+xAz1mYyd10WX2/IYv+RXADaJ9Xm3Nbx9G8VT8/kWKpVCd3zBhT8IiJnKM87g3jOukzmrM9i8aY9HM9zVImKIKVZPfq3iufc1vF0aFiHyBA6i1jBLyJSRg4dy2Xhxt3MXZ/F7HVZrN4ZGEqibvVo+rWMo3+reAa0iqdZXA1f6ywu+CvHrmsRkXJUvUqUt/O3PgCZOUf5ekMWc9ZlMWd9Fp8u3wkEjhbq2yKOPt6tYd1qfpZ9grb4RUTKkHOO77IOMnd9YEWwYONu9h0+DkDT2Or0aRFbbisCdfWIiPggP9+xemcO87/LZv532cWuCHq3iKNRGa8IFPwiIiEgP9+xJuP7K4K9h4KzIlDwi4iEoJJWBE1iq/G3azrTr2X8Gb22du6KiISgiAijXVJt2iXV5rb+zX+wImhQO6bM31PBLyISQk5eEQTlPYLyqiIiErIU/CIiYUbBLyISZhT8IiJhRsEvIhJmFPwiImFGwS8iEmYU/CIiYaZCDNlgZpnAJr/rKEY8kOV3ESVQfWdH9Z0d1Xf2zqbGZs65hJNnVojgD2VmllrUWBihQvWdHdV3dlTf2QtGjerqEREJMwp+EZEwo+A/ey/5XcApqL6zo/rOjuo7e2Veo/r4RUTCjLb4RUTCjIJfRCTMKPhPg5k1MbOvzGyVma00s7u8+ePMbJuZpXm3y3ysMd3Mlnt1pHrzYs1supmt8+7r+VRbm0JtlGZm+83sbj/bz8wmmtkuM1tRaF6x7WVmvzOz9Wa2xsyG+FTfY2a22syWmdl7ZlbXm59sZocLteN4n+or9vMMkfabXKi2dDNL8+b70X7FZUpw/wadc7qV8gYkAd296VrAWqA9MA4Y63d9Xl3pQPxJ8x4F7vOm7wP+FgJ1RgI7gWZ+th8wEOgOrDhVe3mf9VKgKtAc2ABE+lDfxUCUN/23QvUlF17Ox/Yr8vMMlfY76edPAA/62H7FZUpQ/wa1xX8anHM7nHPfeNM5wCqgkb9VlcpVwCRvehIw1L9STrgA2OCc8/WMbOfcLGD3SbOLa6+rgHecc0edcxuB9UCv8q7POTfNOZfrPZwPNA5mDSUppv2KExLtV8DMDPgx8HYwayhJCZkS1L9BBf8ZMrNkoBuwwJs1xvvqPdGvrhSPA6aZ2WIzG+XNS3TO7YDAHxpQ37fq/ucGvv8PFyrtB8W3VyNgS6HltuL/iv8nwGeFHjc3syVmNtPMzvWrKIr+PEOt/c4FMpxz6wrN8639TsqUoP4NKvjPgJnVBP4N3O2c2w+8ALQEugI7CHx99Et/51x34FLgl2Y20MdaimRmVYArgX95s0Kp/UpiRczz7XhoM3sAyAXe9GbtAJo657oB9wBvmVltH0or7vMMqfYDhvP9jQ/f2q+ITCl20SLmnXYbKvhPk5lFE/iA3nTOTQVwzmU45/Kcc/nABIL89bUkzrnt3v0u4D2vlgwzSwLw7nf5VZ/nUuAb51wGhFb7eYprr61Ak0LLNQa2l3NtAJjZSOBy4Cbndf56X/+zvenFBPp/zynv2kr4PEOp/aKAq4HJBfP8ar+iMoUg/w0q+E+D1yf4CrDKOfdkoflJhRYbBqw4+bnlwcxqmFmtgmkCOwFXAB8CI73FRgIf+FFfId/b0gqV9iukuPb6ELjBzKqaWXOgNbCwvIszs0uA3wJXOucOFZqfYGaR3nQLr77vfKivuM8zJNrPcyGw2jm3tWCGH+1XXKYQ7L/B8tyDXdFvwAACX6uWAWne7TLgDWC5N/9DIMmn+loQ2OO/FFgJPODNjwO+BNZ597E+tmF1IBuoU2ieb+1HYAW0AzhOYGvq9pLaC3iAwJbgGuBSn+pbT6Cft+BvcLy37DXe574U+Aa4wqf6iv08Q6H9vPmvAaNPWtaP9isuU4L6N6ghG0REwoy6ekREwoyCX0QkzCj4RUTCjIJfRCTMKPhFRMKMgl/KlDfCYZkch29mg82sXymXTTez+FMsc6uZNSyj2hLMbI6ZrTCzoYXmf1Dce5jZaDMbURbvX97Ksu3Efwp+CWWDgVIFfyndCpRVeA0nMHhWX+BeADO7gsAZyUWeSemcG++ce/1s37jgJKNyditl13biMwW/BEOkmU3wxhefZmbVAMyspZl97g0gN9vM2nrzrzCzBd7gWF+YWaI3YNVo4Nfe2OjfGzDLzOK8115iZi/ijWFy8jcOMxtrgfHhrwVSgDe91/uRmb1XaLmLzGwqpXccqEZgeNx8bwiAu4HHinuCV8dYb3qGmf3NzBaa2dqC38/MIs3scQtcU2GZmd3pzU83swfNbA5wnZldbGbzzOwbM/uXN9ZLwXJ/9n6Wambdzew/ZrbBzEYXquVeM1vkvcfDhdpu1cmfXRFtV+002klCUbDPTNMtvG4ExjTPBbp6j6cAN3vTXwKtvenewH+96Xr87/rPPwWe8KbHUcw4/cCz/G8c9R8ROPsxnpPGVAfGAuO86RlAijdtwGogwXv8FqdxpiZQB/gESCUwxPSvgJGneM6J38erpeD3vAz4wpv+OYFxWwrG24/17tOB//Om44FZQA3v8W8LtUU68HNv+ikCZ4TWAhKAXd78iwlcwNsIbPx9TGDc+pI+uxNtp1vFv0UVsS4QOVsbnXNp3vRiINnbIu0H/CswPAkQ2FqGwEBTk70xXqoAG0vxHgMJDLKFc+4TM9tzOgU655yZvQHcbGavEuiyKXX/u3NuH4EVDhYYdvi3wNVmNoHAiuwJ59y8U7xMwTeMxQRCFwJjyIx33nj7zrnCY8kXDCjWh8AFOeZ6bVkFKPxeH3r3y4GaLjDOe46ZHbHA1bou9m5LvOVqEhjzZTNFfHan+B2kAlLwSzAcLTSdR6BLJALY65zrWsTyzwFPOuc+NLPBBLaMS6Oo8UZy+X4XZkwJz38V+Ag4AvzL/e/iJgCYWW/gRe/hg865Dynag8AjBPr9FxP49vABcN4p6i9opzz+979oFD/M7sFCy0x3zg0/xevm8/3PIt97HwP+4px7sfCTvO61oj47qWTUxy/lwgXGGN9oZtdBYFRCM+vi/bgOsM2bHlnoaTkEuimKMgu4yXutSwlsZQNkAPW9fQBVCQxdXOTrucBO2O3A7wkM2nVyzQucc129W5Ghb2atgYbOuZkEBqDLJxDcJa1wSjINGO3tM8DMYotYZj7Q38xaectUN7PTGT74P8BPCu0XaGRmp7o4T0mfhVQwCn4pTzcBt5tZweihV3nzxxHoApoNZBVa/iNgWFE7d4GHgYFm9g2BbovNAM6548D/I3AVo48J9OMXeA0Yf9IOyjeBLc65b8/wd3qEwIoDAiNB3kogmB8/w9d7mcDvssxrpxtPXsA5l+m9z9tmtsx7v7alfQPn3DQC30rmmdly4F1OHeqv8cO2kwpKo3NKWDOz54ElzrlX/K5FpLwo+CVsmdliAv3mFznnjp5qeZHKQsEvIhJm1McvIhJmFPwiImFGwS8iEmYU/CIiYUbBLyISZv4/VmrU8yxF1SoAAAAASUVORK5CYII=\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++inH7TZp0oTu3bvn2n/BwcF5xu5u2LBhlC5dmtOnT/PLL78wbNiwzHnJycmXtC1jCtqmfccJXbiV6COnub1TQyYNbkONSuW8su9inRRy+0TvKS1atGDTpk0sW7aMCRMmcOONNzJ58uTM+Xv37mXGjBls2LCBGjVqMGrUKJKSkricmwgnTZpE7969Wbx4MTExMfTq1QuAihUr0r9/f5YuXcr8+fMzT3CrKgsXLqRly5YXbGfdunVUqlQpX/tUVSZMmMBDDz10QXtMTAzly5fPfFyqVKnMx6VKlbpg7D7rJx0RyXW77rHl1H/Zcd9P1mUytpmenk716tUvGG4zxlfOJKcyffkOPlgTg3+1Csy9rwu9Wtb1agx2TqGAxcXFUbFiRe6++27GjRvH5s2bL5h/8uRJKlWqRLVq1YiPj+frr78GXENBe/bsyfxEnd25iKwSExNp2NBVXXzu3LkXzHvwwQcZO3YsXbp0yTwCuOmmm3jzzTczE9Cvv/6a5z6qVKnCqVOnMh/fdNNNzJkzh9OnTwNw8OBBjhw5kud23C1dupSkpCQSEhJYtWoVXbp0yfd2c+q/7GKtV68eUVFRpKens3jx4mxjqVq1KoGBgXz++eeAK+lt2bLlkv4eYwrCjzuPcuOrq/lgTQz3dm/C8sev93pCgGJ+pOALW7du5YknnqBUqVKULVuWt99++4L5HTp0oFOnTrRt25ZmzZrRs2dPACpUqMBbb73FgAEDqF27Nl27ds1zX08++SQjR45k5syZ9OnT54J5nTt3pmrVqtx3332ZbZMmTeKxxx4jODgYVaVp06Z8+eWXue6jVq1a9OzZk3bt2jFw4ECmT59OVFQU11xzDeA6mfvf//6X0qVL56t/ALp27cqgQYPYv38/kyZNwt/fH39//3xtN6f+Axg9ejQDBw6kQYMG/PDDD0ybNo3BgwfTuHFj2rVrl5lwsvr444955JFHeP7550lJSWH48OF06NAh33+PMVfi9zPnee6rSBZtPkjzOpVY8PA1dG6S91CupxS72kdRUVG0bt3aRxFdmdOnT1O5cmVUlTFjxhAUFMTjjz9+WduKi4ujV69ebN++nVKlCs8B4ZQpU6hcuTLjxo3zdSiXrCi/tkzho6os23qYZ8IiOHE2hUd6NWdM76vwK5v/D1iXq0TVPirKZs+eTceOHWnbti2JiYkXja/n14cffki3bt2YOnVqoUoIxhiX+JNJjP5oE2M+2UyDahUI++u1/L8bW3olIeTFjhSMySd7bZkrparM23CAqcuiOJ+azv+7sQX39wykTGnvfnjL7UihWJ5TUFUrYGYKVFH+8GQKh5hjZ5iwaCtr9iTQvVlNpt0eTNPa+bvqz5uKXVLw8/MjISHBymebApPxfQp+fn6+DsUUQalp6bz/cwyvfLuDsqVK8eLt7flzSGOP3ZF8pYpdUmjUqBGxsbEcPXrU16GYYiTjm9eMuRRRh04SujCc8NhE+rWux/O3tqN+tcL94aLYJYWyZcvat2MZY3wqOTWNf30fzdteLlFREIpdUjDGGF+6oETF1Q2ZNMh7JSoKgkdPeYvI4yKyTUQiRORTEfETkZoi8q2I7HJ+13BbfoKIRIvIDhG5yZOxGWNMQTqTnMqUsG3c+c4azp1PY+59XZj5p45FKiGAB48URKQhMBZoo6rnRGQ+MBxoA3ynqtNEZDwwHggVkTbO/LaAP7BSRFqoapqnYjTGmILw486jPLVoK3GJ57i3exOeGNCKyuWL5kCMp6MuA1QQkRSgIhAHTAB6OfM/AFYBocBQ4DNVTQb2ikg00BVY4+EYjTHmspw4e57nvoxi4eZYmtepxOcPXUNIU9+VqCgIHksKqnpQRGYA+4FzwApVXSEi9VT1kLPMIRHJqPjUEFjrtolYp+0CIjIaGA0QEBDgqfCNMSZHWUtU/LX3Vfy1j3dKVHiaJ4ePauD69B8InAA+F5G7c1slm7aL7hhS1VnALHDd0XzlkRpjTP7Fn0xi0pIIVkTG075hNT68vxtt/Kv6OqwC48nho37AXlU9CiAii4AeQLyINHCOEhoAGfWRY4HGbus3wjXcZIwxPpe1RMWEga144Frvl6jwNE8mhf1AdxGpiGv4qC+wETgDjASmOb+XOsuHAZ+IyExcJ5qDgPUejM8YY/JlX4KrRMUvuxPoFliTl+4onCUqCoInzymsE5EFwGYgFfgV17BPZWC+iDyAK3EMc5bf5lyhFOksP8auPDLG+FJaujLnp72ZJSpeuK09w7sU3hIVBaHYVUk1xpiCsP3wSUIXhLMlNpF+revy/K3tC32JivwqcVVSjTHmciWnpvHv76N5yylR8eaITgwOLholKgqCJQVjjHFs2vc7oQvDXSUqOjVk0uCiVaKiIFhSMMaUeGeSU5mxYgdzf4mhQVU/3r+vC71b1s17xWLIkoIxpkRbvfMoExZt5eCJc4y8pmiXqCgIJfcvN8aUaCfOnuf5r6JYsCmWZnUq8fnD19CliJeoKAiWFIwxJc7XWw8xaek2fj97njG9m/O3PkHFokRFQbCkYIwpMY6cTGLS0giWb4unXcOqfHB/F9r6V/N1WIWKJQVjTLGnqny+MZbnv4okOTWd8QNb8WAxLFFRECwpGGOKtf0JZ5mwOJyfoxPo6pSoCCymJSoKgiUFY0yxlJauvP/zXl5ZsZPSpYSpt7VjRJeAYl2ioiBYUjDGFDs7Dp8idGE4vx04QZ9WdZl6WzsaVKvg67CKBEsKxphi43xqOv/+IZq3VkVTxa8srw/vyJAO/iWmREVBsKRgjCkWft3vKlGxM/40t3b0Z/ItbalZwkpUFARLCsaYIu3s+VReWbGTOT/vpX5VP+aMCqFPq3q+DqvIsqRgjCmyfo4+xvhF4Rw4fo67uwcQOqAVVfzK+jqsIs2SgjGmyEk8m8LUZZHM3xhLYO1KzBvdnW7Navk6rGLBkoIxpkj5JuIwk5ZGcPzMeR7p1Zy/97USFQXJkoIxpkg4ciqJKWHbWLb1MG0aVOX9UV1o19BKVBQ0SwrGmEJNVVm4+SDPfRnJuZQ0nripJaOvb0ZZK1HhER5LCiLSEpjn1tQMmAysAt4B/IBU4FFVXe+sMwF4AEgDxqrqck/FZ4wp/A4cP8tTi7fyv13H6NK0BtPuCKZ5ncq+DqtY81hSUNUdQEcAESkNHAQWA7OBZ1X1axG5GXgZ6CUibYDhQFvAH1gpIi1UNc1TMRpjCqe0dOXDNTFMX74DAZ4b2pa7ujWxEhVe4K3ho77AblXdJyIKVHXaqwFxzvRQ4DNVTQb2ikg00BVY46UYjTGFwK54V4mKzftP0KtlHabe1p6G1a1Ehbd4KykMBz51ph8DlovIDKAU0MNpbwisdVsn1mm7gIiMBkYDBAQEeChcY4y3nU9N590fd/Pm99FUKl+aV//cgVs7NrQSFV7m8aQgIuWAIcAEp+kR4HFVXSgifwL+A/QDsnvm9aIG1VnALICQkJCL5htjip7w2BM8uSCc7YdPcUsHf565pQ21K5f3dVglkjeOFAYCm1U13nk8Evi7M/058J4zHQs0dluvEX8MLRljiqFz59N4deVO3vvfHupUKc/se0Po38ZKVPiSN5LCCP4YOgLXG/0NuK5C6gPsctrDgE9EZCauE81BwHovxGeM8YE1uxMYvyicfQlnGdE1gAk3t6KqlajwOY8mBRGpCPQHHnJr/gvwuoiUAZJwzg+o6jYRmQ9E4rpUdYxdeWRM8XMyKYUXl23n0/X7aVKrIp/8pRs9mtf2dVjG4dGkoKpngVpZ2n4COuew/FRgqidjMsb4zsrIeCYu2crRU8n85bpA/tG/JRXKWYmKwsTuaDbGeNyx08k8+0UkX2yJo1X9Ksy+N4TgRtV9HZbJhiUFY4zHqCpLf4vj2S+2cTo5lX/0b8HDNzSnXBkrUVFYWVIwxnhE3IlzTFy8lR92HKVTQHVeviOYoHpVfB2WyYMlBWNMgUpPVz5et49pX28nXeGZW9pw7zVNKW0lKooESwrGmAKz++hpJizcyvqY41wXVJsXbmtP45oVfR2WuQSWFIwxVywlLZ3Z/9vDayt34VemFNPvDObOzo2sREURZEnBGHNFIg4mErownG1xJxnYrj7PDm1L3Sp+vg7LXCZLCsaYy5KUksYb3+3i3dV7qFGxHG/fdTUD2zfwdVjmCllSMMZcsg0xxwldEM6eY2cY1rkRTw9qQ7WKVqKiOLCkYIzJt9PJqbz8zXY+XLOPRjUq8NEDXbkuqI6vwzIFyJKCMSZffthxhImLtnLoZBL39WzKuBtbUqm8vYUUN/aMGmNydfzMeZ77MpLFvx4kqG5lFjzcg85Navg6LOMhlhSMMdlSVb7aeohnlm4j8VwKY/sGMaZ3c8qXsQJ2xZklBWPMReJPJvH0kgi+jYwnuFE1/vtgN1o3qJr3iqbIs6RgjMmkqszbcICpy6I4n5rOxJtbc1/PppQpbQXsSgpLCsYYAPYlnGH8wq2s2ZNA92Y1mXZ7ME1rV/J1WMbLLCkYU8KlpStzftrLK9/uoGypUrx4e3v+HNKYUlbArkSypGBMCbb98ElCF4SzJTaRfq3r8vyt7alfzUpUlGSWFIwpgZJT0/j3D7t564doqlUoy5sjOjE4uIEVsDOWFIwpaX7d/zuhC8PZGX+a2zo1ZNLgNtSsVM7XYZlCwmOXFIhISxH5ze3npIg85sz7m4jsEJFtIvKy2zoTRCTamXeTp2IzpiQ6ez6V576M5Pa3f+FUUirvj+rCq3/uaAnBXMBjRwqqugPoCCAipYGDwGIR6Q0MBYJVNVlE6jrLtAGGA20Bf2CliLRQ1TRPxWhMSfFz9DHGLwrnwPFz3NO9CU8OaEkVPytgZy7mreGjvsBuVd0nItOBaaqaDKCqR5xlhgKfOe17RSQa6Aqs8VKMxhQ7iedSeOGrKOZtPEBg7UrMG92dbs1q+TosU4h5KykMBz51plsA14nIVCAJGKeqG4CGwFq3dWKdtguIyGhgNEBAQIAnYzamSFu+7TCTlkSQcOY8D9/QnMf6BeFX1kpUmNzleE5BREbm0F5WRD7Nbl4Oy5cDhgCfO01lgBpAd+AJYL64LnnI7rIHvahBdZaqhqhqSJ06VrLXmKyOnkpmzMebeeijTdSqXJ4lj/Zk/MBWlhBMvuR2pPB3ESmvqrMyGkSkErAE2H8J+xgIbFbVeOdxLLBIVRVYLyLpQG2nvbHbeo2AuEvYjzElmqqyaPNB/vllJOfOp/HETS0ZfX0zylqJCnMJcksK/YBvRMRPVd8QkTrAMuA7VR1/CfsYwR9DR+BKKn2AVSLSAigHHAPCgE9EZCauE81BwPpL2I8xJVbs72eZuDiCH3cepXOTGrx0RzBX1a3s67BMEZRjUlDV4yLSD/haRPxxnQh+W1XfyO/GRaQi0B94yK15DjBHRCKA88BI56hhm4jMByKBVGCMXXlkTO7S05X/rtvHS19vR4Fnh7Tlnu5NrESFuWziej/OZobI7c5kFWAm8B3wWcZ8VV3k8ejyEBISohs3bvR1GMb4xO6jpxm/MJwNMb9zfYs6vHBbOxrVqOjrsEwRICKbVDUku3m5DR/d4jYdlqVNAZ8nBWNKopS0dGat3sPr3+2iQtnSzBjWgTuubmglKkyByG346D5vBmKMyVvEwUSeXBBO5KGTDGxXn2eHtqVuFStgZwqO1T4ypghISknj9e92MWv1HmpWKsc7d1/NgHYNfB2WKYYsKRhTyG2IOU7ognD2HDvDn0IaMfHmNlSraCUqjGdYUjCmkDqdnMrL32znwzX7aFSjAv99oBvXBtX2dVimmMtXUhCRHkBT9+VV9UMPxWRMiffDjiNMXLSVQyeTuK9nU8bd2JJK5e0znPG8PF9lIvIR0Bz4Dci4b0ABSwrGFLDfz5znuS8jWfTrQa6qW5kFD/egc5Mavg7LlCD5+egRArTRnG5oMMZcMVVl2dbDPBMWwYmzKYztcxVj+lxF+TJWr8h4V36SQgRQHzjk4ViMKZHiTyYxaUkEKyLjad+wGh890I3WDar6OixTQuUnKdQGIkVkPZCc0aiqQzwWlTElgKoyf+MBnv8qivOp6UwY2IoHrg2kjBWwMz6Un6QwxdNBGFPS7E84y4TF4fwcnUC3wJpMuyOYwNqVfB2WMXknBVX90RuBGFMSpKUrc3+JYcbyHZQuJUy9rR0jugRYATtTaOSYFETkJ1W9VkROceGX3QigqmqDnsZcgp3xp3hyQTi/HThBn1Z1ef7WdvhXr+DrsIy5QG61j651flfxXjjGFD/nU9N558fdvPn9LiqXL8PrwzsypIO/FbAzhZLdDWOMB205cILQheFsP3yKIR38eeaWNtSqXN7XYRmTI0sKxnjAufNpvLpyJ+/9bw91q/jx3r0h9GtTz9dhGZMnSwrGFLA1uxOYsCicmISzjOgawISbW1HVzwrYmaIhv7WP6gNdcZ1w3qCqhz0alTFF0MmkFKZ9vZ1P1u2nSa2KfPKXbvRobgXsTNGSn9pHDwKTge9xXXn0poj8U1XneDo4Y4qK76Limbg4giOnkhh9fTMe79eCCuWsRIUpevJzpPAE0ElVEwBEpBbwC5BrUhCRlsA8t6ZmwGRVfc2ZPw6YDtRR1WNO2wTgAVyF98aq6vJL+muM8bKE08k8+0UkYVviaFmvCu/c05mOjav7OixjLlt+kkIscMrt8SngQF4rqeoOoCOAiJQGDgKLnceNgf7A/ozlRaQNMBxoC/gDK0WkhaqmYUwho6qEbYnj2S8iOZWUwuP9WvBIr+aUK2MlKkzRlp+kcBBYJyJLcZ1TGAqsF5F/AKjqzHxsoy+wW1X3OY9fBZ4ElrotMxT4TFWTgb0iEo3rPMaafP0lxnjJocRzTFoSwcqoI3RoXJ2X7wimZX27nccUD/lJCrudnwwZb+SX8l8wHPgUQESGAAdVdUuWm3caAmvdHsc6bRcQkdHAaICAgIBLCMGYK5Oerny24QAvLosiJT2dpwe15r6egZS2EhWmGMlP7aNnr2QHIlIOGAJMEJGKwETgxuwWzW732cQzC5gFEBISYt/xYLwi5tgZxi8KZ+2e4/RoXotptwcTUKuir8MypsDl5+qjEFxv5E248Os4g/O5j4HAZlWNF5H2QCCQcZTQCNgsIl1xHRk0dluvERCXz30Y4xGpaem8/3MMr3y7g7KlSjHt9vb8uUtjK1Fhiq38DB99jOsKpK1A+mXsYwTO0JGqbgXqZswQkRggRFWPiUgY8ImIzMR1ojkIWH8Z+zOmQGw/fJLQBeFsiU2kX+t6PH9rO+pX8/N1WMZ4VH6SwlFVDbucjTvDRf2Bh/JaVlW3ich8IBJIBcbYlUfGF5JT0/j3D7t564doqlUoy5sjOjE4uIEdHZgSIT9J4RkReQ/4jgu/eW1RXiuq6lmgVi7zm2Z5PBWYmo+YjPGIX/f/TujCcHbGn+a2Tg2ZNLgNNSuV83VYxnhNfpLCfUAroCx/DB8pkGdSMKaoOHs+lVdW7GTOz3upX9WPOaNC6NPKCtiZkic/SaGDqrb3eCTG+Mgv0ccYv2gr+4+f5e7uAYQOaEUVK2BnSqj8JIW1ItJGVSM9Ho0xXpR4LoUXl0Xx2YYDNK1Vkc9Gd6d7sxxHO40pEfKTFK4FRorIXlznFDK+jjO/l6QaU+h8GxnP00u2cvRUMg/d4Cpg51fWCtgZk5+kMMDjURjjJcdOJzMlbBtfhh+iVf0qzL43hOBG1X0dljGFRn7uaN4nItcCQar6vojUASp7PjRjCo6qsvS3OJ79YhtnktP4f/1b8NANVsDOmKzyc0fzM0AI0BJ4H9dVSP8Feno2NGMKRtyJczy9JILvtx+hU4CrgF1QPStgZ0x28jN8dBvQCdgMoKpxImL/UabQS09XPt2wnxeXbSctXZk8uA0jezS1AnbG5CI/SeG8qqqIKICIVPJwTMZcsb3HzjB+YTjr9h6n51W1ePE2K2BnTH7kJynMF5F3geoi8hfgfuA9z4ZlzOVJTUtnzs97eWXFTsqVKcXLdwQzLKSRlagwJp/yc6J5hoj0B07iOq8wWVW/9XhkxlyiqEMnCV0YTnhsIv3buArY1atqBeyMuRT5OdH8kqqGAt9m02aMz2UtYPev/+vEoPZWwM6Yy5Gf4aP+QNYEMDCbNmO8LmsBu8mD21DDCtgZc9lyTAoi8gjwKNBMRMLdZlUBfvZ0YMbkJmsBu/dHdaF3q7p5r2iMyVVuRwqfAF8DLwLj3dpPqepxj0ZlTC6sgJ0xnpNjUlDVRCAR1zenGeNzVsDOGM/LzzkFY3zOCtgZ4x2WFEyhlnA6mSlfRPLFljgrYGeMF1hSMIWSqhK2JY4pYVbAzhhv8lhSEJGWwDy3pmbAZKAhcAtwHtgN3KeqJ5x1JgAPAGnAWFVd7qn4TOHlXsCuY+PqTL/TCtgZ4y0eSwqqugPoCCAipYGDwGJcd0VPUNVUEXkJmACEikgbYDjQFvAHVopIC1VN81SMpnDJWsBu0uA2jLICdsZ4lbeGj/oCu1V1H7DPrX0tcKczPRT4TFWTgb0iEg10BdZ4KUbjQzHHzhBqBeyM8TlvJYXhwKfZtN/PH0NMDXEliQyxTtsFRGQ0MBogICCgYKM0Xpe1gN1Ld7TnTyGNrUSFMT7i8aQgIuWAIbiGidzbJwKpwMcZTdmsrhc1qM4CZgGEhIRcNN8UHdsPnyR0QThbrICdMYWGN44UBgKbVTU+o0FERgKDgb6qmvHGHgs0dluvERDnhfiMl2UtYPfmiE4MDrYCdsYUBt5ICiNwGzoSkQG4iundoKpn3ZYLAz4RkZm4TjQHAeu9EJ/xIvcCdrd29GfyLW2paQXsjCk0PJoURKQiriqrD7k1/wsoD3zrfDJcq6oPq+o2EZkPROIaVhpjVx4VH+fOp/HKih3M+Xkv9ar6MWdUCH1a1fN1WMaYLDyaFJwjgVpZ2q7KZfmpwFRPxmS875fdxxi/0FXA7q5uAYwfaAXsjCms7I5m4zEnk1J4cdl2Pl2/3wrYGVNEWFIwHvFdVDwTF0dw5FQSo693FbCrUM4K2BlT2FlSMAUq4XQy//wykqW/uQrYvXtPZzo0ru7rsIwx+WRJwRQIVeWL8ENMCdvGqaQUHu/Xgkd6WQE7Y4oaSwrmih1OTOLpJRGsjIqnQ+PqvHxHMC3rWwE7Y4oiSwrmsqkq8zYcYOqyKFLS0nl6UGvu6xloBeyMKcIsKZjLsj/hLOMXhfPL7gSuaVaLaXe0p0mtSr4OyxhzhSwpmEuSlq7M/SWGGct3UKaU8OLt7RnexQrYGVNcWFIw+bYr/hRPLgzn1/0n6NuqLs/f1o4G1Sr4OixjTAGypGDylJKWzturdvOv76Op7FeG14d3ZEgHfzs6MKYYsqRgcrU1NpEnFmxh++FT3NLBnym3tKFW5fK+DssY4yGWFEy2klLSeHXlTmav3kOdKuWZfW8I/dtYATtjijtLCuYi6/ceJ3RhOHuPnWF4l8ZMuLk11SpYATtjSgJLCibT6eRUXvp6Ox+t3UfjmhX4+MFu9Lyqtq/DMsZ4kSUFA8CqHUd4atFWDp1M4v6egYy7qQUVy9nLw5iSxv7rS7gTZ8/zzy8jWbT5IFfVrczCR3pwdUANX4dljPERSwol2LKth5i8NIITZ1P4W5+r+GufqyhfxspbG1OSWVIogY6cSmLykm18s+0w7RpW5cP7u9HGv6qvwzLGFAKWFEoQVWXBplie+zKSpNR0Qge04i/XBVKmtJW3Nsa4eCwpiEhLYJ5bUzNgMvCh094UiAH+pKq/O+tMAB4A0oCxqrrcU/GVNLG/n+WpxRGs3nmULk1r8NIdwTSrU9nXYRljChmPJQVV3QF0BBCR0sBBYDEwHvhOVaeJyHjncaiItAGGA20Bf2CliLRQ1TRPxVgSpKcrH63dx0vfbAfgn0Pbcne3JpSy8tbGmGx4a/ioL7BbVfeJyFCgl9P+AbAKCAWGAp+pajKwV0Siga7AGi/FWOzsPnqa8QvD2RDzO9cF1ebF29vTqEZFX4dljCnEvJUUhgOfOtP1VPUQgKoeEpG6TntDYK3bOrFO2wVEZDQwGiAgIMBjARdlqWnpzP7fXl5duRO/MqWYfmcwd3ZuZAXsjDF58nhSEJFywBBgQl6LZtOmFzWozgJmAYSEhFw0v6SLjDvJkwu3EHHwJAPa1ueft7albhU/X4dljCkivHGkMBDYrKrxzuN4EWngHCU0AI447bFAY7f1GgFxXoivWEhOTeNf30fz9qrdVK9Ylrfuupqb2zfwdVjGmCLGG0lhBH8MHQGEASOBac7vpW7tn4jITFwnmoOA9V6Ir8jbvP93nlwQTvSR09x+dUMmDWpDjUrlfB2WMaYI8mhSEJGKQH/gIbfmacB8EXkA2A8MA1DVbSIyH4gEUoExduVR7s6eT2XG8p28/8teGlT14/37utC7Zd28VzTGmBx4NCmo6lmgVpa2BFxXI2W3/FRgqidjKi5+iT7G+EVb2X/8LHd3DyB0QCuq+Fl5a2PMlbE7mouYk0kpvPBVFJ9tOEDTWhWZN7o73ZrVyntFY4zJB0sKRcjKyHgmLtnK0VPJPHR9Mx7r14IK5ayAnTGm4FhSKAISTifz7BeRhG2Jo1X9Ksy6J4QOjav7OixjTDFkSaEQU1W+CD/ElLBtnEpK4bF+QTza6yrKlbECdsYYz7CkUEgdTkzi6SURrIyKp0Ojarx8Z3da1q/i67CMMcWcJYVCRlWZt+EAU5dFcT41nYk3t+b+awMpbQXsjDFeYEmhENmfcJYJi8P5OTqBboE1eemOYJrWruTrsIwxJYglhUIgLV2Z+0sMM5bvoHQpYept7RjRJcDKWxtjvM6Sgo9FHznFkwvC2bz/BL1b1mHqbe3xr17B12EZY0ooSwo+kpKWzrs/7uaN76KpWL40r/65A7d2bGjlrY0xPmVJwQciDiby5IJwIg+dZFD7BkwZ0pY6Vcr7OixjjLGk4E1JKWm88d0u3l29h5qVyvHO3Z0Z0K6+r8MyxphMlhS8ZNO+4zy5IJzdR89wZ+dGTBrUhmoVrYCdMaZwsaTgYWeSU5m+fAcfrInBv1oFPri/Kze0qOPrsIwxJluWFDzop13HGL8onNjfz3HvNU14ckArKpe3LjfGFF72DuUBiedSmPpVJPM3xhJYuxLzH7qGroE1fR2WMcbkyZJCAVux7TBPL4kg4cx5Hr6hOY/1C8KvrJW3NsYUDZYUCkjC6WSeCdvGl+GHaFW/Cv8Z2YX2jar5OixjjLkklhSukKoStiWOKWHbOJ2cyj/6t+DhG5pbeWtjTJHk0aQgItWB94B2gAL3A+eAdwA/IBV4VFXXO8tPAB4A0oCxqrrck/FdqcOJSUxcvJXvth+hQ+PqTL8zmBb1rLy1Mabo8vSRwuvAN6p6p4iUAyoC84FnVfVrEbkZeBnoJSJtgOFAW8AfWCkiLVQ1zcMxXjJV5bMNB3jhqyhS0tN5elBr7utp5a2NMUWfx5KCiFQFrgdGAajqeeC8iChQ1VmsGhDnTA8FPlPVZGCviEQDXYE1norxcuxPOMv4ReH8sjuB7s1qMu12K29tjCk+PHmk0Aw4CrwvIh2ATcDfgceA5SIyAygF9HCWbwisdVs/1mm7gIiMBkYDBAQEeCr2i1h5a2NMSeDJpFAGuBr4m6quE5HXgfG4jg4eV9WFIvIn4D9APyC7d1e9qEF1FjALICQk5KL5nhB95BRPLAjnVytvbYwp5jyZFGKBWFVd5zxegCspXIvriAHgc1wnojOWb+y2fiP+GFryiazlrV/7c0eGdvS38tbGmGLLY0lBVQ+LyAERaamqO4C+QCSuYaUbgFVAH2CXs0oY8ImIzMR1ojkIWO+p+PJyQXnr4AY8O6QttStbeWtjTPHm6auP/gZ87Fx5tAe4D1gKvC4iZYAknPMDqrpNRObjShypwBhfXHmUtbz1u/d05qa2Vt7aGFMyiKpXhuU9IiQkRDdu3Fhg23Mvbz2scyOetvLWxphiSEQ2qWpIdvPsjmYuLm/94f1dud7KWxtjSqASnxSsvLUxxvyhxL77JZ5L4YWvopi38YCVtzbGGEeJTArhsSf4y4cbOXoq2cpbG2OMmxKZFAJqVqRFvSrMvjeE4EbVfR2OMcYUGiUyKVSvWI6PHujm6zCMMabQsaL/xhhjMllSMMYYk8mSgjHGmEyWFIwxxmSypGCMMSaTJQVjjDGZLCkYY4zJZEnBGGNMpiJdOltEjgL7fB1HLmoDx3wdRC4svitj8V0Zi+/KXEl8TVQ121LQRTopFHYisjGnmuWFgcV3ZSy+K2PxXRlPxWfDR8YYYzJZUjDGGJPJkoJnzfJ1AHmw+K6MxXdlLL4r45H47JyCMcaYTHakYIwxJpMlBWOMMZksKRQAEWksIj+ISJSIbBORvzvtU0TkoIj85vzc7MMYY0RkqxPHRqetpoh8KyK7nN81fBRbS7c++k1ETorIY77sPxGZIyJHRCTCrS3H/hKRCSISLSI7ROQmH8U3XUS2i0i4iCwWkepOe1MROefWj+/4KL4cn89C0n/z3GKLEZHfnHZf9F9O7ymefw2qqv1c4Q/QALjama4C7ATaAFOAcb6Oz4krBqidpe1lYLwzPR54qRDEWRo4DDTxZf8B1wNXAxF59ZfzXG8BygOBwG6gtA/iuxEo40y/5BZfU/flfNh/2T6fhaX/ssx/BZjsw/7L6T3F469BO1IoAKp6SFU3O9OngCigoW+jypehwAfO9AfArb4LJVNfYLeq+vROdVVdDRzP0pxTfw0FPlPVZFXdC0QDXb0dn6quUNVU5+FaoJEnY8hNDv2Xk0LRfxlERIA/AZ96Mobc5PKe4vHXoCWFAiYiTYFOwDqn6a/O4fwcXw3POBRYISKbRGS001ZPVQ+B60UI1PVZdH8YzoX/jIWl/yDn/moIHHBbLhbffyi4H/ja7XGgiPwqIj+KyHW+Corsn8/C1n/XAfGqusutzWf9l+U9xeOvQUsKBUhEKgMLgcdU9STwNtAc6AgcwnVI6is9VfVqYCAwRkSu92Es2RKRcsAQ4HOnqTD1X24kmzafXestIhOBVOBjp+kQEKCqnYB/AJ+ISFUfhJbT81mo+g8YwYUfTHzWf9m8p+S4aDZtl9WHlhQKiIiUxfXkfayqiwBUNV5V01Q1HZiNhw+Jc6Oqcc7vI8BiJ5Z4EWkA4Pw+4qv4HAOBzaoaD4Wr/xw59Vcs0NhtuUZAnJdjA0BERgKDgbvUGWx2hhQSnOlNuMabW3g7tlyez8LUf2WA24F5GW2+6r/s3lPwwmvQkkIBcMYg/wNEqepMt/YGbovdBkRkXdcbRKSSiFTJmMZ1QjICCANGOouNBJb6Ij43F3xCKyz95yan/goDhotIeREJBIKA9d4OTkQGAKHAEFU969ZeR0RKO9PNnPj2+CC+nJ7PQtF/jn7AdlWNzWjwRf/l9J6CN16D3jyjXlx/gGtxHaqFA785PzcDHwFbnfYwoIGP4muG68qELcA2YKLTXgv4Dtjl/K7pwz6sCCQA1dzafNZ/uJLTISAF16ewB3LrL2Airk+QO4CBPoovGte4csZr8B1n2Tuc530LsBm4xUfx5fh8Fob+c9rnAg9nWdYX/ZfTe4rHX4NW5sIYY0wmGz4yxhiTyZKCMcaYTJYUjDHGZLKkYIwxJpMlBWOMMZksKRivcCpNFsh9BiLSS0R65HPZGBGpnccyo0TEv4BiqyMiP4lIhIjc6ta+NKd9iMjDInJvQezf2wqy70zhYEnBFEW9gHwlhXwaBRTUG9sIXIXKrgGeABCRW3DdqZ3tHaaq+o6qfnilO864wcrLRlFwfWcKAUsKxptKi8hspz78ChGpACAizUXkG6dY3/9EpJXTfouIrHMKka0UkXpOcbCHgced2vYXFCcTkVrOtn8VkXdxasJkPVIRkXHiqu9/JxACfOxsb5CILHZbrr+ILCL/UoAKuEoYpztlEx4Dpue0ghPHOGd6lYi8JCLrRWRnxt8nIqVFZIa4vhMjXET+5rTHiMhkEfkJGCYiN4rIGhHZLCKfO7VzMpZ7wZm3UUSuFpHlIrJbRB52i+UJEdng7ONZt76LyvrcZdN3FS6hn0xh5ek78+zHflQza9KnAh2dx/OBu53p74AgZ7ob8L0zXYM/vkf8QeAVZ3oKOXzPAvAGf9TBH4TrrtDaZKmJD4wDpjjTq4AQZ1qA7UAd5/EnXMIdrEA14CtgI64y4GOBkXmsk/n3OLFk/J03Ayud6Udw1cHJ+L6Ems7vGOBJZ7o2sBqo5DwOdeuLGOARZ/pVXHfKVgHqAEec9htxfRm84PrA+CWu7x3I7bnL7Dv7KR4/ZbLJE8Z4yl5V/c2Z3gQ0dT7J9gA+d5V7AVyfssFV1GueUzOnHLA3H/u4HldBM1T1KxH5/VICVFUVkY+Au0XkfVzDQPke71fVRFzJCHGVhg4FbheR2biS3CuquiaPzWQcmWzC9YYMrpo876jzfQmq6v5dABnF27rj+rKVn52+LAe47yvM+b0VqKyuOv2nRCRJXN/SdqPz86uzXGVcNXT2k81zl8ffYIooSwrGm5LdptNwDbOUAk6oasdsln8TmKmqYSLSC9cn6vzIrnZLKhcOl/rlsv77wBdAEvC5/vHFNQCISDfgXefhZFUNI3uTgam4zjNswnXUsRTonUf8Gf2Uxh//o0LOpZDPuC3zraqOyGO76Vz4XKQ7+xHgRVV9130lZ8guu+fOFEN2TsH4lLpqxO8VkWHgqg4pIh2c2dWAg870SLfVTuEa+sjOauAuZ1sDcX06B4gH6jrnHMrjKi+d7fbUdUI4DngaV4G0rDGvU9WOzk+2CUFEggB/Vf0RV7G/dFxv6rklo9ysAB52zlEgIjWzWWYt0FNErnKWqSgil1LieTlwv9t5iIYiktcXL+X2XJgiyJKCKQzuAh4QkYwqrkOd9im4hpX+BxxzW/4L4LbsTjQDzwLXi8hmXEMh+wFUNQX4J65vr/oS13mDDHOBd7KcLP0YOKCqkZf5N03FlVTAVZFzFK437RmXub33cP0t4U4//V/WBVT1qLOfT0Uk3Nlfq/zuQFVX4DqaWSMiW4EF5P2GP5eL+84UYVYl1ZhsiMi/gF9V9T++jsUYb7KkYEwWIrIJ1zh9f1VNzmt5Y4oTSwrGGGMy2TkFY4wxmSwpGGOMyWRJwRhjTCZLCsYYYzJZUjDGGJPp/wOc8xsMOIWo5gAAAABJRU5ErkJggg==\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/ripe/clc_nb_src.ipynb b/idaes_examples/archive/ripe/clc_nb_src.ipynb index f2f4f810..c98c72c4 100644 --- a/idaes_examples/archive/ripe/clc_nb_src.ipynb +++ b/idaes_examples/archive/ripe/clc_nb_src.ipynb @@ -30,12 +30,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Example from:\n", + " Example from:\n", "\n", "Wilson, Zachary T., and Nikolaos V. Sahinidis. \"Automated learning of chemical reaction networks.\" Computers & Chemical Engineering 127 (2019): 88-98.\n", "https://doi.org/10.1016/j.compchemeng.2019.05.020\n", "\n", - "Case 2: Dynamic Chemical Looping Combusion Reactor\n", + "Case 2: Dynamic Chemical Looping Combustion Reactor\n", "\n", "This is an example of a CLC reactor. The kinetic reaction rates encapsulate solid-gas reactions. The kinetic rate laws for this example are semi-physical or empirical to provide insights on the underlying physical mechanisms.\n", "\n", diff --git a/idaes_examples/archive/ripe/cracsim.py b/idaes_examples/archive/ripe/cracsim.py index def81369..3944a2d3 100644 --- a/idaes_examples/archive/ripe/cracsim.py +++ b/idaes_examples/archive/ripe/cracsim.py @@ -143,7 +143,7 @@ def objf(cracmodel): results = opt.solve(cracmodel) cracmodel.solutions.store_to(results) klist = ['a','b','c','d','f','g','h','i','j'] - # Add noise of the specifiec SNR, noise has variance eps ~ N(0,noise*conc) + # Add noise of the specific SNR, noise has variance eps ~ N(0,noise*conc) vn = [results.Solution.Variable[key]['Value']+np.random.normal(0,noise*results.Solution.Variable[key]['Value']) for key in klist] return vn diff --git a/idaes_examples/archive/ripe/ripe_isothermal_cstr_src.ipynb b/idaes_examples/archive/ripe/ripe_isothermal_cstr_src.ipynb index 66222900..a454e06b 100644 --- a/idaes_examples/archive/ripe/ripe_isothermal_cstr_src.ipynb +++ b/idaes_examples/archive/ripe/ripe_isothermal_cstr_src.ipynb @@ -48,7 +48,7 @@ "\n", "$A + D \\rightarrow E \\quad \\{{k_3^{true}}\\}$\n", "\n", - "Initial concentrations are specificed for species $F = {A,B}$ over the range $0 \\leq C_s^0 \\leq 10$, $s\\in F$." + "Initial concentrations are specified for species $F = {A,B}$ over the range $0 \\leq C_s^0 \\leq 10$, $s\\in F$." ] }, { diff --git a/idaes_examples/notebooks/active/power_gen/ngcc/ngcc_doc.ipynb b/idaes_examples/notebooks/active/power_gen/ngcc/ngcc_doc.ipynb index 2b006668..2dc46ad7 100644 --- a/idaes_examples/notebooks/active/power_gen/ngcc/ngcc_doc.ipynb +++ b/idaes_examples/notebooks/active/power_gen/ngcc/ngcc_doc.ipynb @@ -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_test.ipynb b/idaes_examples/notebooks/active/power_gen/ngcc/ngcc_test.ipynb index 23411983..900511dc 100644 --- a/idaes_examples/notebooks/active/power_gen/ngcc/ngcc_test.ipynb +++ b/idaes_examples/notebooks/active/power_gen/ngcc/ngcc_test.ipynb @@ -189,7 +189,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", @@ -341,4 +341,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/active/power_gen/ngcc/ngcc_usr.ipynb b/idaes_examples/notebooks/active/power_gen/ngcc/ngcc_usr.ipynb index 23411983..900511dc 100644 --- a/idaes_examples/notebooks/active/power_gen/ngcc/ngcc_usr.ipynb +++ b/idaes_examples/notebooks/active/power_gen/ngcc/ngcc_usr.ipynb @@ -189,7 +189,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", @@ -341,4 +341,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/dae/petsc_chem.ipynb b/idaes_examples/notebooks/docs/dae/petsc_chem.ipynb index 8c18a64c..44969c96 100644 --- a/idaes_examples/notebooks/docs/dae/petsc_chem.ipynb +++ b/idaes_examples/notebooks/docs/dae/petsc_chem.ipynb @@ -271,7 +271,7 @@ "source": [ "## Interpolate Trajectory\n", "\n", - "For a number of reasons, such as initializating Pyomo problems or showing results at even time intervals it can be useful to show values at specific time points. The PetscTrajectory class has a method to use linear interpolation to produce a new dictionary of trajectory data at specified time points. " + "For a number of reasons, such as initializing Pyomo problems or showing results at even time intervals it can be useful to show values at specific time points. The PetscTrajectory class has a method to use linear interpolation to produce a new dictionary of trajectory data at specified time points. " ] }, { diff --git a/idaes_examples/notebooks/docs/dae/petsc_chem_doc.ipynb b/idaes_examples/notebooks/docs/dae/petsc_chem_doc.ipynb index 784704fd..f36b14c1 100644 --- a/idaes_examples/notebooks/docs/dae/petsc_chem_doc.ipynb +++ b/idaes_examples/notebooks/docs/dae/petsc_chem_doc.ipynb @@ -1164,7 +1164,7 @@ "source": [ "## Interpolate Trajectory\n", "\n", - "For a number of reasons, such as initializating Pyomo problems or showing results at even time intervals it can be useful to show values at specific time points. The PetscTrajectory class has a method to use linear interpolation to produce a new dictionary of trajectory data at specified time points. " + "For a number of reasons, such as initializing Pyomo problems or showing results at even time intervals it can be useful to show values at specific time points. The PetscTrajectory class has a method to use linear interpolation to produce a new dictionary of trajectory data at specified time points. " ] }, { @@ -1270,4 +1270,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/dae/petsc_chem_test.ipynb b/idaes_examples/notebooks/docs/dae/petsc_chem_test.ipynb index 1248341a..c92befe9 100644 --- a/idaes_examples/notebooks/docs/dae/petsc_chem_test.ipynb +++ b/idaes_examples/notebooks/docs/dae/petsc_chem_test.ipynb @@ -160,7 +160,7 @@ " time=m.t,\n", " between=[m.t.first(), m.t.last()],\n", " ts_options={\n", - " \"--ts_type\": \"cn\", # Crank\u2013Nicolson\n", + " \"--ts_type\": \"cn\", # Crank–Nicolson\n", " \"--ts_adapt_type\": \"basic\",\n", " \"--ts_dt\": 0.01,\n", " \"--ts_save_trajectory\": 1,\n", @@ -271,7 +271,7 @@ "source": [ "## Interpolate Trajectory\n", "\n", - "For a number of reasons, such as initializating Pyomo problems or showing results at even time intervals it can be useful to show values at specific time points. The PetscTrajectory class has a method to use linear interpolation to produce a new dictionary of trajectory data at specified time points. " + "For a number of reasons, such as initializing Pyomo problems or showing results at even time intervals it can be useful to show values at specific time points. The PetscTrajectory class has a method to use linear interpolation to produce a new dictionary of trajectory data at specified time points. " ] }, { @@ -347,4 +347,4 @@ }, "nbformat": 4, "nbformat_minor": 3 -} \ No newline at end of file +} diff --git a/idaes_examples/notebooks/docs/dae/petsc_chem_usr.ipynb b/idaes_examples/notebooks/docs/dae/petsc_chem_usr.ipynb index 1248341a..c92befe9 100644 --- a/idaes_examples/notebooks/docs/dae/petsc_chem_usr.ipynb +++ b/idaes_examples/notebooks/docs/dae/petsc_chem_usr.ipynb @@ -160,7 +160,7 @@ " time=m.t,\n", " between=[m.t.first(), m.t.last()],\n", " ts_options={\n", - " \"--ts_type\": \"cn\", # Crank\u2013Nicolson\n", + " \"--ts_type\": \"cn\", # Crank–Nicolson\n", " \"--ts_adapt_type\": \"basic\",\n", " \"--ts_dt\": 0.01,\n", " \"--ts_save_trajectory\": 1,\n", @@ -271,7 +271,7 @@ "source": [ "## Interpolate Trajectory\n", "\n", - "For a number of reasons, such as initializating Pyomo problems or showing results at even time intervals it can be useful to show values at specific time points. The PetscTrajectory class has a method to use linear interpolation to produce a new dictionary of trajectory data at specified time points. " + "For a number of reasons, such as initializing Pyomo problems or showing results at even time intervals it can be useful to show values at specific time points. The PetscTrajectory class has a method to use linear interpolation to produce a new dictionary of trajectory data at specified time points. " ] }, { @@ -347,4 +347,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..481fecd4 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" ] }, { @@ -783,4 +783,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..4f6a0668 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 precence 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..177976d5 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 precence 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..b76acc64 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 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/properties/custom/custom_physical_property_packages.ipynb b/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages.ipynb index d6462ef7..68b8ba3a 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,7 +1055,7 @@ "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." ] 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..62facf65 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,7 +1063,7 @@ "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." ] @@ -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..f5e343a3 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,7 +1055,7 @@ "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." ] @@ -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..d17b5b81 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,7 +1055,7 @@ "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." ] @@ -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/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/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/surrogate_embedding.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding.ipynb index 8fd96971..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", 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 ee1a5d79..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", 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 b9ede92b..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", 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 ae3988fb..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", From afbee99ad77b5f2566a20971202c64c870f0bdf1 Mon Sep 17 00:00:00 2001 From: Javal Vyas Date: Fri, 19 Apr 2024 03:04:03 -0400 Subject: [PATCH 33/47] Fixing some more typos --- idaes_examples/archive/power_gen/soec/soec.py | 2 +- .../docs/surrogates/sco2/alamo/alamo_training.ipynb | 2 +- .../surrogates/sco2/alamo/alamo_training_doc.ipynb | 2 +- .../surrogates/sco2/alamo/alamo_training_test.ipynb | 2 +- .../surrogates/sco2/alamo/alamo_training_usr.ipynb | 2 +- .../sco2/alamo/flowsheet_optimization.ipynb | 2 +- .../sco2/alamo/flowsheet_optimization_doc.ipynb | 2 +- .../sco2/alamo/flowsheet_optimization_test.ipynb | 2 +- .../sco2/alamo/flowsheet_optimization_usr.ipynb | 2 +- .../docs/surrogates/sco2/alamo/properties.py | 2 +- .../surrogates/sco2/alamo/surrogate_embedding.ipynb | 12 ++++++------ .../sco2/alamo/surrogate_embedding_doc.ipynb | 12 ++++++------ .../sco2/alamo/surrogate_embedding_test.ipynb | 12 ++++++------ .../sco2/alamo/surrogate_embedding_usr.ipynb | 12 ++++++------ .../docs/surrogates/sco2/omlt/properties.py | 2 +- 15 files changed, 35 insertions(+), 35 deletions(-) diff --git a/idaes_examples/archive/power_gen/soec/soec.py b/idaes_examples/archive/power_gen/soec/soec.py index 087a54db..96c82a32 100644 --- a/idaes_examples/archive/power_gen/soec/soec.py +++ b/idaes_examples/archive/power_gen/soec/soec.py @@ -1564,7 +1564,7 @@ def _add_tags(self): 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/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 6b88bd69..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 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 8721ccc2..ceaf36ea 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 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. " ] }, { @@ -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", 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 944365fd..f93b2d9d 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 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. " ] }, { @@ -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", 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 d771e1ab..5b13b131 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 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. " ] }, { @@ -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", 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 417b2bb0..94ac839a 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 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. " ] }, { @@ -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", diff --git a/idaes_examples/notebooks/docs/surrogates/sco2/omlt/properties.py b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/properties.py index 5bcc8a9a..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 From 59bba8c1dd71435b99cab5cc4b256379b7cb366f Mon Sep 17 00:00:00 2001 From: Javal Vyas Date: Fri, 19 Apr 2024 03:15:22 -0400 Subject: [PATCH 34/47] Fixing some more typos --- .../docs/diagnostics/diagnostics_toolbox_exercise.ipynb | 2 +- .../notebooks/docs/flowsheets/methanol_synthesis_doc.ipynb | 2 +- .../notebooks/docs/flowsheets/methanol_synthesis_test.ipynb | 2 +- .../properties/custom/custom_physical_property_packages.ipynb | 2 +- .../custom/custom_physical_property_packages_doc.ipynb | 2 +- .../custom/custom_physical_property_packages_test.ipynb | 2 +- .../custom/custom_physical_property_packages_usr.ipynb | 2 +- .../notebooks/docs/surrogates/sco2/pysmo/properties.py | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/idaes_examples/notebooks/docs/diagnostics/diagnostics_toolbox_exercise.ipynb b/idaes_examples/notebooks/docs/diagnostics/diagnostics_toolbox_exercise.ipynb index 481fecd4..fbb3333a 100644 --- a/idaes_examples/notebooks/docs/diagnostics/diagnostics_toolbox_exercise.ipynb +++ b/idaes_examples/notebooks/docs/diagnostics/diagnostics_toolbox_exercise.ipynb @@ -571,7 +571,7 @@ }, "outputs": [], "source": [ - "# Check for new strucutral issues" + "# Check for new structural issues" ] }, { diff --git a/idaes_examples/notebooks/docs/flowsheets/methanol_synthesis_doc.ipynb b/idaes_examples/notebooks/docs/flowsheets/methanol_synthesis_doc.ipynb index 4f6a0668..6e83e8ed 100644 --- a/idaes_examples/notebooks/docs/flowsheets/methanol_synthesis_doc.ipynb +++ b/idaes_examples/notebooks/docs/flowsheets/methanol_synthesis_doc.ipynb @@ -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 precence 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_test.ipynb b/idaes_examples/notebooks/docs/flowsheets/methanol_synthesis_test.ipynb index 177976d5..a7ec0962 100644 --- a/idaes_examples/notebooks/docs/flowsheets/methanol_synthesis_test.ipynb +++ b/idaes_examples/notebooks/docs/flowsheets/methanol_synthesis_test.ipynb @@ -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 precence 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/properties/custom/custom_physical_property_packages.ipynb b/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages.ipynb index 68b8ba3a..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 @@ -1057,7 +1057,7 @@ "source": [ "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 62facf65..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 @@ -1065,7 +1065,7 @@ "source": [ "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_test.ipynb b/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages_test.ipynb index f5e343a3..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 @@ -1057,7 +1057,7 @@ "source": [ "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_usr.ipynb b/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages_usr.ipynb index d17b5b81..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 @@ -1057,7 +1057,7 @@ "source": [ "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/surrogates/sco2/pysmo/properties.py b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/properties.py index b9e8d3ba..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 From c49f469e01300c7c29a86da76703b6a74a480d01 Mon Sep 17 00:00:00 2001 From: Javal Vyas Date: Fri, 19 Apr 2024 03:19:48 -0400 Subject: [PATCH 35/47] Fixing some more typos --- .../notebooks/docs/flowsheets/solver_captured.py | 4 ++-- .../parameter_estimation_nrtl_using_unit_model_test.ipynb | 7 +++---- .../parameter_estimation_nrtl_using_unit_model_usr.ipynb | 7 +++---- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/idaes_examples/notebooks/docs/flowsheets/solver_captured.py b/idaes_examples/notebooks/docs/flowsheets/solver_captured.py index b76acc64..9c342a70 100644 --- a/idaes_examples/notebooks/docs/flowsheets/solver_captured.py +++ b/idaes_examples/notebooks/docs/flowsheets/solver_captured.py @@ -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/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 +} From 9b3e57a16bd968746d30a4cd3624656bebae897d Mon Sep 17 00:00:00 2001 From: Brandon Paul <86113916+bpaul4@users.noreply.github.com> Date: Fri, 19 Apr 2024 06:35:40 -0700 Subject: [PATCH 36/47] Update pyproject.toml with more exceptions --- pyproject.toml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 0a67380b..1e77da86 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -155,6 +155,7 @@ extend-exclude = [ "*.svg", "*.json", "*.css", + "*.yml", ] [tool.typos.default.extend-words] @@ -169,7 +170,11 @@ ba = "ba" # Ignore equil, assumes it's on purpose and not a typo of "equal" equil = "equil" # Atomic elements -#Nd = "Nd" +Nd = "Nd" +# RIPE specific variable names, remove exceptions if RIPE examples are removed +nd = "nd" +dum = "dum" +fre = "fre" # Numpy arange = "arange" [tool.typos.default] From c0cbd9079effd80e94048bf4e1cea0d992c487fd Mon Sep 17 00:00:00 2001 From: Brandon Paul <86113916+bpaul4@users.noreply.github.com> Date: Fri, 19 Apr 2024 06:37:08 -0700 Subject: [PATCH 37/47] correct "inturn" to "in turn" --- .../docs/surrogates/sco2/alamo/surrogate_embedding.ipynb | 2 +- .../docs/surrogates/sco2/alamo/surrogate_embedding_doc.ipynb | 2 +- .../docs/surrogates/sco2/alamo/surrogate_embedding_test.ipynb | 2 +- .../docs/surrogates/sco2/alamo/surrogate_embedding_usr.ipynb | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) 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 ceaf36ea..cc7e8272 100644 --- a/idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding.ipynb @@ -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 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. " + "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. " ] }, { 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 f93b2d9d..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 @@ -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 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. " + "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. " ] }, { 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 5b13b131..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 @@ -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 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. " + "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. " ] }, { 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 94ac839a..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 @@ -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 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. " + "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. " ] }, { From 0a5f9ab3b29d1fb315d911297f3726263a0d6210 Mon Sep 17 00:00:00 2001 From: Keith Beattie Date: Fri, 19 Apr 2024 17:08:23 -0700 Subject: [PATCH 38/47] 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). --- idaes_examples/archive/power_gen/rsofc/rsofc_soec_mode_PFD.svg | 2 +- .../archive/power_gen/rsofc/rsofc_soec_mode_template.svg | 2 +- idaes_examples/archive/power_gen/rsofc/rsofc_soec_results.svg | 2 +- idaes_examples/archive/power_gen/rsofc/rsofc_soec_src.ipynb | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) 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 ca053c17..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">compressorn + id="tspan124110">compression compressorn + id="tspan124110">compression Nitrogen ASU - Hydrogen purification andcompressorn + 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 13db1cc5..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 andcompressorn\n", + " Hydrogen purification andcompression\n", " Water_in\n", " Water_out1\n", " Water_out2\n", From 3f29630acbdd3ac4af4efca637982b2ce5112b12 Mon Sep 17 00:00:00 2001 From: Brandon Paul <86113916+bpaul4@users.noreply.github.com> Date: Thu, 25 Apr 2024 12:49:46 -0700 Subject: [PATCH 39/47] Remove RIPE example exceptions --- pyproject.toml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 1e77da86..1337ae85 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -171,10 +171,6 @@ ba = "ba" equil = "equil" # Atomic elements Nd = "Nd" -# RIPE specific variable names, remove exceptions if RIPE examples are removed -nd = "nd" -dum = "dum" -fre = "fre" # Numpy arange = "arange" [tool.typos.default] From 0f0963a300acb6393346d69a9f27b554d5c54030 Mon Sep 17 00:00:00 2001 From: Ludovico Bianchi Date: Thu, 25 Apr 2024 18:39:25 -0500 Subject: [PATCH 40/47] "Diagnositcs" should be "Diagnostics" --- .../docs/diagnostics/diagnostics_toolbox_exercise.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/idaes_examples/notebooks/docs/diagnostics/diagnostics_toolbox_exercise.ipynb b/idaes_examples/notebooks/docs/diagnostics/diagnostics_toolbox_exercise.ipynb index fbb3333a..af574b64 100644 --- a/idaes_examples/notebooks/docs/diagnostics/diagnostics_toolbox_exercise.ipynb +++ b/idaes_examples/notebooks/docs/diagnostics/diagnostics_toolbox_exercise.ipynb @@ -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", From 705418825444a8807bd49a8ef272115b2105d639 Mon Sep 17 00:00:00 2001 From: Ludovico Bianchi Date: Thu, 25 Apr 2024 18:40:42 -0500 Subject: [PATCH 41/47] "maxmimum" should be "maximum" --- .../docs/power_gen/solid_oxide_cell/soc_pid_control.ipynb | 2 +- .../docs/power_gen/solid_oxide_cell/soc_pid_control_doc.ipynb | 2 +- .../docs/power_gen/solid_oxide_cell/soc_pid_control_test.ipynb | 2 +- .../docs/power_gen/solid_oxide_cell/soc_pid_control_usr.ipynb | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) 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..15e352f9 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", 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..284f3afc 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", 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..6d7afd86 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", 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..284f3afc 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", From 4f57f1f1fbac3d7eaea2af46d5a4c733e91effa8 Mon Sep 17 00:00:00 2001 From: Ludovico Bianchi Date: Thu, 25 Apr 2024 18:41:43 -0500 Subject: [PATCH 42/47] "discrepency" should be "discrepancy" --- .../docs/power_gen/solid_oxide_cell/soc_pid_control.ipynb | 2 +- .../docs/power_gen/solid_oxide_cell/soc_pid_control_doc.ipynb | 2 +- .../docs/power_gen/solid_oxide_cell/soc_pid_control_test.ipynb | 2 +- .../docs/power_gen/solid_oxide_cell/soc_pid_control_usr.ipynb | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) 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 15e352f9..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 @@ -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 284f3afc..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 @@ -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 6d7afd86..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 @@ -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 284f3afc..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 @@ -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." ] }, { From 2d37ba71c3358a148046346e095723a0fd668c9e Mon Sep 17 00:00:00 2001 From: Ludovico Bianchi Date: Thu, 25 Apr 2024 18:42:50 -0500 Subject: [PATCH 43/47] "auxilaries" should be "auxiliaries" --- idaes_examples/mod/power_gen/soc_dynamic_flowsheet.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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, From f4013060e258fbef7fbe4b5597f40e49fb6a15eb Mon Sep 17 00:00:00 2001 From: Ludovico Bianchi Date: Thu, 25 Apr 2024 18:44:49 -0500 Subject: [PATCH 44/47] "Stream_lables_leader" should be "Stream_label_leader" --- .../notebooks/active/power_gen/ngcc/data_pfds/st_baseline.svg | 2 +- .../notebooks/active/power_gen/ngcc/data_pfds/st_soec_base.svg | 2 +- idaes_examples/notebooks/active/power_gen/ngcc/ngcc_doc.ipynb | 2 +- .../notebooks/active/power_gen/ngcc/steam_turbine_template.svg | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) 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", diff --git a/idaes_examples/notebooks/active/power_gen/ngcc/steam_turbine_template.svg b/idaes_examples/notebooks/active/power_gen/ngcc/steam_turbine_template.svg index 7d1b06e5..49630870 100644 --- a/idaes_examples/notebooks/active/power_gen/ngcc/steam_turbine_template.svg +++ b/idaes_examples/notebooks/active/power_gen/ngcc/steam_turbine_template.svg @@ -1081,7 +1081,7 @@