diff --git a/src/phast/PhreeqcRM/src/PhreeqcRM.cpp b/src/phast/PhreeqcRM/src/PhreeqcRM.cpp index 1ca74906..a4bc9fea 100644 --- a/src/phast/PhreeqcRM/src/PhreeqcRM.cpp +++ b/src/phast/PhreeqcRM/src/PhreeqcRM.cpp @@ -1090,7 +1090,12 @@ PhreeqcRM::Concentrations2SolutionsH2O(int n, std::vector &c) int start = this->start_cell[n]; int end = this->end_cell[n]; #endif - + if (gfw.size() == 0) + { + this->ErrorMessage("FindComponents must be called before this point, stopping.", true); + std::cerr << "ERROR: FindComponents must be called before this point, stopping." << std::endl; + throw PhreeqcRMStop(); + } for (j = start; j <= end; j++) { std::vector d; // scratch space to convert from mass fraction to moles @@ -1192,7 +1197,12 @@ PhreeqcRM::Concentrations2SolutionsNoH2O(int n, std::vector &c) int start = this->start_cell[n]; int end = this->end_cell[n]; #endif - + if (gfw.size() == 0) + { + this->ErrorMessage("FindComponents must be called before this point, stopping.", true); + std::cerr << "ERROR: FindComponents must be called before this point, stopping." << std::endl; + throw PhreeqcRMStop(); + } for (j = start; j <= end; j++) { std::vector d; // scratch space to convert from mass fraction to moles @@ -1292,7 +1302,12 @@ PhreeqcRM::Concentrations2UtilityH2O(const std::vector &c_in, size_t ncomps = this->components.size(); size_t nsolns = c.size() / ncomps; size_t nutil= this->nthreads + 1; - + if (gfw.size() == 0) + { + this->ErrorMessage("FindComponents must be called before this point, stopping.", true); + std::cerr << "ERROR: FindComponents must be called before this point, stopping." << std::endl; + throw PhreeqcRMStop(); + } for (size_t i = 0; i < nsolns; i++) { std::vector d; // scratch space to convert from mass fraction to moles @@ -1368,7 +1383,12 @@ PhreeqcRM::Concentrations2UtilityNoH2O(const std::vector &c_in, size_t ncomps = this->components.size(); size_t nsolns = c.size() / ncomps; size_t nutil= this->nthreads + 1; - + if (gfw.size() == 0) + { + this->ErrorMessage("FindComponents must be called before this point, stopping.", true); + std::cerr << "ERROR: FindComponents must be called before this point, stopping." << std::endl; + throw PhreeqcRMStop(); + } for (size_t i = 0; i < nsolns; i++) { std::vector d; // scratch space to convert from mass fraction to moles @@ -1796,7 +1816,12 @@ PhreeqcRM::cxxSolution2concentrationH2O(cxxSolution * cxxsoln_ptr, std::vectorErrorMessage("FindComponents must be called before this point, stopping.", true); + std::cerr << "ERROR: FindComponents must be called before this point, stopping." << std::endl; + throw PhreeqcRMStop(); + } // Simplify totals { cxxNameDouble nd = cxxsoln_ptr->Get_totals().Simplify_redox(); @@ -1867,7 +1892,12 @@ PhreeqcRM::cxxSolution2concentrationNoH2O(cxxSolution * cxxsoln_ptr, std::vector cxxNameDouble nd = cxxsoln_ptr->Get_totals().Simplify_redox(); cxxsoln_ptr->Set_totals(nd); } - + if (gfw.size() == 0) + { + this->ErrorMessage("FindComponents must be called before this point, stopping.", true); + std::cerr << "ERROR: FindComponents must be called before this point, stopping." << std::endl; + throw PhreeqcRMStop(); + } // convert units switch (this->units_Solution) { diff --git a/src/phast/PhreeqcRM/swig/python/ex11-advect/ex11-advect.ipynb b/src/phast/PhreeqcRM/swig/python/ex11-advect/ex11-advect.ipynb index 24d7a836..380a57c6 100644 --- a/src/phast/PhreeqcRM/swig/python/ex11-advect/ex11-advect.ipynb +++ b/src/phast/PhreeqcRM/swig/python/ex11-advect/ex11-advect.ipynb @@ -1,5 +1,47 @@ { "cells": [ + { + "cell_type": "markdown", + "id": "51f2c19f", + "metadata": {}, + "source": [ + "# PhreeqcRM BMI Python Example\n", + "\n", + "This notebook demonstrates how to use the Python wrappers included with the PHREEQC Reaction Module (PhreeqcRM) to couple the PHREEQC geochemical reaction model to a simple 1D advection model using the [Basic Model Interface (BMI)](https://bmi.readthedocs.io/en/stable/).\n", + "\n", + "PhreeqcRM is described in this publication:\n", + "- Parkhurst, D.L. and Wissmeier, L., 2015. [PhreeqcRM: A reaction module for transport simulators based on the geochemical model PHREEQC](https://pubs.usgs.gov/publication/70189910). *Advances in Water Resources*, 83, pp.176-189.\n", + " - Full Text PDF: https://water.usgs.gov/water-resources/software/VS2DRTI/ParkhurstWissmeier2015.pdf\n", + "\n", + "\n", + "This demonstration is designed around the PHREEQC Example 11: Transport and Cation Exchange provided in the [PHREEQC Version 3 Manual](https://pubs.usgs.gov/tm/06/a43/pdf/tm6-A43.pdf).\n", + "\n", + "by Scott Charlton, Shanna Rucker Blount, Anthony Aufdenkampe" + ] + }, + { + "cell_type": "markdown", + "id": "921b3993", + "metadata": {}, + "source": [ + "# Installation and Setup\n", + "\n", + "PhreeqcRM and it's Python wrapper can be installed into a conda virtual environment by running the following command:\n", + "```shell\n", + "conda install phreeqcrm\n", + "```\n", + "\n", + "Alternately, a custom conda virtual environment can be created using the `environment.yml` file included in this folder." + ] + }, + { + "cell_type": "markdown", + "id": "3fcac21f", + "metadata": {}, + "source": [ + "## Python Imports" + ] + }, { "cell_type": "code", "execution_count": 1, @@ -14,16 +56,173 @@ }, { "cell_type": "markdown", - "id": "543edbc3", + "id": "65f51af4", "metadata": {}, "source": [ - "Create yaml for initialize()" + "# Docs for PhreeqcRM modules and functions\n", + "\n", + "PhreeqcRM has three modules:\n", + "- [**PhreeqcRM**](https://usgs-coupled.github.io/phreeqcrm/classPhreeqcRM.html): a geochemical reaction module for reactive-transport\n", + "simulators. Based on IPhreeqc, it allows access to all\n", + "PHREEQC reaction capabilities.\n", + "- [**BMIPhreeqcRM**](https://usgs-coupled.github.io/phreeqcrm/classBMIPhreeqcRM.html): a subclass of PhreeqcRM that adds BMI standard functions.\n", + "- [**YAMLPhreeqcRM**](https://usgs-coupled.github.io/phreeqcrm/classYAMLPhreeqcRM.html): A helper class to programmatically write a YAML configuration file for PhreeqcRM.\n", + "\n", + "These modules and their functions are documented in the C++ code and compiled by the Doxygen document generator at https://usgs-coupled.github.io/phreeqcrm." ] }, { "cell_type": "code", "execution_count": 2, - "id": "e6c1fcc1", + "id": "70e1671b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['BMIPhreeqcRM',\n", + " 'BoolVector',\n", + " 'DoubleVector',\n", + " 'IRM_BADINSTANCE',\n", + " 'IRM_BADVARTYPE',\n", + " 'IRM_FAIL',\n", + " 'IRM_INVALIDARG',\n", + " 'IRM_INVALIDCOL',\n", + " 'IRM_INVALIDROW',\n", + " 'IRM_OK',\n", + " 'IRM_OUTOFMEMORY',\n", + " 'IntVector',\n", + " 'PhreeqcRM',\n", + " 'State',\n", + " 'StringVector',\n", + " 'YAMLPhreeqcRM',\n", + " '__builtins__',\n", + " '__cached__',\n", + " '__doc__',\n", + " '__file__',\n", + " '__loader__',\n", + " '__name__',\n", + " '__package__',\n", + " '__path__',\n", + " '__spec__',\n", + " '_phreeqcrm',\n", + " 'phreeqcrm',\n", + " 'yamlphreeqcrm']" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Explore phreeqcrm namespace\n", + "dir(phreeqcrm)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "cd9fa291", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[0;31mSignature:\u001b[0m\n", + "\u001b[0mphreeqcrm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mYAMLPhreeqcRM\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mYAMLSpeciesConcentrations2Module\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", + "\u001b[0;34m\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", + "\u001b[0;34m\u001b[0m \u001b[0mspecies_conc\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", + "\u001b[0;34m\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mDocstring:\u001b[0m\n", + "Inserts data into the YAML document for the PhreeqcRM method SpeciesConcentrations2Module.\n", + "\n", + "When the YAML document is written to file it can be processed by the method InitializeYAML to\n", + "initialize a PhreeqcRM instance. SpeciesConcentrations2Module sets solution concentrations in \n", + "the reaction cells based on the vector of aqueous species concentrations (@a species_conc).\n", + "This method is intended for use with multicomponent-diffusion transport calculations, and \n", + "SetSpeciesSaveOn must be set to true. The list of aqueous species is determined by \n", + "FindComponents and includes all aqueous species that can be made from the set of components.\n", + "The method determines the total concentration of a component by summing the molarities of the \n", + "individual species times the stoichiometric coefficient of the element in each species.\n", + "Solution compositions in the reaction cells are updated with these component concentrations.\n", + "Usually, accurate concentrations will not be known to use YAMLSpeciesConcentrations2Module during\n", + "initialization.\n", + "\n", + "@param species_conc A list, tuple, or numpy array of aqueous species concentrations. Dimension of the array is nspecies \n", + "times nxyz, where nspecies is the number of aqueous species, and nxyz is the number of user \n", + "grid cells. Concentrations are moles per liter.\n", + "\u001b[0;31mFile:\u001b[0m ~/miniconda3/envs/phreeqc/lib/python3.11/site-packages/phreeqcrm/yamlphreeqcrm.py\n", + "\u001b[0;31mType:\u001b[0m function" + ] + } + ], + "source": [ + "# Explore phreeqcrm documentation\n", + "phreeqcrm.YAMLPhreeqcRM.YAMLSpeciesConcentrations2Module?" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "3faa233e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Help on function YAMLSpeciesConcentrations2Module in module phreeqcrm.yamlphreeqcrm:\n", + "\n", + "YAMLSpeciesConcentrations2Module(self, species_conc)\n", + " Inserts data into the YAML document for the PhreeqcRM method SpeciesConcentrations2Module.\n", + " \n", + " When the YAML document is written to file it can be processed by the method InitializeYAML to\n", + " initialize a PhreeqcRM instance. SpeciesConcentrations2Module sets solution concentrations in \n", + " the reaction cells based on the vector of aqueous species concentrations (@a species_conc).\n", + " This method is intended for use with multicomponent-diffusion transport calculations, and \n", + " SetSpeciesSaveOn must be set to true. The list of aqueous species is determined by \n", + " FindComponents and includes all aqueous species that can be made from the set of components.\n", + " The method determines the total concentration of a component by summing the molarities of the \n", + " individual species times the stoichiometric coefficient of the element in each species.\n", + " Solution compositions in the reaction cells are updated with these component concentrations.\n", + " Usually, accurate concentrations will not be known to use YAMLSpeciesConcentrations2Module during\n", + " initialization.\n", + " \n", + " @param species_conc A list, tuple, or numpy array of aqueous species concentrations. Dimension of the array is nspecies \n", + " times nxyz, where nspecies is the number of aqueous species, and nxyz is the number of user \n", + " grid cells. Concentrations are moles per liter.\n", + "\n" + ] + } + ], + "source": [ + "help(phreeqcrm.YAMLPhreeqcRM.YAMLSpeciesConcentrations2Module)" + ] + }, + { + "cell_type": "markdown", + "id": "543edbc3", + "metadata": {}, + "source": [ + "# Create a configuration YAML file for PHREEQC Example 11\n", + "\n", + "We will use the `phreeqcrm.YAMLPhreeqcRM()` module to create a configuration file as input to `phreeqcrm.BMIPhreeqcRM.initialize()`. This is the easiest way to run the Reaction Module." + ] + }, + { + "cell_type": "markdown", + "id": "45290cb9", + "metadata": {}, + "source": [ + "## Initialize YAML file and set grid size" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "16cbf91e", "metadata": {}, "outputs": [], "source": [ @@ -31,76 +230,260 @@ "yrm = phreeqcrm.YAMLPhreeqcRM()\n", "\n", "# Number of cells\n", - "nxyz = 40\n", + "nxyz = 40 \n", + " # nxyz is the number of grid cells in the user's model\n", "\n", "# Set GridCellCount\n", - "yrm.YAMLSetGridCellCount(nxyz)\n", + "yrm.YAMLSetGridCellCount(nxyz) \n", + " # Number of cells for the PhreeqcRM instance" + ] + }, + { + "cell_type": "markdown", + "id": "8eb03b8e", + "metadata": {}, + "source": [ + "## Set Properties" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "ae4d07fc", + "metadata": {}, + "outputs": [], + "source": [ + "yrm.YAMLSetErrorHandlerMode(1) \n", + " # 0 (default), return to calling program with an error return code; \n", + " # 1, throw an exception; 2, attempt to exit gracefully\n", + "yrm.YAMLSetComponentH2O(False) \n", + " # True (default), excess H, excess O, and water are included in the \n", + " # component list (require less accuracy in transport); \n", + " # False, total H and O are included in the component list (requires \n", + " # transportresults to be accurate to eight or nine significant \n", + " # digits)\n", + "yrm.YAMLSetRebalanceFraction(0.5) \n", + " # 0.5 (default); \n", + " # 0, eliminate load rebalancing; \n", + " # 1, maximum load rebalancing setting; \n", + " # Less than 1 recommended to avoid too many cells transferred at one \n", + " # iteration\n", + "yrm.YAMLSetRebalanceByCell(True) \n", + " # True (default), individual cell times are used in rebalancing; \n", + " # False, average times are used in rebalancing\n", + "yrm.YAMLUseSolutionDensityVolume(False) \n", + " # True, use solution density and volume as calculated by PHREEQC; \n", + " # False, use solution density set by SetDensityUser and the volume \n", + " # determined by the product of SetSaturationUser, SetPorosity, \n", + " # and SetRepresentativeVolume\n", + "yrm.YAMLSetPartitionUZSolids(False) \n", + " # True, the fraction of solids and gases available for reaction is \n", + " # equal to the saturation; \n", + " # False (default), all solids and gases are reactive regardless of \n", + " # saturation" + ] + }, + { + "cell_type": "markdown", + "id": "2ccb7664", + "metadata": {}, + "source": [ + "## Set Units" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "1eb664cd", + "metadata": {}, + "outputs": [], + "source": [ + "# Set concentration units\n", + "yrm.YAMLSetUnitsSolution(2) \n", + " # 1, mg/L; 2, mol/L; 3, kg/kgs\n", + "yrm.YAMLSetUnitsPPassemblage(1) \n", + " # 0, mol/L cell; 1, mol/L water; 2 mol/L rock\n", + "yrm.YAMLSetUnitsExchange(1) \n", + " # 0, mol/L cell; 1, mol/L water; 2 mol/L rock\n", + "yrm.YAMLSetUnitsSurface(1) \n", + " # 0, mol/L cell; 1, mol/L water; 2 mol/L rock\n", + "yrm.YAMLSetUnitsGasPhase(1) \n", + " # 0, mol/L cell; 1, mol/L water; 2 mol/L rock\n", + "yrm.YAMLSetUnitsSSassemblage(1) \n", + " # 0, mol/L cell; 1, mol/L water; 2 mol/L rock\n", + "yrm.YAMLSetUnitsKinetics(1) \n", + " # 0, mol/L cell; 1, mol/L water; 2 mol/L rock\n", "\n", - "# Set some properties\n", - "yrm.YAMLSetErrorHandlerMode(1)\n", - "yrm.YAMLSetComponentH2O(False)\n", - "yrm.YAMLSetRebalanceFraction(0.5)\n", - "yrm.YAMLSetRebalanceByCell(True)\n", - "yrm.YAMLUseSolutionDensityVolume(False)\n", - "yrm.YAMLSetPartitionUZSolids(False)\n", "\n", - "# Set concentration units\n", - "yrm.YAMLSetUnitsSolution(2) # 1, mg/L; 2, mol/L; 3, kg/kgs\n", - "yrm.YAMLSetUnitsPPassemblage(1) # 0, mol/L cell; 1, mol/L water; 2 mol/L rock\n", - "yrm.YAMLSetUnitsExchange(1) # 0, mol/L cell; 1, mol/L water; 2 mol/L rock\n", - "yrm.YAMLSetUnitsSurface(1) # 0, mol/L cell; 1, mol/L water; 2 mol/L rock\n", - "yrm.YAMLSetUnitsGasPhase(1) # 0, mol/L cell; 1, mol/L water; 2 mol/L rock\n", - "yrm.YAMLSetUnitsSSassemblage(1) # 0, mol/L cell; 1, mol/L water; 2 mol/L rock\n", - "yrm.YAMLSetUnitsKinetics(1) # 0, mol/L cell; 1, mol/L water; 2 mol/L rock\n", - "\n", - "# Set conversion from seconds to user units (days) Only affects one print statement\n", + "# Set conversion from seconds to user units (days);\n", + "# Only affects one print statement\n", "time_conversion = 1.0 / 86400.0\n", - "yrm.YAMLSetTimeConversion(time_conversion)\n", - "\n", + "yrm.YAMLSetTimeConversion(time_conversion) \n", + " # Factor to convert seconds to user time units" + ] + }, + { + "cell_type": "markdown", + "id": "15497a40", + "metadata": {}, + "source": [ + "## Set Initial Conditions" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "79331f26", + "metadata": {}, + "outputs": [], + "source": [ "# Set representative volume\n", - "rv = [1] * nxyz\n", - "yrm.YAMLSetRepresentativeVolume(rv)\n", + "rv = [1] * nxyz \n", + "yrm.YAMLSetRepresentativeVolume(rv) \n", + " # Representative volumes, in liters, of each reaction cell as an \n", + " # array of size nxyz. Default is 1.0 liter.\n", "\n", "# Set initial density\n", "density = [1.0] * nxyz\n", - "yrm.YAMLSetDensityUser(density)\n", + "yrm.YAMLSetDensityUser(density) \n", + " # Density for each reaction cell as an array of size nxyz\n", "\n", "# Set initial porosity\n", "por = [0.2] * nxyz\n", - "yrm.YAMLSetPorosity(por)\n", + "yrm.YAMLSetPorosity(por) \n", + " # Porosity, unitless, for each reaction cell as an array of size \n", + " # nxyz\n", "\n", "# Set initial saturation\n", "sat = [1] * nxyz\n", - "yrm.YAMLSetSaturationUser(sat)\n", - "\n", + "yrm.YAMLSetSaturationUser(sat) \n", + " # Saturation fraction for each reaction cell ranging from 0 to 1 as \n", + " # an array of size nxyz" + ] + }, + { + "cell_type": "markdown", + "id": "910edba6", + "metadata": {}, + "source": [ + "## Load Database and Run Input File" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "69fa9b3d", + "metadata": {}, + "outputs": [], + "source": [ "# Load database\n", - "yrm.YAMLLoadDatabase(\"phreeqc.dat\")\n", - "\n", - "# Run file to define solutions and reactants for initial conditions, selected output\n", - "workers = True # Worker instances do the reaction calculations for transport\n", - "initial_phreeqc = True # InitialPhreeqc instance accumulates initial and boundary conditions\n", - "utility = True # Utility instance is available for processing\n", - "yrm.YAMLRunFile(workers, initial_phreeqc, utility, \"advect.pqi\")\n", - "\n", - "# Clear contents of workers and utility\n", - "initial_phreeqc = False\n", - "input = \"DELETE; -all\"\n", - "yrm.YAMLRunString(workers, initial_phreeqc, utility, input)\n", - "yrm.YAMLAddOutputVars(\"AddOutputVars\", \"true\")\n", + "yrm.YAMLLoadDatabase(\"phreeqc.dat\") \n", + " # String containing the database name for all IPhreeqc \n", + " # instances--workers, InitialPhreeqc, and Utility\n", "\n", + "# Run file to define solutions and reactants for initial conditions, \n", + "# selected output\n", + "workers = True \n", + " # Worker instances do the reaction calculations for transport\n", + "initial_phreeqc = True \n", + " # InitialPhreeqc instance accumulates initial and boundary \n", + " # conditions\n", + "utility = True \n", + " # Utility instance is available for processing\n", + "chemistry_name = \"advect.pqi\"\n", + "yrm.YAMLRunFile(workers, initial_phreeqc, utility, chemistry_name) \n", + " # YAMLRunFile runs a PHREEQC input file. The first three arguments \n", + " # determine which IPhreeqc instances will run the file\n" + ] + }, + { + "cell_type": "markdown", + "id": "fe4ba876", + "metadata": {}, + "source": [ + "## Clear contents of Workers and Utility" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "5529363a", + "metadata": {}, + "outputs": [], + "source": [ + "initial_phreeqc = False \n", + " # False Indicates InitialPhreeqc will not run the string\n", + "input = \"DELETE; -all\" \n", + " # String containing PHREEQC input that clears contents for the \n", + " # instances that run\n", + "yrm.YAMLRunString(workers, initial_phreeqc, utility, input) \n", + " # YAMLRunString runs a PHREEQC input string. The first three \n", + " # arguments determine which IPhreeqc instances will run the string\n", + "output_vars = \"AddOutputVars\" \n", + " # A string value that includes or excludes variables from \n", + " # GetOutputVarNames, GetValue, and other BMI methods\n", + "include_vars = \"true\" \n", + " # A string value that can be \"false\", \"true\", or a list of items to \n", + " # be included as accessible variables\n", + "yrm.YAMLAddOutputVars(output_vars, include_vars) \n", + " # AddOutputVars allows selection of sets of output variables that \n", + " # are available through the BMI method GetValue" + ] + }, + { + "cell_type": "markdown", + "id": "d9daf9ca", + "metadata": {}, + "source": [ + "## Find Components and Transfer Definitions" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "e6c1fcc1", + "metadata": {}, + "outputs": [], + "source": [ "# Determine number of components to transport\n", - "yrm.YAMLFindComponents()\n", + "yrm.YAMLFindComponents() \n", + " # YAMLFindComponents accumulates a list of elements that have been \n", + " # defined in a solution or any other reactant (EQUILIBRIUM_PHASE, \n", + " # KINETICS, and others). The list is the set of components that \n", + " # needs to be transported\n", "\n", "# initial solutions\n", "initial_solutions = [1] * nxyz\n", - "yrm.YAMLInitialSolutions2Module(initial_solutions)\n", + "yrm.YAMLInitialSolutions2Module(initial_solutions) \n", + " # SOLUTION definitions, as an array of size nxyz, from the \n", + " # InitialPhreeqc instance to be transferred to the reaction-module\n", + " # workers\n", "\n", "# initial exchanges\n", "initial_exchanges = [1] * nxyz\n", - "yrm.YAMLInitialExchanges2Module(initial_exchanges)\n", - "\n", - "# Write YAML file\n", - "yrm.WriteYAMLDoc(\"ex11-advect.yaml\")\n" + "yrm.YAMLInitialExchanges2Module(initial_exchanges) \n", + " # EXCHANGE definitions, as an array of size nxyz, from the \n", + " # InitialPhreeqc instance to be transferred to the reaction-module\n", + " # workers" + ] + }, + { + "cell_type": "markdown", + "id": "de55936a", + "metadata": {}, + "source": [ + "## Write YAML File" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "cb09acba", + "metadata": {}, + "outputs": [], + "source": [ + "yrm.WriteYAMLDoc(\"ex11-advect.yaml\") \n", + " # String containing file name where YAML document will be written" ] }, { @@ -108,12 +491,13 @@ "id": "f67c862b", "metadata": {}, "source": [ - "Define function to perform advection of cells" + "# Create the Simple 1D Advection Model\n", + "Define a function to implement a simple 1-dimensional advection model." ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 13, "id": "c2c831e8", "metadata": {}, "outputs": [], @@ -122,11 +506,11 @@ " # Advect\n", " for i in range(nxyz - 1, 0, -1):\n", " for j in range(ncomps):\n", - " c[j * nxyz + i] = c[j * nxyz + i - 1] # component j\n", + " c[j * nxyz + i] = c[j * nxyz + i - 1] # component j\n", " \n", " # Cell zero gets boundary condition\n", " for j in range(ncomps):\n", - " c[j * nxyz] = bc_conc[j] # component j" + " c[j * nxyz] = bc_conc[j] # component j" ] }, { @@ -134,186 +518,501 @@ "id": "3041c99a", "metadata": {}, "source": [ - "Transient loop" + "# Couple PHREEQC Geochemical Model with Simple Advection Model" + ] + }, + { + "cell_type": "markdown", + "id": "ad0c22a3", + "metadata": {}, + "source": [ + "## Initialize PhreeqcRM with YAML\n", + "Using config YAML file created above for PHREEQC Example 11." ] }, { "cell_type": "code", - "execution_count": 4, - "id": "21cf0aed", + "execution_count": 14, + "id": "e2df224a", + "metadata": {}, + "outputs": [], + "source": [ + "rm = phreeqcrm.BMIPhreeqcRM()\n", + "rm.initialize(\"ex11-advect.yaml\")" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "8fe1b3f7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "step Na Cl K Ca Pore_vol\n", - "1 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 3.7500e-02\n", - "2 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 6.2500e-02\n", - "3 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 8.7500e-02\n", - "4 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 1.1250e-01\n", - "5 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 1.3750e-01\n", - "6 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 1.6250e-01\n", - "7 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 1.8750e-01\n", - "8 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 2.1250e-01\n", - "9 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 2.3750e-01\n", - "10 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 2.6250e-01\n", - "11 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 2.8750e-01\n", - "12 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 3.1250e-01\n", - "13 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 3.3750e-01\n", - "14 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 3.6250e-01\n", - "15 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 3.8750e-01\n", - "16 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 4.1250e-01\n", - "17 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 4.3750e-01\n", - "18 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 4.6250e-01\n", - "19 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 4.8750e-01\n", - "20 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 5.1250e-01\n", - "21 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 5.3750e-01\n", - "22 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 5.6250e-01\n", - "23 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 5.8750e-01\n", - "24 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 6.1250e-01\n", - "25 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 6.3750e-01\n", - "26 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 6.6250e-01\n", - "27 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 6.8750e-01\n", - "28 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 7.1250e-01\n", - "29 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 7.3750e-01\n", - "30 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 7.6250e-01\n", - "31 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 7.8750e-01\n", - "32 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 8.1250e-01\n", - "33 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 8.3750e-01\n", - "34 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 8.6250e-01\n", - "35 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 8.8750e-01\n", - "36 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 9.1250e-01\n", - "37 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 9.3750e-01\n", - "38 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 9.6250e-01\n", - "39 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 9.8750e-01\n", - "40 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 1.0125e+00\n", - "41 1.0000e-03 1.2000e-03 2.0000e-04 0.0000e+00 1.0375e+00\n", - "42 1.0000e-03 1.2000e-03 2.0000e-04 0.0000e+00 1.0625e+00\n", - "43 1.0000e-03 1.2000e-03 2.0000e-04 0.0000e+00 1.0875e+00\n", - "44 1.0000e-03 1.2000e-03 2.0000e-04 0.0000e+00 1.1125e+00\n", - "45 1.0000e-03 1.2000e-03 2.0000e-04 0.0000e+00 1.1375e+00\n", - "46 1.0000e-03 1.2000e-03 2.0000e-04 0.0000e+00 1.1625e+00\n", - "47 1.0000e-03 1.2000e-03 2.0000e-04 0.0000e+00 1.1875e+00\n", - "48 1.0000e-03 1.2000e-03 2.0000e-04 0.0000e+00 1.2125e+00\n", - "49 1.0000e-03 1.2000e-03 2.0000e-04 0.0000e+00 1.2375e+00\n", - "50 1.0000e-03 1.2000e-03 2.0000e-04 0.0000e+00 1.2625e+00\n", - "51 1.0000e-03 1.2000e-03 2.0000e-04 0.0000e+00 1.2875e+00\n", - "52 1.0000e-03 1.2000e-03 2.0000e-04 0.0000e+00 1.3125e+00\n", - "53 1.0000e-03 1.2000e-03 2.0000e-04 0.0000e+00 1.3375e+00\n", - "54 1.0000e-03 1.2000e-03 2.0000e-04 0.0000e+00 1.3625e+00\n", - "55 9.9999e-04 1.2000e-03 2.0001e-04 0.0000e+00 1.3875e+00\n", - "56 9.9994e-04 1.2000e-03 2.0006e-04 0.0000e+00 1.4125e+00\n", - "57 9.9972e-04 1.2000e-03 2.0028e-04 0.0000e+00 1.4375e+00\n", - "58 9.9872e-04 1.2000e-03 2.0128e-04 0.0000e+00 1.4625e+00\n", - "59 9.9431e-04 1.2000e-03 2.0569e-04 0.0000e+00 1.4875e+00\n", - "60 9.7504e-04 1.2000e-03 2.2496e-04 0.0000e+00 1.5125e+00\n", - "61 8.9841e-04 1.2000e-03 3.0159e-04 0.0000e+00 1.5375e+00\n", - "62 6.7463e-04 1.2000e-03 5.2537e-04 0.0000e+00 1.5625e+00\n", - "63 3.3885e-04 1.2000e-03 8.6115e-04 0.0000e+00 1.5875e+00\n", - "64 1.1563e-04 1.2000e-03 1.0844e-03 0.0000e+00 1.6125e+00\n", - "65 3.2608e-05 1.2000e-03 1.1674e-03 0.0000e+00 1.6375e+00\n", - "66 8.6376e-06 1.2000e-03 1.1914e-03 0.0000e+00 1.6625e+00\n", - "67 2.2477e-06 1.2000e-03 1.1978e-03 1.1823e-25 1.6875e+00\n", - "68 5.8173e-07 1.2000e-03 1.1994e-03 1.7037e-23 1.7125e+00\n", - "69 1.5015e-07 1.2000e-03 1.1998e-03 2.4611e-21 1.7375e+00\n", - "70 3.8640e-08 1.2000e-03 1.2000e-03 3.5999e-19 1.7625e+00\n", - "71 9.8986e-09 1.2000e-03 1.2000e-03 5.3156e-17 1.7875e+00\n", - "72 2.5166e-09 1.2000e-03 1.2000e-03 7.8616e-15 1.8125e+00\n", - "73 6.3145e-10 1.2000e-03 1.2000e-03 1.1542e-12 1.8375e+00\n", - "74 1.5480e-10 1.2000e-03 1.2000e-03 1.6726e-10 1.8625e+00\n", - "75 3.6331e-11 1.2000e-03 1.2000e-03 2.3910e-08 1.8875e+00\n", - "76 7.7654e-12 1.2000e-03 1.1933e-03 3.3429e-06 1.9125e+00\n", - "77 1.0509e-12 1.2000e-03 8.0389e-04 1.9805e-04 1.9375e+00\n", - "78 3.1754e-14 1.2000e-03 1.2131e-04 5.3934e-04 1.9625e+00\n", - "79 6.1171e-16 1.2000e-03 1.1674e-05 5.9416e-04 1.9875e+00\n", - "80 1.1279e-17 1.2000e-03 1.0754e-06 5.9946e-04 2.0125e+00\n", - "81 2.0715e-19 1.2000e-03 9.8683e-08 5.9995e-04 2.0375e+00\n", - "82 3.8028e-21 1.2000e-03 9.0526e-09 6.0000e-04 2.0625e+00\n", - "83 6.9693e-23 1.2000e-03 8.3048e-10 6.0000e-04 2.0875e+00\n", - "84 1.2277e-24 1.2000e-03 7.6194e-11 6.0000e-04 2.1125e+00\n", - "85 0.0000e+00 1.2000e-03 6.9911e-12 6.0000e-04 2.1375e+00\n", - "86 0.0000e+00 1.2000e-03 6.4153e-13 6.0000e-04 2.1625e+00\n", - "87 0.0000e+00 1.2000e-03 5.8874e-14 6.0000e-04 2.1875e+00\n", - "88 0.0000e+00 1.2000e-03 5.4035e-15 6.0000e-04 2.2125e+00\n", - "89 0.0000e+00 1.2000e-03 4.9598e-16 6.0000e-04 2.2375e+00\n", - "90 0.0000e+00 1.2000e-03 4.5530e-17 6.0000e-04 2.2625e+00\n", - "91 0.0000e+00 1.2000e-03 4.1809e-18 6.0000e-04 2.2875e+00\n", - "92 0.0000e+00 1.2000e-03 3.8398e-19 6.0000e-04 2.3125e+00\n", - "93 0.0000e+00 1.2000e-03 3.5281e-20 6.0000e-04 2.3375e+00\n", - "94 0.0000e+00 1.2000e-03 3.2549e-21 6.0000e-04 2.3625e+00\n", - "95 0.0000e+00 1.2000e-03 3.0765e-22 6.0000e-04 2.3875e+00\n", - "96 0.0000e+00 1.2000e-03 2.8451e-23 6.0000e-04 2.4125e+00\n", - "97 0.0000e+00 1.2000e-03 2.3460e-24 6.0000e-04 2.4375e+00\n", - "98 0.0000e+00 1.2000e-03 0.0000e+00 6.0000e-04 2.4625e+00\n", - "99 0.0000e+00 1.2000e-03 0.0000e+00 6.0000e-04 2.4875e+00\n", - "100 0.0000e+00 1.2000e-03 0.0000e+00 6.0000e-04 2.5125e+00\n" + "\n", + " 8 ('H', 'O', 'Charge', 'Ca', 'Cl', 'K', 'N', 'Na') \n", + " 4 ('CaX2', 'KX', 'NaX', 'X-') \n", + " ('Concentrations', 'DensityUser', 'FilePrefix', 'NthSelectedOutput', 'SaturationUser', 'Time', 'TimeStep', 'Porosity', 'Pressure', 'SelectedOutputOn', 'Temperature') \n", + " ('ComponentCount', 'Concentrations', 'DensityCalculated', 'Gfw', 'GridCellCount', 'SaturationCalculated', 'SolutionVolume', 'Time', 'TimeStep', 'Porosity', 'Pressure', 'SelectedOutputOn', 'Temperature', 'Viscosity') \n", + " ('ComponentCount', 'Components', 'Concentrations', 'DensityCalculated', 'ErrorString', 'FilePrefix', 'Gfw', 'GridCellCount', 'SaturationCalculated', 'SelectedOutput', 'SelectedOutputColumnCount', 'SelectedOutputCount', 'SelectedOutputRowCount', 'SolutionVolume', 'Time', 'TimeStep', 'CurrentSelectedOutputUserNumber', 'Porosity', 'Pressure', 'SelectedOutputOn', 'Temperature', 'Viscosity', 'exchange_total_molality_X', 'exchange_X_species_log_molality_CaX2', 'exchange_X_species_log_molality_KX', 'exchange_X_species_log_molality_NaX', 'exchange_X_species_log_molality_X-', 'solution_alkalinity', 'solution_charge_balance', 'solution_ionic_strength', 'solution_pe', 'solution_percent_error', 'solution_ph', 'solution_specific_conductance', 'solution_total_molality_Ca', 'solution_total_molality_Cl', 'solution_total_molality_H', 'solution_total_molality_H(0)', 'solution_total_molality_H(1)', 'solution_total_molality_K', 'solution_total_molality_N', 'solution_total_molality_N(-3)', 'solution_total_molality_N(0)', 'solution_total_molality_N(3)', 'solution_total_molality_N(5)', 'solution_total_molality_Na', 'solution_total_molality_O', 'solution_total_molality_O(-2)', 'solution_total_molality_O(0)', 'solution_water_mass')\n" ] } ], "source": [ - "rm = phreeqcrm.BMIPhreeqcRM()\n", - "rm.initialize(\"ex11-advect.yaml\")\n", - "\n", - "ncomps = rm.get_value_ptr(\"ComponentCount\")[0]\n", - "assert nxyz == rm.get_value_ptr(\"GridCellCount\")[0]\n", - "\n", - "# Get initial concentrations\n", - "c = rm.get_value_ptr(\"Concentrations\")\n", - "\n", - "# --------------------------------------------------------------------------\n", + "# Explore PhreeqcRM model configuration\n", + "print(\n", + " '\\n',\n", + " rm.get_value_ptr(\"ComponentCount\")[0],\n", + " rm.GetComponents(), \n", + " '\\n',\n", + " rm.GetExchangeSpeciesCount(),\n", + " rm.GetExchangeSpecies(),\n", + " '\\n',\n", + " rm.get_input_var_names(),\n", + " '\\n',\n", + " rm.get_pointable_var_names(),\n", + " '\\n',\n", + " rm.get_output_var_names(),\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "42c0dea9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "8" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Save number of components for use later\n", + "ncomps = rm.get_value_ptr(\"ComponentCount\")[0] \n", + " # eight components: ['H', 'O', 'Charge', 'Ca', 'Cl', 'K', 'N', 'Na']\n", + "ncomps" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "557fc66a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "('ComponentCount',\n", + " 'Components',\n", + " 'Concentrations',\n", + " 'DensityCalculated',\n", + " 'ErrorString',\n", + " 'FilePrefix',\n", + " 'Gfw',\n", + " 'GridCellCount',\n", + " 'SaturationCalculated',\n", + " 'SelectedOutput',\n", + " 'SelectedOutputColumnCount',\n", + " 'SelectedOutputCount',\n", + " 'SelectedOutputRowCount',\n", + " 'SolutionVolume',\n", + " 'Time',\n", + " 'TimeStep',\n", + " 'CurrentSelectedOutputUserNumber',\n", + " 'Porosity',\n", + " 'Pressure',\n", + " 'SelectedOutputOn',\n", + " 'Temperature',\n", + " 'Viscosity',\n", + " 'exchange_total_molality_X',\n", + " 'exchange_X_species_log_molality_CaX2',\n", + " 'exchange_X_species_log_molality_KX',\n", + " 'exchange_X_species_log_molality_NaX',\n", + " 'exchange_X_species_log_molality_X-',\n", + " 'solution_alkalinity',\n", + " 'solution_charge_balance',\n", + " 'solution_ionic_strength',\n", + " 'solution_pe',\n", + " 'solution_percent_error',\n", + " 'solution_ph',\n", + " 'solution_specific_conductance',\n", + " 'solution_total_molality_Ca',\n", + " 'solution_total_molality_Cl',\n", + " 'solution_total_molality_H',\n", + " 'solution_total_molality_H(0)',\n", + " 'solution_total_molality_H(1)',\n", + " 'solution_total_molality_K',\n", + " 'solution_total_molality_N',\n", + " 'solution_total_molality_N(-3)',\n", + " 'solution_total_molality_N(0)',\n", + " 'solution_total_molality_N(3)',\n", + " 'solution_total_molality_N(5)',\n", + " 'solution_total_molality_Na',\n", + " 'solution_total_molality_O',\n", + " 'solution_total_molality_O(-2)',\n", + " 'solution_total_molality_O(0)',\n", + " 'solution_water_mass')" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Save list of outputs for use later\n", + "output_var_names = rm.get_output_var_names()\n", + "output_var_names" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "b776f555", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "40" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Confirm grid size\n", + "assert nxyz == rm.get_value_ptr(\"GridCellCount\")[0] \n", + " # AssertionError raised if nxyz does not equal GridCellCount\n", + "nxyz" + ] + }, + { + "cell_type": "markdown", + "id": "e6b2d206", + "metadata": {}, + "source": [ + "## Set Initial Concentrations and Boundary Conditions" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "21cf0aed", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(320,)" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Get initial concentrations from phreeqcrm\n", + "c = rm.get_value_ptr(\"Concentrations\") \n", + " # One-dimensional array with 320 indices (40 nxyz x 8 ncomps) \n", + " # Includes 40 concentration values for each of the eight components\n", + "c.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "7592541d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(8,)" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ "# Set boundary condition\n", - "# --------------------------------------------------------------------------\n", "bc1 = [0] # solution 0 from Initial IPhreeqc instance\n", "\n", - "bc_conc = rm.InitialPhreeqc2Concentrations(bc1)\n", + "bc_conc = rm.InitialPhreeqc2Concentrations(bc1) \n", + " # One-dimensional array with 8 indices\n", + "bc_conc.shape" + ] + }, + { + "cell_type": "markdown", + "id": "3e8bc629", + "metadata": {}, + "source": [ + "## Run Transient Loop through All Timesteps" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "f340f679", + "metadata": {}, + "outputs": [], + "source": [ + "# set number of time steps\n", + "nsteps = 100" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "9ce620ee", + "metadata": {}, + "outputs": [], + "source": [ + "# Pre-Allocate Python Arrays for Outputs\n", "\n", + "# Create empty NumPy arrays for molality totals (random values set as \n", + "# initial values for each of the 40 indices)\n", "solution_total_molality_Cl = np.empty((nxyz,), dtype=float)\n", "solution_total_molality_Na = np.empty((nxyz,), dtype=float)\n", "solution_total_molality_K = np.empty((nxyz,), dtype=float)\n", "solution_total_molality_Ca = np.empty((nxyz,), dtype=float)\n", "\n", - "nsteps = 100\n", - "Na = np.empty((nsteps,), dtype=float)\n", - "Cl = np.empty((nsteps,), dtype=float)\n", - "K = np.empty((nsteps,), dtype=float)\n", - "Ca = np.empty((nsteps,), dtype=float)\n", + "exchange_X_species_log_molality_Xminus = np.empty((nxyz,), dtype=float)\n", + "exchange_X_species_log_molality_NaX = np.empty((nxyz,), dtype=float)\n", + "exchange_X_species_log_molality_KX = np.empty((nxyz,), dtype=float)\n", + "exchange_X_species_log_molality_CaX2 = np.empty((nxyz,), dtype=float)\n", + "\n", "\n", - "por_volumes = np.empty((nsteps,), dtype=float)\n", + "# Create empty NumPy arrays for components - will store molality results\n", + "# for each time step\n", + "Na = np.empty((nsteps,nxyz), dtype=float)\n", + "Cl = np.empty((nsteps,nxyz), dtype=float)\n", + "K = np.empty((nsteps,nxyz), dtype=float)\n", + "Ca = np.empty((nsteps,nxyz), dtype=float)\n", "\n", - "print(f\"step Na Cl K Ca Pore_vol\")\n", + "NaX = np.empty((nsteps,nxyz), dtype=float)\n", + "Xminus = np.empty((nsteps,nxyz), dtype=float)\n", + "KX = np.empty((nsteps,nxyz), dtype=float)\n", + "CaX2 = np.empty((nsteps,nxyz), dtype=float)\n", + "\n", + "# Create empty NumPy array for pore volumes\n", + "por_volumes = np.empty((nsteps), dtype=float)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "f13a10ce", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "step Na Cl K Ca NaX X- KX CaX2 Pore_vol\n", + "1 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 3.7500e-02\n", + "2 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 6.2500e-02\n", + "3 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 8.7500e-02\n", + "4 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 1.1250e-01\n", + "5 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 1.3750e-01\n", + "6 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 1.6250e-01\n", + "7 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 1.8750e-01\n", + "8 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 2.1250e-01\n", + "9 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 2.3750e-01\n", + "10 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 2.6250e-01\n", + "11 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 2.8750e-01\n", + "12 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 3.1250e-01\n", + "13 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 3.3750e-01\n", + "14 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 3.6250e-01\n", + "15 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 3.8750e-01\n", + "16 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 4.1250e-01\n", + "17 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 4.3750e-01\n", + "18 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 4.6250e-01\n", + "19 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 4.8750e-01\n", + "20 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 5.1250e-01\n", + "21 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 5.3750e-01\n", + "22 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 5.6250e-01\n", + "23 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 5.8750e-01\n", + "24 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 6.1250e-01\n", + "25 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 6.3750e-01\n", + "26 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 6.6250e-01\n", + "27 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 6.8750e-01\n", + "28 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 7.1250e-01\n", + "29 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 7.3750e-01\n", + "30 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 7.6250e-01\n", + "31 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 7.8750e-01\n", + "32 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 8.1250e-01\n", + "33 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 8.3750e-01\n", + "34 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 8.6250e-01\n", + "35 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 8.8750e-01\n", + "36 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 9.1250e-01\n", + "37 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 9.3750e-01\n", + "38 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 9.6250e-01\n", + "39 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 9.8750e-01\n", + "40 1.0000e-03 0.0000e+00 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 1.0125e+00\n", + "41 1.0000e-03 1.2000e-03 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 1.0375e+00\n", + "42 1.0000e-03 1.2000e-03 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 1.0625e+00\n", + "43 1.0000e-03 1.2000e-03 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 1.0875e+00\n", + "44 1.0000e-03 1.2000e-03 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 1.1125e+00\n", + "45 1.0000e-03 1.2000e-03 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 1.1375e+00\n", + "46 1.0000e-03 1.2000e-03 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 1.1625e+00\n", + "47 1.0000e-03 1.2000e-03 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 1.1875e+00\n", + "48 1.0000e-03 1.2000e-03 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 1.2125e+00\n", + "49 1.0000e-03 1.2000e-03 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 1.2375e+00\n", + "50 1.0000e-03 1.2000e-03 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 1.2625e+00\n", + "51 1.0000e-03 1.2000e-03 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 1.2875e+00\n", + "52 1.0000e-03 1.2000e-03 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 1.3125e+00\n", + "53 1.0000e-03 1.2000e-03 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 1.3375e+00\n", + "54 1.0000e-03 1.2000e-03 2.0000e-04 0.0000e+00 -3.9591e+00 2.6985e+00 -3.9581e+00 -9.9990e+01 1.3625e+00\n", + "55 9.9999e-04 1.2000e-03 2.0001e-04 0.0000e+00 -3.9591e+00 2.6984e+00 -3.9581e+00 -9.9990e+01 1.3875e+00\n", + "56 9.9994e-04 1.2000e-03 2.0006e-04 0.0000e+00 -3.9592e+00 2.6984e+00 -3.9580e+00 -9.9990e+01 1.4125e+00\n", + "57 9.9972e-04 1.2000e-03 2.0028e-04 0.0000e+00 -3.9595e+00 2.6982e+00 -3.9577e+00 -9.9990e+01 1.4375e+00\n", + "58 9.9872e-04 1.2000e-03 2.0128e-04 0.0000e+00 -3.9608e+00 2.6973e+00 -3.9564e+00 -9.9990e+01 1.4625e+00\n", + "59 9.9431e-04 1.2000e-03 2.0569e-04 0.0000e+00 -3.9665e+00 2.6935e+00 -3.9508e+00 -9.9990e+01 1.4875e+00\n", + "60 9.7504e-04 1.2000e-03 2.2496e-04 0.0000e+00 -3.9913e+00 2.6773e+00 -3.9282e+00 -9.9990e+01 1.5125e+00\n", + "61 8.9841e-04 1.2000e-03 3.0159e-04 0.0000e+00 -4.0861e+00 2.6180e+00 -3.8602e+00 -9.9990e+01 1.5375e+00\n", + "62 6.7463e-04 1.2000e-03 5.2537e-04 0.0000e+00 -4.3480e+00 2.4805e+00 -3.7566e+00 -9.9990e+01 1.5625e+00\n", + "63 3.3885e-04 1.2000e-03 8.6115e-04 0.0000e+00 -4.7955e+00 2.3321e+00 -3.6904e+00 -9.9990e+01 1.5875e+00\n", + "64 1.1563e-04 1.2000e-03 1.0844e-03 0.0000e+00 -5.3388e+00 2.2557e+00 -3.6667e+00 -9.9990e+01 1.6125e+00\n", + "65 3.2608e-05 1.2000e-03 1.1674e-03 0.0000e+00 -5.9139e+00 2.2304e+00 -3.6600e+00 -9.9990e+01 1.6375e+00\n", + "66 8.6376e-06 1.2000e-03 1.1914e-03 0.0000e+00 -6.4979e+00 2.2233e+00 -3.6582e+00 -9.9990e+01 1.6625e+00\n", + "67 2.2477e-06 1.2000e-03 1.1978e-03 1.1823e-25 -7.0844e+00 2.2215e+00 -3.6577e+00 -2.3643e+01 1.6875e+00\n", + "68 5.8173e-07 1.2000e-03 1.1994e-03 1.7037e-23 -7.6719e+00 2.2210e+00 -3.6576e+00 -2.1485e+01 1.7125e+00\n", + "69 1.5015e-07 1.2000e-03 1.1998e-03 2.4611e-21 -8.2602e+00 2.2209e+00 -3.6576e+00 -1.9326e+01 1.7375e+00\n", + "70 3.8640e-08 1.2000e-03 1.2000e-03 3.5999e-19 -8.8497e+00 2.2208e+00 -3.6576e+00 -1.7161e+01 1.7625e+00\n", + "71 9.8986e-09 1.2000e-03 1.2000e-03 5.3156e-17 -9.4412e+00 2.2208e+00 -3.6576e+00 -1.4991e+01 1.7875e+00\n", + "72 2.5166e-09 1.2000e-03 1.2000e-03 7.8616e-15 -1.0036e+01 2.2208e+00 -3.6576e+00 -1.2821e+01 1.8125e+00\n", + "73 6.3145e-10 1.2000e-03 1.2000e-03 1.1542e-12 -1.0636e+01 2.2208e+00 -3.6576e+00 -1.0655e+01 1.8375e+00\n", + "74 1.5480e-10 1.2000e-03 1.2000e-03 1.6726e-10 -1.1247e+01 2.2208e+00 -3.6576e+00 -8.4936e+00 1.8625e+00\n", + "75 3.6331e-11 1.2000e-03 1.2000e-03 2.3910e-08 -1.1878e+01 2.2190e+00 -3.6594e+00 -6.3420e+00 1.8875e+00\n", + "76 7.7654e-12 1.2000e-03 1.1933e-03 3.3429e-06 -1.2695e+01 2.0721e+00 -3.8087e+00 -4.4903e+00 1.9125e+00\n", + "77 1.0509e-12 1.2000e-03 8.0389e-04 1.9805e-04 -1.4209e+01 1.4269e+00 -4.6255e+00 -4.0081e+00 1.9375e+00\n", + "78 3.1754e-14 1.2000e-03 1.2131e-04 5.3934e-04 -1.5924e+01 1.2318e+00 -5.6419e+00 -3.9631e+00 1.9625e+00\n", + "79 6.1171e-16 1.2000e-03 1.1674e-05 5.9416e-04 -1.7658e+01 1.2128e+00 -6.6775e+00 -3.9590e+00 1.9875e+00\n", + "80 1.1279e-17 1.2000e-03 1.0754e-06 5.9946e-04 -1.9394e+01 1.2111e+00 -7.7149e+00 -3.9586e+00 2.0125e+00\n", + "81 2.0715e-19 1.2000e-03 9.8683e-08 5.9995e-04 -2.1130e+01 1.2109e+00 -8.7524e+00 -3.9586e+00 2.0375e+00\n", + "82 3.8028e-21 1.2000e-03 9.0526e-09 6.0000e-04 -2.2867e+01 1.2109e+00 -9.7899e+00 -3.9586e+00 2.0625e+00\n", + "83 6.9693e-23 1.2000e-03 8.3048e-10 6.0000e-04 -2.4603e+01 1.2109e+00 -1.0827e+01 -3.9586e+00 2.0875e+00\n", + "84 1.2277e-24 1.2000e-03 7.6194e-11 6.0000e-04 -2.6358e+01 1.2109e+00 -1.1865e+01 -3.9586e+00 2.1125e+00\n", + "85 0.0000e+00 1.2000e-03 6.9911e-12 6.0000e-04 -9.9990e+01 1.2109e+00 -1.2902e+01 -3.9586e+00 2.1375e+00\n", + "86 0.0000e+00 1.2000e-03 6.4153e-13 6.0000e-04 -9.9990e+01 1.2109e+00 -1.3939e+01 -3.9586e+00 2.1625e+00\n", + "87 0.0000e+00 1.2000e-03 5.8874e-14 6.0000e-04 -9.9990e+01 1.2109e+00 -1.4977e+01 -3.9586e+00 2.1875e+00\n", + "88 0.0000e+00 1.2000e-03 5.4035e-15 6.0000e-04 -9.9990e+01 1.2109e+00 -1.6014e+01 -3.9586e+00 2.2125e+00\n", + "89 0.0000e+00 1.2000e-03 4.9598e-16 6.0000e-04 -9.9990e+01 1.2109e+00 -1.7051e+01 -3.9586e+00 2.2375e+00\n", + "90 0.0000e+00 1.2000e-03 4.5530e-17 6.0000e-04 -9.9990e+01 1.2109e+00 -1.8088e+01 -3.9586e+00 2.2625e+00\n", + "91 0.0000e+00 1.2000e-03 4.1809e-18 6.0000e-04 -9.9990e+01 1.2109e+00 -1.9125e+01 -3.9586e+00 2.2875e+00\n", + "92 0.0000e+00 1.2000e-03 3.8398e-19 6.0000e-04 -9.9990e+01 1.2109e+00 -2.0162e+01 -3.9586e+00 2.3125e+00\n", + "93 0.0000e+00 1.2000e-03 3.5281e-20 6.0000e-04 -9.9990e+01 1.2109e+00 -2.1199e+01 -3.9586e+00 2.3375e+00\n", + "94 0.0000e+00 1.2000e-03 3.2549e-21 6.0000e-04 -9.9990e+01 1.2109e+00 -2.2234e+01 -3.9586e+00 2.3625e+00\n", + "95 0.0000e+00 1.2000e-03 3.0765e-22 6.0000e-04 -9.9990e+01 1.2109e+00 -2.3259e+01 -3.9586e+00 2.3875e+00\n", + "96 0.0000e+00 1.2000e-03 2.8451e-23 6.0000e-04 -9.9990e+01 1.2109e+00 -2.4293e+01 -3.9586e+00 2.4125e+00\n", + "97 0.0000e+00 1.2000e-03 2.3460e-24 6.0000e-04 -9.9990e+01 1.2109e+00 -2.5376e+01 -3.9586e+00 2.4375e+00\n", + "98 0.0000e+00 1.2000e-03 0.0000e+00 6.0000e-04 -9.9990e+01 1.2109e+00 -9.9990e+01 -3.9586e+00 2.4625e+00\n", + "99 0.0000e+00 1.2000e-03 0.0000e+00 6.0000e-04 -9.9990e+01 1.2109e+00 -9.9990e+01 -3.9586e+00 2.4875e+00\n", + "100 0.0000e+00 1.2000e-03 0.0000e+00 6.0000e-04 -9.9990e+01 1.2109e+00 -9.9990e+01 -3.9586e+00 2.5125e+00\n" + ] + } + ], + "source": [ + "# Print column headers for outputs\n", + "print(f\"step Na Cl K Ca NaX X- KX CaX2 Pore_vol\")\n", + "\n", + "# Loop through each time step\n", "for s in range(nsteps):\n", + " # Advance phreeqcrm model by a single time step\n", " rm.update()\n", "\n", + " # Run advection model\n", " advect(c, bc_conc, ncomps, nxyz)\n", + "\n", + " # Update phreeqcrm concentrations based on advection model run\n", " rm.set_value(\"Concentrations\", c)\n", "\n", - " solution_total_molality_Cl = rm.get_value(\"solution_total_molality_Cl\", solution_total_molality_Cl)\n", - " solution_total_molality_Na = rm.get_value(\"solution_total_molality_Na\", solution_total_molality_Na)\n", - " solution_total_molality_K = rm.get_value(\"solution_total_molality_K\", solution_total_molality_K)\n", - " solution_total_molality_Ca = rm.get_value(\"solution_total_molality_Ca\", solution_total_molality_Ca)\n", + " # Retrieve aqueous phase species molality results from phreeqcrm\n", + " solution_total_molality_Cl = rm.get_value(\"solution_total_molality_Cl\", \n", + " solution_total_molality_Cl)\n", + " solution_total_molality_Na = rm.get_value(\"solution_total_molality_Na\", \n", + " solution_total_molality_Na)\n", + " solution_total_molality_K = rm.get_value(\"solution_total_molality_K\", \n", + " solution_total_molality_K)\n", + " solution_total_molality_Ca = rm.get_value(\"solution_total_molality_Ca\", \n", + " solution_total_molality_Ca)\n", + " \n", + " # Retrieve solid phase exchange species results from phreeqcrm\n", + " exchange_X_species_log_molality_Xminus = \\\n", + " rm.get_value(\"exchange_X_species_log_molality_X-\", \n", + " exchange_X_species_log_molality_Xminus)\n", + " exchange_X_species_log_molality_NaX = \\\n", + " rm.get_value(\"exchange_X_species_log_molality_NaX\", \n", + " exchange_X_species_log_molality_NaX)\n", + " exchange_X_species_log_molality_KX = \\\n", + " rm.get_value(\"exchange_X_species_log_molality_KX\", \n", + " exchange_X_species_log_molality_KX)\n", + " exchange_X_species_log_molality_CaX2 = \\\n", + " rm.get_value(\"exchange_X_species_log_molality_CaX2\", \n", + " exchange_X_species_log_molality_CaX2)\n", + "\n", + "\n", + " step = s + 1 # Advance step by one\n", "\n", - " cell = nxyz - 1\n", - " step = s + 1\n", + " # Calculate pore volume\n", " por_vol = (step + 0.5) / 40\n", "\n", - " Na[s] = solution_total_molality_Na[cell]\n", - " Cl[s] = solution_total_molality_Cl[cell]\n", - " K[s] = solution_total_molality_K[cell]\n", - " Ca[s] = solution_total_molality_Ca[cell]\n", + " # Store last molality concentration result in array index \n", + " # corresponding to current time step\n", + " Na[s,:] = solution_total_molality_Na\n", + " Cl[s,:] = solution_total_molality_Cl\n", + " K[s,:] = solution_total_molality_K\n", + " Ca[s,:] = solution_total_molality_Ca\n", + "\n", + " NaX[s,:] = exchange_X_species_log_molality_NaX\n", + " Xminus[s,:] = exchange_X_species_log_molality_Xminus\n", + " KX[s,:] = exchange_X_species_log_molality_KX\n", + " CaX2[s,:] = exchange_X_species_log_molality_CaX2\n", + "\n", + " # Store pore volume result in array index corresponding to current \n", + " # time step\n", " por_volumes[s] = por_vol\n", - " print(f\"{step} {Na[s]:.4e} {Cl[s]:.4e} {K[s]:.4e} {Ca[s]:.4e} {por_volumes[s]:.4e}\")" + "\n", + " # Print results for current time step at the last grid cell\n", + " cell = nxyz - 1 # Equals 39 (last index in concentration array)\n", + " print(f\"{step} {Na[s, cell]:.4e} {Cl[s, cell]:.4e} {K[s, cell]:.4e} \"\n", + " f\"{Ca[s, cell]:.4e} {NaX[s, cell]:.4e} {Xminus[s, cell]:.4e} \"\n", + " f\"{KX[s, cell]:.4e} {CaX2[s, cell]:.4e} {por_volumes[s,]:.4e}\")" + ] + }, + { + "cell_type": "markdown", + "id": "9ae75067", + "metadata": {}, + "source": [ + "# Plot Results" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 24, "id": "b8025a7d", "metadata": {}, "outputs": [ { "data": { - "image/png": "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unma83yr+dpmctPApk2bMGvWLDz99NPIysrC8OHDMXbsWOTk5Lg8/+TJk7j11lsxfPhwZGVlYf78+Zg5cyY2b97s48gDj9LnWnL06FHk5ubKf7p37+6jiANXeXk5+vfvj1WrVnl0Pl/Xzaf0uZbwda1MZmYmHn30UXz99ddIT0+H1WrF6NGjUV5e7vYavq6brznPt0SV17ZITgYPHixOmzbN6VjPnj3FuXPnujz/ySefFHv27Ol07OGHHxavvfZar8UYLJQ+17t27RIBiBcvXvRBdMELgPjRRx81eQ5f1y3Dk+ear+uWkZ+fLwIQMzMz3Z7D13XL8eT5VvO1zcpNPTU1NThw4ABGjx7tdHz06NHYu3evy2v27dvX6PwxY8Zg//79sFgsXos10DXnuZYMHDgQCQkJuPnmm7Fr1y5vhhmy+Lr2Pb6uL09xcTEAIC4uzu05fF23HE+eb4kar20mN/VcuHABNpsN8fHxTsfj4+ORl5fn8pq8vDyX51utVly4cMFrsQa65jzXCQkJeOutt7B582Zs2bIFPXr0wM0334zdu3f7IuSQwte17/B1fflEUURqaiquu+469OnTx+15fF23DE+fbzVf2yG3K7gnBEFw+lwUxUbHLnW+q+PUmJLnukePHujRo4f8+ZAhQ3D69Gm8/PLLuP76670aZyji69o3+Lq+fI899hh++OEHfPnll5c8l6/ry+fp863ma5uVm3pat24NrVbbqHKQn5/fKNuXtGvXzuX5Op0OrVq18lqsga45z7Ur1157LY4dO9bS4YU8vq7Vxde152bMmIFPPvkEu3btQseOHZs8l6/ry6fk+XbFV69tJjf1GAwGpKSkID093el4eno6hg4d6vKaIUOGNDp/586dGDRoEPR6vddiDXTNea5dycrKQkJCQkuHF/L4ulYXX9eXJooiHnvsMWzZsgVffPEFkpOTL3kNX9fN15zn2xWfvbZ93sLs595//31Rr9eL69atE48cOSLOmjVLDA8PF3/77TdRFEVx7ty54n333Seff+LECdFsNouzZ88Wjxw5Iq5bt07U6/Xihx9+qNaPEDCUPtevvvqq+NFHH4m//PKL+NNPP4lz584VAYibN29W60cIGKWlpWJWVpaYlZUlAhCXL18uZmVliadOnRJFka/rlqT0uebrunkeeeQRMTo6WszIyBBzc3PlPxUVFfI5fF23nOY832q+tpncuLB69WqxU6dOosFgEK+66iqnqW7333+/eMMNNzidn5GRIQ4cOFA0GAxi586dxbVr1/o44sCl5LleunSp2LVrV9FkMomxsbHiddddJ3766acqRB14pCmZDf/cf//9oijydd2SlD7XfF03j6vnGID4zjvvyOfwdd1ymvN8q/naFmqDJiIiIgoK7LkhIiKioMLkhoiIiIIKkxsiIiIKKkxuiIiIKKgwuSEiIqKgwuSGiIiIggqTGyIiIgoqTG6IiIgoqDC5IaKQ8Ntvv0EQBHz//fdqh0JEXsbkhojceuCBByAIAgRBgF6vR5cuXfDEE0+gvLxc7dCIiNzSqR0AEfm3W265Be+88w4sFgv27NmDhx56COXl5Vi7dq3ixxJFETabDTodbz1E5D2s3BBRk4xGI9q1a4fExERMnDgRkyZNwtatWwEA1dXVmDlzJtq2bQuTyYTrrrsO3333nXxtRkYGBEHAjh07MGjQIBiNRuzZsweiKGLZsmXo0qULwsLC0L9/f3z44YduY5g3bx6uvfbaRsf79euHBQsWAADsdjsWLVqEjh07wmg0YsCAAdi+fbvbx9ywYQNiYmKcjm3duhWCIMifP//88xgwYADWr1+PpKQkRERE4JFHHoHNZsOyZcvQrl07tG3bFi+++KLT4xQXF+Mvf/kL2rZti6ioKNx00004dOiQ/PVDhw5hxIgRiIyMRFRUFFJSUrB//363sRKRMkxuiEiRsLAwWCwWAMCTTz6JzZs34+9//zsOHjyIbt26YcyYMSgsLHS65sknn0RaWhqys7PRr18/PPPMM3jnnXewdu1aHD58GLNnz8af//xnZGZmuvyekyZNwjfffIPjx4/Lxw4fPowff/wRkyZNAgC89tpreOWVV/Dyyy/jhx9+wJgxY3D77bfj2LFjl/XzHj9+HJ999hm2b9+OjRs3Yv369bjttttw5swZZGZmYunSpXjmmWfw9ddfA3BUp2677Tbk5eVh27ZtOHDgAK666ircfPPN8vMyadIkdOzYEd999x0OHDiAuXPnQq/XX1acRFSPT/YeJ6KAdP/994t33HGH/Pk333wjtmrVSrznnnvEsrIyUa/Xi++995789ZqaGrF9+/bismXLRFEUxV27dokAxK1bt8rnlJWViSaTSdy7d6/T95o6dao4YcIEt7H069dPXLRokfz5vHnzxKuvvlr+vH379uKLL77odM3VV18tTp8+XRRFUTx58qQIQMzKyhJFURTfeecdMTo62un8jz76SKx/W1ywYIFoNpvFkpIS+diYMWPEzp07izabTT7Wo0cPMS0tTRRFUfz888/FqKgosaqqyumxu3btKr755puiKIpiZGSkuGHDBrc/KxFdHg58E1GT/vvf/yIiIgJWqxUWiwV33HEHXn/9dRw/fhwWiwXDhg2Tz9Xr9Rg8eDCys7OdHmPQoEHyx0eOHEFVVRVGjRrldE5NTQ0GDhzoNo5JkyZh/fr1ePbZZyGKIjZu3IhZs2YBAEpKSnDu3DmnWABg2LBhTsNBzdG5c2dERkbKn8fHx0Or1UKj0Tgdy8/PBwAcOHAAZWVlaNWqldPjVFZWypWn1NRUPPTQQ/jHP/6BkSNH4o9//CO6du16WXESUR0mN0TUpBEjRmDt2rXQ6/Vo3769PHySm5sLAE49KoBjWKbhsfDwcPlju90OAPj000/RoUMHp/OMRqPbOCZOnIi5c+fi4MGDqKysxOnTp/GnP/3J6RxPYpFoNBqIouh0TBpuq6/hcJE0c6zhMennstvtSEhIQEZGRqPHknp8nn/+eUycOBGffvopPvvsMyxYsADvv/8+7rzzTpexEpEyTG6IqEnh4eHo1q1bo+PdunWDwWDAl19+iYkTJwJwJAf79++XKyqu9O7dG0ajETk5Objhhhs8jqNjx464/vrr8d5776GyshIjR45EfHw8ACAqKgrt27fHl19+ieuvv16+Zu/evRg8eLDLx2vTpg1KS0tRXl4uJ18tsQbOVVddhby8POh0OnTu3NnteVdccQWuuOIKzJ49GxMmTMA777zD5IaohTC5IaJmCQ8PxyOPPII5c+YgLi4OSUlJWLZsGSoqKjB16lS310VGRuKJJ57A7NmzYbfbcd1116GkpAR79+5FREQE7r//frfXTpo0Cc8//zxqamrw6quvOn1tzpw5WLBgAbp27YoBAwbgnXfewffff4/33nvP5WNdc801MJvNmD9/PmbMmIFvv/0WGzZsaNZzUd/IkSMxZMgQjB8/HkuXLkWPHj1w7tw5bNu2DePHj8eVV16JOXPm4O6770ZycjLOnDmD7777Dnfddddlf28icmByQ0TNtmTJEtjtdtx3330oLS3FoEGDsGPHDsTGxjZ53eLFi9G2bVukpaXhxIkTiImJwVVXXYX58+c3ed0f//hHzJgxA1qtFuPHj3f62syZM1FSUoLHH38c+fn56N27Nz755BN0797d5WPFxcXhn//8J+bMmYO33noLI0eOxPPPP4+//OUvip6DhgRBwLZt2/D0009jypQpOH/+PNq1a4frr79e7tcpKCjA5MmT8fvvv6N169b4wx/+gIULF17W9yWiOoLYcNCZiIiIKIBxnRsiIiIKKkxuiIiIKKgwuSEiIqKgwuSGiIiIggqTGyIiIgoqTG6IiIgoqDC5ISIioqDC5IaIiIiCCpMbIiIiCipMboiIiCioMLkhIiKioPL/AVSu+2otBILMAAAAAElFTkSuQmCC", + "image/png": "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unma83yr+dpmctPApk2bMGvWLDz99NPIysrC8OHDMXbsWOTk5Lg8/+TJk7j11lsxfPhwZGVlYf78+Zg5cyY2b97s48gDj9LnWnL06FHk5ubKf7p37+6jiANXeXk5+vfvj1WrVnl0Pl/Xzaf0uZbwda1MZmYmHn30UXz99ddIT0+H1WrF6NGjUV5e7vYavq6brznPt0SV17ZITgYPHixOmzbN6VjPnj3FuXPnujz/ySefFHv27Ol07OGHHxavvfZar8UYLJQ+17t27RIBiBcvXvRBdMELgPjRRx81eQ5f1y3Dk+ear+uWkZ+fLwIQMzMz3Z7D13XL8eT5VvO1zcpNPTU1NThw4ABGjx7tdHz06NHYu3evy2v27dvX6PwxY8Zg//79sFgsXos10DXnuZYMHDgQCQkJuPnmm7Fr1y5vhhmy+Lr2Pb6uL09xcTEAIC4uzu05fF23HE+eb4kar20mN/VcuHABNpsN8fHxTsfj4+ORl5fn8pq8vDyX51utVly4cMFrsQa65jzXCQkJeOutt7B582Zs2bIFPXr0wM0334zdu3f7IuSQwte17/B1fflEUURqaiquu+469OnTx+15fF23DE+fbzVf2yG3K7gnBEFw+lwUxUbHLnW+q+PUmJLnukePHujRo4f8+ZAhQ3D69Gm8/PLLuP76670aZyji69o3+Lq+fI899hh++OEHfPnll5c8l6/ry+fp863ma5uVm3pat24NrVbbqHKQn5/fKNuXtGvXzuX5Op0OrVq18lqsga45z7Ur1157LY4dO9bS4YU8vq7Vxde152bMmIFPPvkEu3btQseOHZs8l6/ry6fk+XbFV69tJjf1GAwGpKSkID093el4eno6hg4d6vKaIUOGNDp/586dGDRoEPR6vddiDXTNea5dycrKQkJCQkuHF/L4ulYXX9eXJooiHnvsMWzZsgVffPEFkpOTL3kNX9fN15zn2xWfvbZ93sLs595//31Rr9eL69atE48cOSLOmjVLDA8PF3/77TdRFEVx7ty54n333Seff+LECdFsNouzZ88Wjxw5Iq5bt07U6/Xihx9+qNaPEDCUPtevvvqq+NFHH4m//PKL+NNPP4lz584VAYibN29W60cIGKWlpWJWVpaYlZUlAhCXL18uZmVliadOnRJFka/rlqT0uebrunkeeeQRMTo6WszIyBBzc3PlPxUVFfI5fF23nOY832q+tpncuLB69WqxU6dOosFgEK+66iqnqW7333+/eMMNNzidn5GRIQ4cOFA0GAxi586dxbVr1/o44sCl5LleunSp2LVrV9FkMomxsbHiddddJ3766acqRB14pCmZDf/cf//9oijydd2SlD7XfF03j6vnGID4zjvvyOfwdd1ymvN8q/naFmqDJiIiIgoK7LkhIiKioMLkhoiIiIIKkxsiIiIKKkxuiIiIKKgwuSEiIqKgwuSGiIiIggqTGyIiIgoqTG6IiIgoqDC5IaKQ8Ntvv0EQBHz//fdqh0JEXsbkhojceuCBByAIAgRBgF6vR5cuXfDEE0+gvLxc7dCIiNzSqR0AEfm3W265Be+88w4sFgv27NmDhx56COXl5Vi7dq3ixxJFETabDTodbz1E5D2s3BBRk4xGI9q1a4fExERMnDgRkyZNwtatWwEA1dXVmDlzJtq2bQuTyYTrrrsO3333nXxtRkYGBEHAjh07MGjQIBiNRuzZsweiKGLZsmXo0qULwsLC0L9/f3z44YduY5g3bx6uvfbaRsf79euHBQsWAADsdjsWLVqEjh07wmg0YsCAAdi+fbvbx9ywYQNiYmKcjm3duhWCIMifP//88xgwYADWr1+PpKQkRERE4JFHHoHNZsOyZcvQrl07tG3bFi+++KLT4xQXF+Mvf/kL2rZti6ioKNx00004dOiQ/PVDhw5hxIgRiIyMRFRUFFJSUrB//363sRKRMkxuiEiRsLAwWCwWAMCTTz6JzZs34+9//zsOHjyIbt26YcyYMSgsLHS65sknn0RaWhqys7PRr18/PPPMM3jnnXewdu1aHD58GLNnz8af//xnZGZmuvyekyZNwjfffIPjx4/Lxw4fPowff/wRkyZNAgC89tpreOWVV/Dyyy/jhx9+wJgxY3D77bfj2LFjl/XzHj9+HJ999hm2b9+OjRs3Yv369bjttttw5swZZGZmYunSpXjmmWfw9ddfA3BUp2677Tbk5eVh27ZtOHDgAK666ircfPPN8vMyadIkdOzYEd999x0OHDiAuXPnQq/XX1acRFSPT/YeJ6KAdP/994t33HGH/Pk333wjtmrVSrznnnvEsrIyUa/Xi++995789ZqaGrF9+/bismXLRFEUxV27dokAxK1bt8rnlJWViSaTSdy7d6/T95o6dao4YcIEt7H069dPXLRokfz5vHnzxKuvvlr+vH379uKLL77odM3VV18tTp8+XRRFUTx58qQIQMzKyhJFURTfeecdMTo62un8jz76SKx/W1ywYIFoNpvFkpIS+diYMWPEzp07izabTT7Wo0cPMS0tTRRFUfz888/FqKgosaqqyumxu3btKr755puiKIpiZGSkuGHDBrc/KxFdHg58E1GT/vvf/yIiIgJWqxUWiwV33HEHXn/9dRw/fhwWiwXDhg2Tz9Xr9Rg8eDCys7OdHmPQoEHyx0eOHEFVVRVGjRrldE5NTQ0GDhzoNo5JkyZh/fr1ePbZZyGKIjZu3IhZs2YBAEpKSnDu3DmnWABg2LBhTsNBzdG5c2dERkbKn8fHx0Or1UKj0Tgdy8/PBwAcOHAAZWVlaNWqldPjVFZWypWn1NRUPPTQQ/jHP/6BkSNH4o9//CO6du16WXESUR0mN0TUpBEjRmDt2rXQ6/Vo3769PHySm5sLAE49KoBjWKbhsfDwcPlju90OAPj000/RoUMHp/OMRqPbOCZOnIi5c+fi4MGDqKysxOnTp/GnP/3J6RxPYpFoNBqIouh0TBpuq6/hcJE0c6zhMennstvtSEhIQEZGRqPHknp8nn/+eUycOBGffvopPvvsMyxYsADvv/8+7rzzTpexEpEyTG6IqEnh4eHo1q1bo+PdunWDwWDAl19+iYkTJwJwJAf79++XKyqu9O7dG0ajETk5Objhhhs8jqNjx464/vrr8d5776GyshIjR45EfHw8ACAqKgrt27fHl19+ieuvv16+Zu/evRg8eLDLx2vTpg1KS0tRXl4uJ18tsQbOVVddhby8POh0OnTu3NnteVdccQWuuOIKzJ49GxMmTMA777zD5IaohTC5IaJmCQ8PxyOPPII5c+YgLi4OSUlJWLZsGSoqKjB16lS310VGRuKJJ57A7NmzYbfbcd1116GkpAR79+5FREQE7r//frfXTpo0Cc8//zxqamrw6quvOn1tzpw5WLBgAbp27YoBAwbgnXfewffff4/33nvP5WNdc801MJvNmD9/PmbMmIFvv/0WGzZsaNZzUd/IkSMxZMgQjB8/HkuXLkWPHj1w7tw5bNu2DePHj8eVV16JOXPm4O6770ZycjLOnDmD7777Dnfddddlf28icmByQ0TNtmTJEtjtdtx3330oLS3FoEGDsGPHDsTGxjZ53eLFi9G2bVukpaXhxIkTiImJwVVXXYX58+c3ed0f//hHzJgxA1qtFuPHj3f62syZM1FSUoLHH38c+fn56N27Nz755BN0797d5WPFxcXhn//8J+bMmYO33noLI0eOxPPPP4+//OUvip6DhgRBwLZt2/D0009jypQpOH/+PNq1a4frr79e7tcpKCjA5MmT8fvvv6N169b4wx/+gIULF17W9yWiOoLYcNCZiIiIKIBxnRsiIiIKKkxuiIiIKKgwuSEiIqKgwuSGiIiIggqTGyIiIgoqTG6IiIgoqDC5ISIioqDC5IaIiIiCCpMbIiIiCipMboiIiCioMLkhIiKioPL/AVSu+2otBILMAAAAAElFTkSuQmCC", "text/plain": [ "
" ] @@ -323,11 +1022,13 @@ } ], "source": [ + "# Plot aqueous phase component concentration results as a function \n", + "# of pore volumes\n", "fig, ax = plt.subplots()\n", - "ax.plot(por_volumes, Na*1000, label='Na')\n", - "ax.plot(por_volumes, Cl*1000, label='Cl')\n", - "ax.plot(por_volumes, K*1000, label='K')\n", - "ax.plot(por_volumes, Ca*1000, label='Ca')\n", + "ax.plot(por_volumes, Na[:,cell]*1000, label='Na')\n", + "ax.plot(por_volumes, Cl[:,cell]*1000, label='Cl')\n", + "ax.plot(por_volumes, K[:,cell]*1000, label='K')\n", + "ax.plot(por_volumes, Ca[:,cell]*1000, label='Ca')\n", "ax.set_xlabel('Pore volumes')\n", "ax.set_ylabel('Millimoles per kilogram water')\n", "ax.legend()\n", @@ -336,11 +1037,72 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 25, "id": "02a46777", "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkcAAAGwCAYAAACjPMHLAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAABjf0lEQVR4nO3dZ3hU1RYG4O9MyaSQSiAFEkKXKpDQaxQJiiheBYHQBLkiAtKbdIQAUvTSBFGKIqAiqDRB6YJAQhEporRQEjoJ6VP2/RFmkkiATDKTKed77zOP5MyZmZVzj85i77X3koQQAkREREQEAFDYOgAiIiIie8LkiIiIiCgXJkdEREREuTA5IiIiIsqFyRERERFRLkyOiIiIiHJhckRERESUi8rWATgig8GA69evw9PTE5Ik2TocIiIiKgAhBB48eIDg4GAoFI8fH2JyVAjXr19HSEiIrcMgIiKiQrhy5QrKli372OeZHBWCp6cngOyL6+XlZeNoiIiIqCCSk5MREhJi+h5/HCZHhWCcSvPy8mJyRERE5GCeVhLDgmwiIiKiXJgcEREREeXC5IiIiIgoFyZHRERERLkwOSIiIiLKhckRERERUS5MjoiIiIhyYXJERERElAuTIyIiIqJcmBwRERER5cLkiIiIiCgXJkdEREREubDxrD25H2/rCIjIpvJphilJOcclBaBQZv/T+GeVK6B0eXgeEVkCkyN7Mj8C0GfaOgoicjSSEnDxANTugKYEUCIA8AwESgQCngGAZzDgFQR4BgFewYDazdYRE9k1Jkf2ROXKv/0RUTYhjH/I+bMwAEKfz7l6IDM5+5EC4M4/T35vVx/A1RvQeAEaz+yH2hVQqAGlGlCosv8JKWfkKs8/gZzRrML+N8tK/61Tu+YkgZ5BgHdZwKMU/9tKZmFyZE/GcFqNiApACMCgBww6QJcBaNOArDRAmwpkJAMpN4AHiUBKYvY/HyQCydezH7p0ION+9kMugusCTd8Hqr2SPRVJ9BRMjoiIHI0kAUpV9kPtCrj5FOx1QmQnRQ9uAJkPgMyk7H9mJAO6TMCgzU649A//KQSyR64MOX/+9/s9+iFF+tWKLDMFeJCQnQg+SMhOFK8fA77tBfhVAJoMBJ7tmn3diB5DEiLfu5ueIDk5Gd7e3khKSoKXl5etwyEiosdJvQ0cXpr9SL+XfczFE/CvlJ0s+VUAfMtnTzMqlNlTisZi939P/XFqrniVawYoLLuovqDf30yOCoHJERGRg8lKBY5+CRxcACRdsXU0VBDjbgEqF4u+ZUG/v2U7rbZo0SJ89NFHSEhIQI0aNfDxxx+jefPmtg6LiIiswcUDaNQPqP82cPsccPdCzuPeRUCbnj2VaNBnP4yF77kL46l42XCkTpbJ0bp16zB48GAsWrQITZs2xZIlS/Diiy/i9OnTCA0NtXV4RERkLUoVEFA9+0H0GLKcVmvYsCHq1auHxYsXm45Vq1YNHTp0QExMzFNfz2k1IiIix1PQ72/ZtQ/JyspCXFwc2rRpk+d4mzZtcODAgXxfk5mZieTk5DwPIiIick6yS45u374NvV6PgICAPMcDAgKQmJiY72tiYmLg7e1teoSEhBRHqERERGQDskuOjKR/FXoJIR45ZjRmzBgkJSWZHleucKUDERGRs5JdQba/vz+USuUjo0Q3b958ZDTJSKPRQKPRFEd4REREZGOyGzlycXFBeHg4duzYkef4jh070KRJExtFRURERPZCdiNHADB06FB0794dERERaNy4MZYuXYr4+Hj069fP1qERERGRjckyOXrzzTdx584dTJkyBQkJCahZsya2bNmCcuXK2To0IiIisjFZ7nNUVNzniIiIyPFwnyMiIiKiQmByRERERJQLkyMiIiKiXGRZkE1EJBdCCGQZspCmTUOaLg1p2jSk69KhM+iyH0IHvUEPgzDAIAwQD/9nbEIvitiNvqivfxoJeTfvdVW5orR7aQS4B8DLxeuxm/sSPQmTIzsyY+86GITe1mEQkQ38O4UQQmR/7UsCEAKQshMNSTIAkgGAHoABQpEFSJnQIwNaQwZStam4n3kf9zPvIykzCfcz70Nr0Bb772MPXJWuCPQIRNvybdG7Zm+4qdxgyMhA1qVLMKSnQ2RmQWRlwpCZCegNAB5ea7ILnm3aQFIqbfLZXK1WCNZarVZzeV1ICp3F3o+IKDdXpSvc1e5wU7lBrVBDKSmhUqigVCihgAIKSQFI2aMxEiTTqMu/R2fsWYo2BTfTbuJ+5n3TMaVeoNV1H0RfC4PXoTMwpKXZLkAqsGf+OAHJxcWi71nQ72+OHNkRL1SB3sDkiMgZPS3ByP5ran7nSKZ/CiFBggIGgwIQCgihgE6vQmaWGnq9GjBoIAwaCJ07hN748ICvqxdeeCYEL9YKRpOK/nBROX+5aYYuAzdvXsL1OR9BtfN3eKTfAXAHBgDw8oTayxuSqwYKF032F7BKmfP/kSRlP8i2bPj/AUeOCoH7HBGRPRFCIENrQFK6FglJ6TiT8ACnE5Jw+noyziQ8QLo2Z7re01WF558pjdfDy6JpRX8oFM6ZBAghcG3Q+3jwsFVUpo87dlfOwt5qAhfKKPFe3QHoXbM3lArbTNuQbRT0+5vJUSEwOSIiR6HVG3Dowl1sO5WAn0/dwK0Hmabnyvi44c36IXgjvCyCfdxsGKXl3V31JW5Mnw6o1Sj78TyUaNUKCek3MOvILPwa/ysAoGFQQ8Q0i0Ep91I2jpaKC5MjK2JyRESOyGAQOHblHn44fh0bj11Dckb2NL5CAlpWKYXujcuhZZXSUDr4aFL6yZO41DUa0GoR8MEH8OvezfScEAIb/9mImMMxSNelw8/VDx82/RDNyza3YcRUXJgcWRGTIyJydBlaPbb9mYi1R+Lx+4W7puNlfNwQ3SgUb0aEoGQJjQ0jLBx9UhIu/ud1aK9dg+cLL6DM/z7Jdzn/haQLGLlnJP669xcAoEf1HhhcbzDUSnVxh0zFiMmRFTE5IiJncvF2Kr4+dBnfxF5FUnr2sn8XpQIv1QpE98ZhqBfq4xD7BQkhcHXgQKT88ivUZcui/PfroXzCf6Mz9ZmYFzcPq8+sBgDU8q+FWS1moaxn2eIKmYoZkyMrYnJERM4oQ6vHpj8S8OXvl3Hiyn3T8ZplvNCjURheqRMMV7X9FjDfXbUKN6bHQFKrUW7NGrjVrFGg1+2K34Vxv41DclYyPNWemNJ0ClqXa23laMkWmBxZEZMjInJ2f1y9j1UHL+PHE9eRpTMAAHzc1XgzIgTdGpVDiJ+7jSPMK/PCBVx8tQOEVouAcePg1y3arNdfT7mOEXtH4I9bfwAAujzTBcMihkGjdLypRXo8JkdWxOSIiOTibmoWvom9gq9+v4yr99IBZG8/81zV0ujRJAzNK9l+OwBhMOByt+5IP3oUHi2aI2TJkkJNA2oNWsw/Nh/L/1wOAKjmVw2zW85GqFeopUMmG2FyZEVMjohIbvQGgV1nb2LV75ex99wt0/Hy/h7o3qgc3ogoCy9X2xQz3129GjemfgiFuzsqbPoJ6uDgIr3f3qt78cH+D3A/8z481B6Y2HgiXiz/ooWiJVticmRFTI6ISM4u3ErBl79fxnexV/EgM3s7AHcXJV6rWwY9GoehaqBnscWivXYNF9q/AkNaGgLGj4NftHnTaY+TmJqIUXtH4ejNowCAjlU6YmT9kXBVuVrk/ck2mBxZEZMjIiIgNVOHDceuYdXBSzh3I8V0vHGFkujZpBxaVwuASmm9ViVCCFz57ztI3bcPbvXqodxXX0JSWO7zdAYdFh1fhGUnl0FAoIpvFcxuORvlvctb7DOoeDE5siImR0REOYQQ+P3CXaw8cAk7ztyA3pD9tRLk7Ypujcqhc33r7JmU9OOPuD5yFCS1GuV/2AhNhQoW/wwAOHD9AMbsG4O7GXfhpnLD+Ebj0b5ie6t8FlkXkyMrYnJERJS/6/fTsfrQZaw5fAV3U7MAZO+Z9PKzQejVJAy1y/pY5HN0d+7gwkvtoE9KQqnBg+Hf7x2LvO/j3Eq7hdH7RuNw4mEAwGuVXsOYhmPgpnKutivOjsmRFTE5IiJ6sgytHltOJmDlgUs4cTXJdLxOiA96NimHl2oFQaMq/J5J14YOQ/KWLdA88wzKf/sNJLX1i8H1Bj2W/LEEn574FAICFb0rYk6rOajoU9Hqn02WweTIipgcEREV3PEr97HywCVs/iMBWfrsPZP8S7iga4NQdG1YDoHe5hU5P9i1C1ff7Q8oFAhbtw5utWpaI+zHOpRwCKP3jcbt9NtwVbpibMOx6FCpg0PsIi53TI6siMkREZH5bj3IxNrD8Vh9KB6JyRkAAJVCQlTNQPRqEoaIcr5PTTD0KSm48HJ76BIT4de7NwJGjiiO0B9xO/02xu4bi4MJBwEA7Su0x7hG4+Cutq/NMSkvJkdWxOSIiKjwtHoDtp+6gZUHLuHwpZymt9WDvNCraRheefbxbUoSJk/G/TVroQ4NRYUfNkLhZruaH4MwYNnJZVh4fCEMwoAwrzDMbjkbVf2q2iwmejImR1bE5IiIyDJOX0/GygOXsPH4NWQ+bFPi665Glwah6NaoHIJ9cpKftLg4XI7uBgAIXbEcHo0a2STmf4tNjMWovaNwM/0mNEoNRjUYhTcqv8FpNjvE5MiKmBwREVnWvdQsrIu9gi8PXsa1+9ltSpQKCW1rBKJX0zDUC3THpdf+g6yLF+H9xusI/vBDG0ec192Mu/hg/wfYf20/AODFsBcxofEElHApYePIKDcmR1bE5IiIyDp0egN+OXMTKw5cxO8Xcqbchl3ZidZxW6D090fFzZug9Pa2YZT5MwgDVpxagf8d/R/0Qo9Qz1DMbjkb1UpWs3Vo9FBBv7+tt3UpERGRmVRKBdrWDMTa/zbG1vebo3P9EFRJSUSro9sAAHOrv4oFR27idkqmjSN9lEJSoHfN3ljRdgUCPQIR/yAe0VuisebsGnAcwrFw5KgQOHJERFQ8hF6Pfzq+Cd3pU4gNfRbj63UHALioFOhQJxh9mlUo1l5uBZWUmYRx+8dh99XdAIAXyr2AyU0mw9PF/mKVE06rWRGTIyKi4nFn+QrcnDkTCi8vhP74I3bc0OPz/Rdx4sp90zktq5TCf1tUQJOKJe2qCFoIgS9Pf4l5R+dBZ9ChTIkymN1yNmr6F+++TJSDyZEVMTkiIrK+rCtXcKH9KxAZGQj6cCp83ngDQHbScTT+Ppbtu4CfTyXiYSs3VA/yQr9WFfFyrSAoFPaTJJ28dRIj9o7AtZRrUClUGBo+FN2qdbOrRE4umBxZEZMjIiLrEkLgSp8+SD1wEO4NGyJ0xfJ8k4nLd1Lxxf6L+Cb2KtK1egBAvVAfTHqlhsX6uFlCclYyJv42Eb/E/wIAiAyJxNSmU+Gtsb/CcmfG5MiKmBwREVnX/e83IGHsWEgaDSr8+ANcypV74vn3UrOw6uBlLN17HqlZekgS8GZECIZHVYV/CU0xRf1kQgisObsGs2NnQ2vQIsgjCB+1/AjPlnrW1qHJBpMjK2JyRERkPbrbt3G+3cswJCWh9PBhKPn22wV+7Y3kDMzYehYbjl0DAHi6qhDzn1p4uXawtcI126k7pzBizwhceXAFKkmF9+u9jx41ekAhcQG5tXEpPxEROaTEadNgSEqCpno1+PXqZdZrA7xcMe/NOviuX2PUCPbCgwwd3l97HL+cvmGdYAuhRska+OblbxAVFgWd0GFO3BwM+HUA7mXcs3Vo9BCTIyIishsPdu7Eg63bAKUSQVOnQlKpCvU+EWF++HFAM/ynbhnoDQLvfX0Uhy/effoLi0kJlxL4qMVHGN9oPFwULth3bR86/tQRR28ctXVoBCZHRERkJ/QpKUicPAUAUPKtXnCrUaNI76dUSJj5Rm08/0xpZOoM6LPyCE5fT7ZEqBYhSRI6Ve2Er9t9jTCvMNxIu4HeP/fGspPLYBAGW4cna0yOiIjILtyaOxe6GzegDg2F/3vvWeQ91UoFFkbXQ/0wXzzI0KHHF4dx+U6qRd7bUqr6VcW6l9fh5QovQy/0+OToJ+j/S3/cSb9j69Bki8kRERHZXNrRo7j39RoAQNCUyVC4uVnsvV3VSizrWR/PBHridkomun9+2O7aj7ir3TG92XRMaTIFrkpX/Hb9N3T8qSOOJB6xdWiyxOSIiIhsypCZiYRx4wEA3m+8Do9GjSz+Gd5uaqzq0wChfu6Iv5uG/l8dRZbOvqauJEnCa5Vfw5p2a1DRuyJupd/C29vfxuITi6E36G0dnqwwOSIiIpu6s2QJsi5cgNLfHwEjRljtc0p7uuKLXvXhqVHh8KW7mLLplNU+qygq+VbC1+2+RodKHWAQBiw6vgjv7HgHt9Nv2zo02WByRERENpNx7hxuf7YMABA4bhyU3tbdMbpS6RL4uHMdSBLw1e/xWH3oslU/r7Dc1e6Y2nQqpjebDjeVGw4lHsIbP76Bg9cP2jo0WWByRERENiH0eiSMHw9otSjx3HPwjGpTLJ/7fLUADG9TFQAw8YdTOHLJfpb4/1v7iu2x9uW1qOxbGXcy7uCdHe9g/rH50Bl0tg7NqTE5IiIim7i3ejUyTvwBRYkSCJw4oVgbsfZvVRHtagVBZxB496s4XL+fXmyfba4K3hXw9Utf440qb0BAYOkfS/H29rdxI9V+NrZ0NkyOiIio2GVdvYabH38CACg9fDjUAQHF+vmSJOGjjrVRLcgLt1Oy8N8vY5Ghtd+iZ1eVKyY2nohZLWbBXeWOuBtx6PhTR+y/tt/WoTklJkdERFSshBBInDQJIi0NbhHh8OnU0SZxuLuosLR7OPw8XPDntWSM+f4k7L3d6IvlX8Q37b/BM37P4F7mPbz7y7uYFzcPWoPW1qE5FSZHRERUrJI3bULq/v2QXFwQNGUqJIXtvopC/NyxoGtdKBUSNhy7hi9+u2SzWAqqnFc5fPXSV+hctTMA4Is/v0Dvbb2RmJpo48icB5MjIiIqNrq7d3Fj2nQAgH///tBUKG/jiIAmFf0x9qVqAIDpW87gwHn7XzKvUWrwQaMPMKflHJRQl8DxW8fxxk9vYPeV3bYOzSkwOSIiomJzI2YG9PfvQ1OlCkr26W3rcEx6Nw3LaVK7+iiu3E2zdUgF0iasDb5p/w1qlKyBpMwkDNw5EB8d+QhaPafZioLJERERFYuUvXuR/NNPgEKBoA+nQlKrbR2SiSRJmP6fWqhVxhv30rR458s4pGfZb4F2biGeIVj14ip0q9YNALDq9Cr03NYTVx9ctXFkjovJERERWZ0+JRUJEycBAPx69IBb7dq2DSgfrmolPu0ejpIeLjidkIzR3/9h9wXaRi5KF4xqMAqfRH4CTxdPnLx9Ep1+6oRfLv9i69AcEpMjIiKyulsffwxdQgLUZcui1KCBtg7nscr4uGFhdD2oFBJ+OH4dy/ZdtHVIZnku9Dl81/471C5VGw+0DzBk9xBMPzQdWfosW4fmUJgcERGRVaUdO4Z7q1cDAAInT4LC3d3GET1ZowolMa5ddoF2zNYz2P+3/Rdo5xZcIhgr2q5Arxq9AABrzq5Bty3dEJ8cb9vAHAiTIyIishpDVlZ2ixAh4N2hA0o0bWrrkAqkZ5MwvBFeFgYBDFjjOAXaRmqFGsMihmHh8wvho/HBmbtn0GlTJ2y7tM3WoTkEJkdERGQ1d5Z+hqx/zkNZsiRKjxpp63AKTJIkfNihJp4t6437aVr0XRWLtCzH62fWomwLfNv+W9QrXQ+p2lSM2DMCUw9ORYYuw9ah2TWnSY4uXbqEPn36oHz58nBzc0PFihUxceJEZGXlnWeNj49H+/bt4eHhAX9/fwwaNOiRc4iIqOgy//kHt5csAQAEfjAWKl9fG0dkHmOBtn8JF5xNfICR3zlOgXZugR6B+Dzqc/St1RcSJHxz7htEb4nGxSTHqqcqTk6THJ09exYGgwFLlizBqVOnMG/ePHz66acYO3as6Ry9Xo927dohNTUV+/fvx9q1a7F+/XoMGzbMhpETETkfodcj4YNxgFaLEpGR8HzxRVuHVChB3m5YFB0OlULCpj8SsHTvBVuHVCgqhQqD6g3Cp60/hZ+rH87dO4c3N72Jn87/ZOvQ7JIkHDENLqCPPvoIixcvxoUL2Tfz1q1b8fLLL+PKlSsIDg4GAKxduxa9evXCzZs34eXlle/7ZGZmIjMz0/RzcnIyQkJCkJSU9NjXEBHJ2d1VX+LG9OlQeHigwuZNUAcG2jqkIvny4CWM/+EUFBKw4q0GaFGllK1DKrRbabcwat8oHEk8AgB4rdJrGNNwDNxUbjaOzPqSk5Ph7e391O9vpxk5yk9SUhL8/PxMPx88eBA1a9Y0JUYAEBUVhczMTMTFxT32fWJiYuDt7W16hISEWDVuIiJHpr12DTc//hgAUHrEcIdPjACgW6Ny6BSRXaA9cM0xXL6TauuQCq2Ueyl89sJnePfZdyFBwoZ/NqDr5q44f/+8rUOzG06bHJ0/fx7z589Hv379TMcSExMREBCQ5zxfX1+4uLggMfHxDfvGjBmDpKQk0+PKlStWi5uIyJEJIZAwcRJEWhrcIyLg06mTrUOyCEmSMOXVmng2xAdJ6dk7aDtigbaRUqFE/zr98Vmbz+Dv5o9/7v+Dzps6Y+M/G20dml2w++Ro0qRJkCTpiY/Y2Ng8r7l+/Tratm2Ljh074u23387znCRJj3yGECLf40YajQZeXl55HkRE9KjkH39E6v79kFxcEDh1CiSF3X/NFJirWokl3cLhX0KDs4kPMOJbxyzQzq1hUEN82/5bNApqhAx9Bsb/Nh4f7P8AaVrH2rrA0uz+rh0wYADOnDnzxEfNmjVN51+/fh2RkZFo3Lgxli5dmue9AgMDHxkhunfvHrRa7SMjSkREZB7dnTu4MT0GAOD/3nvQlC9v44gsL9DbFZ92qwe1UsLmkwlYvMfxp6L83fyx5IUlGFh3IBSSAj+e/xFvbnoTf939y9ah2YxTFWRfu3YNkZGRCA8Px1dffQWlUpnneWNB9tWrVxEUFAQAWLduHXr27PnEgux/K2hBFxGRnFwbOgzJW7ZAU60ayn+zzq4ay1raV79fxriNf0KSgOW96qNV1dK2DskiYhNjMWrvKNxMvwmNUoNRDUbhjcpvPHF2xZHIriD7+vXraNWqFUJCQjB79mzcunULiYmJeUaK2rRpg+rVq6N79+44duwYfv31VwwfPhx9+/ZlkkNEVAQPdu1C8pYtgEKBoKlTnToxAoDohqHo0iAEQgCD1hzDpduOW6CdW0RgBL595Vs0K9MMmfpMTDk4BaP2jkJKVoqtQytWZiVHQghcvnwZ6enp1oqn0LZv345//vkHO3fuRNmyZREUFGR6GCmVSmzevBmurq5o2rQpOnXqhA4dOmD27Nk2jJyIyLHpU1KQOHkKAMDvrV5wq1nDxhFZnyRJmPRKDdQL9UFyhg7//TIWqZmOW6Cdm5+rHxY+vxBDw4dCJamw9dJWdNrUCafunLJ1aMXGrGk1g8EAV1dXnDp1CpUrV7ZmXHaN02pERDkSJk/G/TVroQ4NRYUfNkLh5vz75RjdSM7Ay/P349aDTLxUKxALu9ZzmikoADh+8zhG7h2JhNQEqBQqDAsfhuhq0Q77O1plWk2hUKBy5cq4c+dOkQMkIiLHl3bkCO6vWQsACJoyRVaJEQAEeOUUaG85mYhFux2/QDu3OqXr4Nv23+K5kOegM+gw88hMDNo5CPcz7ts6NKsyu+Zo1qxZGDFiBP78809rxENERA7CkJmJhPETAAA+HTvCo1FDG0dkG+Hl/DDl1exV07O3/4VdZ2/aOCLL8tZ44+PIjzG24VioFWrsvrobr//0OmITY5/+Ygdl9mo1X19fpKWlQafTwcXFBW7/+lvC3bt3LRqgPeK0GhERcHPuPNxZuhSqUqVQYfMmKGX+38OxG07i60Px8HRV4ccBzVDe38PWIVnc2btnMWLPCFxKvgSFpMC7z76LvrX6QqlQPv3FdqCg399mJ0crV6584vM9e/Y05+0cEpMjIpK7zAsXcaF9e0CvR9kF8+HZurWtQ7K5LJ0BXT77HXGX76Fy6RLY8F5TlNCobB2WxaVp0zDt0DT8eP5HANkbSc5oPgP+bv42juzprJYcEZMjIqL7GzYiYcwYuNWpg7C1a2wdjt24mZyB9gv240ZyJtrWCMTibs5VoJ3bD//8gGmHpiFdl46SriUR0zwGjYMb2zqsJ7LqPkfnz5/HuHHj0KVLF9y8mT23um3bNpw6JZ9lfkREciZ0WgCA0tfXxpHYl9JerljcLRwuSgW2nUrEwl3/2Dokq3m10qtY224tKvtWxp2MO3hnxztYcGwB9Aa9rUMrMrOToz179qBWrVo4dOgQvv/+e6SkZG8M9ccff2DixIkWD5CIiOyQLntPH0nlfNNGRVUv1BdTXs3e62nOjnPYefaGjSOyngo+FfD1S1+jY5WOEBBY8scS9P+1v8OvZjM7ORo9ejQ+/PBD7NixAy4uLqbjkZGROHjwoEWDIyIi+yS0D5MjNZOj/HRuEIrohqEQAnh/7XFcdJIdtPPjqnLFhMYTENM8Bq5KVxy4fiB708jbjjubZHZydPLkSbz22muPHC9VqhT3PyIikgmhfzh1omRy9DgT29dAeDlfPMjQ4R0n2kH7cV6u8DJWt1uNUM9QJKQmoPvW7vj23Le2DqtQzE6OfHx8kJCQ8MjxY8eOoUyZMhYJioiI7Jux5ojTao/nolJgUXQ9lPLU4NyNFIxc/wecfQ1UFd8qWPvyWkSGREJr0GLKwSn449Yftg7LbGYnR127dsWoUaOQmJgISZJgMBjw22+/Yfjw4ejRo4c1YiQiInvDmqMCCfByxeLoelApJGz+IwFL916wdUhW5+niiY8jP0bd0nUBABeTLto4IvOZnRxNmzYNoaGhKFOmDFJSUlC9enW0aNECTZo0wbhx46wRIxER2RmhezitpnKMzf9sKSLMDxNfyS7QnrntLPb9fcvGEVmfQlLA28UbAKAzON50otnJkVqtxurVq/H333/jm2++wVdffYWzZ8/iyy+/hFLJf0mIiORAmEaO1DaOxDF0axiKjuFlYRDAoDXHkKF1/OXuT6NSZI8qyiI5mjJlCtLS0lChQgW88cYb6NSpEypXroz09HRMmTLFGjESEZGdMdUc8S/FBSJJEqZ2qAkPFyXupWlx9V66rUOyOmNLEZ2QQXI0efJk095GuaWlpWHy5MkWCYqIiOzcw2k1LuUvOFe1Em4uxtEUg42jsT5ZjRwJIfLdCv3EiRPw8/OzSFBERGTfjNNqYEG2WVSK7O9Pnd65V60BgEpy3OSowHe1r68vJEmCJEmoUqVKngRJr9cjJSUF/fr1s0qQRERkX0w1R9znyCwqZfZ3p1bPkSN7VuC7+uOPP4YQAr1798bkyZPh7e1tes7FxQVhYWFo3Ni+G84REZFlCD2X8heGWpk9YaMzyGDkyJgcOWDNUYHv6p49ewIAypcvjyZNmkCt5goFIiLZYvuQQjFOq3HkyL6ZfVe3bNnS9Of09HRotdo8z3t5eRU9KiIismummiOuVjOL6uHIkV4OI0cPa470BsfbtsDsguy0tDQMGDAApUuXRokSJeDr65vnQUREzs/YW437HJlHrZRRQfbDkSOtQfuUM+2P2cnRiBEjsHPnTixatAgajQbLli3D5MmTERwcjFWrVlkjRiIisjPsrVY4Sk6rOQSz7+qffvoJq1atQqtWrdC7d280b94clSpVQrly5bB69WpER0dbI04iIrInxpojtg8xi1ohn4JsWW0CeffuXZQvXx5Adn3R3bt3AQDNmjXD3r17LRsdERHZJeO0Gvc5Mo+clvKrFdlTrrKoOapQoQIuXboEAKhevTq++eYbANkjSj4+PpaMjYiI7BR7qxWOsSBbFjVHDrwJpNnJ0VtvvYUTJ04AAMaMGWOqPRoyZAhGjBhh8QCJiMj+5NQccVrNHGrjDtlsH2LXzB4PHTJkiOnPkZGROHv2LGJjY1GxYkU8++yzFg2OiIjslLG3GqfVzGKcVpNDzZEsNoE0SktLg7u7u+nn0NBQhIaGWjQoIiKyb+ytVjgqhXym1YwF2Y64lN/su9rHxwcRERFo1aoVWrZsiWbNmsHDw8MasRERkZ1ib7XCkVNBtqw2gdyzZw9eeeUVHD16FB07doSvry8aNWqE0aNHY+vWrdaIkYiI7I2e7UMKQyWjpfyOXHNkdnLUuHFjjB49Gtu2bcO9e/ewd+9ePPPMM5gzZw5efvlla8RIRER2RmjZeLYwcnbIdv6RI+NSflnUHAHA2bNnsXv3buzZswe7d++GVqtF+/bt8/RdIyIi58XeaoWTM63m/CNHpk0gHXDkyOzkKDAwEFqtFs899xxatWqFsWPHolatWtaIjYiI7BR7qxWOcVqNjWftm9nTaoGBgUhJSUF8fDzi4+Nx9epVpKSkWCM2IiKyU6Z9jlhzZBaVsbeajPY5csTVamYnR8ePH8eNGzfwwQcfQKfTYfz48ShVqhQaNmyI0aNHWyNGIiKyN8aaI06rmUVWO2TLaZ8jIHs5/yuvvIJmzZqhadOm+OGHH/D1118jNjYWM2bMsHSMRERkZ9hbrXDkVJDtyKvVzL6rN2zYgN27d2P37t04deoUSpYsiebNm2PevHmIjIy0RoxERGRnTPscqVlzZA5jzZFWDjVHckqO3nnnHbRo0QJ9+/ZFq1atULNmTWvERUREdixnE0hOq5lDJaeRIwcuyDY7Obp586Y14iAiIkei4z5HhaGWY281Bxw5Mrsgm4iI5E3o9YB4+OXO5Mgscuqt5sgF2UyOiIjILKYNIMGRI3OZptVksJRfVo1nqWD0ej20Wse7IeyRWq2GknUNRPaDyVGhmQqyZTBypJayi/VlUXNETyaEQGJiIu7fv2/rUJyKj48PAgMDIUmSrUMhkj2OHBWerAqyHbjmiHe1hRkTo9KlS8Pd3Z1f5kUkhEBaWpppIUBQUJCNIyKi3MkRa47MI8uCbAesOTL7rs7IyMD8+fOxa9cu3Lx5E4Z/zZsePXrUYsE5Gr1eb0qMSpYsaetwnIabmxuA7JWSpUuX5hQbkY0J3cNpEqWSfwE0k5wKso01RwZhgEEYoJAcp8zZ7OSod+/e2LFjB9544w00aNCA/2LkYqwxcnd3t3Ekzsd4TbVaLZMjIlsz9lXjqJHZ1DIqyDaOHAHZU2suShcbRmMes+/szZs3Y8uWLWjatKk14nEKTBgtj9eUyH5wA8jCU8qoINu4CSTgeMmR2WNcZcqUgaenpzViISIiB2Dqq8bWIWaT01J+tSLn/nC0uiOzk6M5c+Zg1KhRuHz5sjXiISIiOye03B27sNQyrDkCHG/FmtnJUUREBDIyMlChQgV4enrCz88vz4McU69evSBJEmbMmJHn+MaNGws8paXX69GkSRO8/vrreY4nJSUhJCQE48aNs1i8RGQ7wlhzxGk1sxlHjrQyWMqvkBSmImxHS47MTvu7dOmCa9euYfr06QgICGAtiBNxdXXFzJkz8c4778DX19fs1yuVSqxcuRJ16tTB6tWrER0dDQAYOHAg/Pz8MGHCBEuHTES28HBajSNH5pPTUn4gu+4oS2Q53EaQZt/ZBw4cwMGDB/Hss89aIx6yodatW+Off/5BTEwMZs2a9cjzd+7cwYABA7Bv3z7cvXsXFStWxNixY9GlSxfTOZUrV0ZMTAwGDhyIyMhIHDlyBGvXrsXhw4fh4uI4xXhE9HimfY7UTI7MJael/ED2irUsQ5bzjxw988wzSE9Pt0YsTkkIgXStbTJmN7V5e5AolUpMnz4dXbt2xaBBg1C2bNk8z2dkZCA8PByjRo2Cl5cXNm/ejO7du6NChQpo2LCh6byBAwdiw4YN6NGjB06ePIkJEyagTp06lvq1iMjGTDVHSiZH5lIq5FOQDeQs59cKx2qnZfadPWPGDAwbNgzTpk1DrVq1oP7XagUvLy+LBecM0rV6VJ/ws00++/SUKLi7mPd/8WuvvYY6depg4sSJ+Pzzz/M8V6ZMGQwfPtz088CBA7Ft2zZ8++23eZIjSZKwePFiVKtWDbVq1cLo0aOL9osQkX3RsyC7sNRK+Y0cAY5Xc2R2QXbbtm1x8OBBPP/88yhdujR8fX3h6+sLHx+fQtWpWENmZibq1KkDSZJw/PjxPM/Fx8ejffv28PDwgL+/PwYNGoSsrCzbBGqnZs6ciZUrV+L06dN5juv1ekybNg21a9dGyZIlUaJECWzfvh3x8fGPvMcXX3wBd3d3XLx4EVevXi2u0ImoGJj2OWJyZDY5FWQDOXsdOVpyZPadvWvXLmvEYVEjR45EcHAwTpw4kee4Xq9Hu3btUKpUKezfvx937txBz549IYTA/PnzrRKLm1qJ01OirPLeBfnswmjRogWioqIwduxY9OrVy3R8zpw5mDdvHj7++GPUqlULHh4eGDx48CPJ5cGDBzFv3jxs3boVs2bNQp8+ffDLL7+weJ/ISZhqjpgcmc20lF8uBdkPR46cviC7ZcuW1ojDYrZu3Yrt27dj/fr12Lp1a57ntm/fjtOnT+PKlSsIDg4GkP2F36tXL0ybNs0qU4KSJJk9tWUPZsyYgTp16qBKlSqmY/v27cOrr76Kbt26AQAMBgP+/vtvVKtWzXROeno6evbsiXfeeQetW7dGlSpVULNmTSxZsgT9+vUr9t+DiCyPI0eFZ9oEUm7Tag62CWSh7+y0tDTEx8c/MmpQu3btIgdVWDdu3EDfvn2xcePGfPubHTx4EDVr1jQlRgAQFRWFzMxMxMXFITIyMt/3zczMRGZmpunn5ORkywdvZ2rVqoXo6Og8I2qVKlXC+vXrceDAAfj6+mLu3LlITEzMkxyNHj0aBoMBM2fOBACEhoZizpw5GDp0KNq2bYuwsLDi/lWIyNKYHBWanHbIBmRUc3Tr1i28/PLL8PT0RI0aNVC3bt08D1sRQqBXr17o168fIiIi8j0nMTERAQEBeY75+vrCxcUFiYmJj33vmJgYeHt7mx4hISEWjd1eTZ06FULk/O1m/PjxqFevHqKiotCqVSsEBgaiQ4cOpuf37NmDhQsXYsWKFfDw8DAd79u3L5o0aYI+ffrkeT8ickw5I0fcBNJcxqX8BgEYZDC1ZtwlW2tw8tVqgwcPxr179/D7778jMjISGzZswI0bN/Dhhx9izpw5Fg9w0qRJmDx58hPPOXLkCA4cOIDk5GSMGTPmiefmV/cihHhiPcyYMWMwdOhQ08/JyclOlyCtWLHikWPlypVDRkaG6Wc/Pz9s3Ljxse/RsmVL6HT5/+3g559ts2KPiCxP6B7Wj3DkyGzGkSMA0BoM0CicO8E0FmQ7fc3Rzp078cMPP6B+/fpQKBQoV64cXnjhBXh5eSEmJgbt2rWzaIADBgxA586dn3hOWFgYPvzwQ/z+++/QaDR5nouIiEB0dDRWrlyJwMBAHDp0KM/z9+7dg1arfWREKTeNRvPI+xIRyZWpfYiKjWfNZSzIBrLrjjROnl8am8862rSa2f+3pKamonTp0gCyRxJu3bqFKlWqoFatWjh69KjFA/T394e/v/9Tz/vf//6HDz/80PTz9evXERUVhXXr1pn24GncuDGmTZuGhIQEBAUFAcgu0tZoNAgPD7d47EREzsg0rcbeambLPXIkh6Js2RRkV61aFX/99RfCwsJQp04dLFmyBGFhYfj0009NCYcthIaG5vm5RIkSAICKFSuadnpu06YNqlevju7du+Ojjz7C3bt3MXz4cPTt25ebVxIRFdTDaTWJ7UPMplLknVZzdsaaI6cfORo8eDASEhIAABMnTkRUVBRWr14NFxeXfOtW7IlSqcTmzZvRv39/NG3aFG5ubujatStmz55t69CIiBwG9zkqPEmSoFJI0BkE9DIoyJbNJpDGTusAULduXVy6dAlnz55FaGhogaa/iktYWFi+K6NCQ0OxadMmG0REROQccqbVmBwVhvJhciSHXbJlsZRfq9WiQoUKedpKuLu7o169enaVGBERkRWxt1qRyKm/mqPWHJmVHKnVamRmZrINBBGRjAntw+SINUeFIqeNIGUxcgRkd2KfOXPmY/ezISIi52aqOeK0WqEYN4LUymHkSC41R4cOHcKvv/6K7du3m5qP5vb9999bLDgiIrI/gtNqRaKWUX812TSe9fHxweuvv26NWIiIyBGwt1qRyHJazcFqjsy+s5cvX26NOMiG9Ho9mjdvjqCgIKxfv950PCkpCTVr1kTPnj3zbLBJRPJmrDkCe6sVinGXbJ0clvI/TI4crbea2TVH5HyUSiVWrlyJbdu2YfXq1abjAwcOhJ+fHyZMmGDD6IjI3gj9w00gOXJUKMqHG0HKYSm/UpLJJpB169bNd7WaJElwdXVFpUqV0KtXL0RGRlokQCoelStXRkxMDAYOHIjIyEgcOXIEa9euxeHDh+Hi4mLr8IjIjrC3WtGoZLiU39FqjsweOWrbti0uXLgADw8PREZGolWrVihRogTOnz+P+vXrIyEhAa1bt8YPP/xgjXgdjxBAVqptHvlsgvkkAwcOxLPPPosePXrgv//9LyZMmIA6depY57oQkeMy1RxxWq0w1DKqOZJN49nbt29j2LBhGD9+fJ7jH374IS5fvozt27dj4sSJmDp1Kl599VWLBeqwtGnA9GDbfPbY64CLx9PPe0iSJCxevBjVqlVDrVq1MHr0aCsGR0SOSug4rVYUKtO0mnxGjhytINvskaNvvvkGXbp0eeR4586d8c033wAAunTpgr/++qvo0VGx++KLL+Du7o6LFy/i6tWrAIB+/fqhRIkSpgcRyRt7qxWNcVpNFr3VHHQTSLPvbFdXVxw4cACVKlXKc/zAgQNwdXUFABgMBmg0GstE6OjU7tkjOLb6bDMcPHgQ8+bNw9atWzFr1iz06dMHv/zyC6ZMmYLhw4dbKUgicjTsrVY0xmk1FmTbL7Pv7IEDB6Jfv36Ii4tD/fr1IUkSDh8+jGXLlmHs2LEAgJ9//hl169a1eLAOSZLMmtqylfT0dPTs2RPvvPMOWrdujSpVqqBmzZpYsmQJ+vXrh9KlS9s6RCKyFzq2DykKpUJ+BdlOnxyNGzcO5cuXx4IFC/Dll18CAKpWrYrPPvsMXbt2BZA9DfPuu+9aNlKyqtGjR8NgMGDmzJkAgNDQUMyZMwdDhw5F27ZtERYWZtsAichuCG4CWSRqhXwKsh215qhQd3Z0dDSio6Mf+7ybm1uhA6Lit2fPHixcuBC7d+/O0w6mb9+++O6770zTa2w4TEQAe6sVlUopw4JsZx85MoqLi8OZM2cgSRKqV6/OaTQH1rJly8c2Ev7555+LORoisnfsrVY0OfscyWDkSC6NZ2/evInOnTtj9+7d8PHxgRACSUlJiIyMxNq1a1GqVClrxElERPZCy5qjosiZVpPPyJHTbwI5cOBAJCcn49SpU7h79y7u3buHP//8E8nJyRg0aJA1YiQiIjuSM63GTSALwzRyJKPkSCscq7ea2Wn/tm3b8Msvv6BatWqmY9WrV8fChQvRpk0biwZHRET2J6e3GtuHFIZxE0hZTKs5aM2R2SNHBoMBavWj/0Ko1WoYZFB5T0Qkdzm91TitVhgsyLZ/ZidHzz33HN5//31cv56zseG1a9cwZMgQPP/88xYNjoiI7JCWvdWKQmXc50gGAwqOWpBtdnK0YMECPHjwAGFhYahYsSIqVaqE8uXL48GDB5g/f741YiQiIjuSM63GkaPCMDWeldHIkaMVZJt9Z4eEhODo0aPYsWMHzp49CyEEqlevjtatW1sjPiIisjM5vdVYc1QYxoJsWU2ryWETSAB44YUX8MILL1gyFiIicgA5O2RzWq0wjEv59XKYVnPQmqMCJUf/+9//CvyGXM5PROTk2D6kSIy91bQyWMrv1I1n582bV6A3kySJyRERkZNjb7WiUSm5lN/eFejOvnjxorXjIBvr1asX7t+/j40bN5qOfffdd+jWrRumTJmCuLg4XLp0CQcOHIDy4cZvWq0WDRs2RPXq1fHVV1/ZKHIiKm45NUdMjgpDTgXZakV2XZqj1RyZvVqN5GHZsmWIjo7GggULMHLkSCxatAiXL1/GjBkzTOdMnToViYmJXKVIJDNcrVY0KhlNqzn1yNHQoUMxdepUeHh4YOjQoU88d+7cuRYJjGxn1qxZmDBhAr7++mu8/vrrAICSJUti6dKl6NixI9q3bw+tVouYmBj88MMP8PX1tXHERFRchBCAlptAFoWa02p2r0B39rFjx6B9+C/DsWPHrBqQsxFCIF2XbpPPdlO5QZIks14zevRoLFy4EJs2bXpke4ZXXnkFnTt3Ro8ePaDVatGzZ0+89NJLlgyZiOydPtd+NeytVihy6q3m1AXZu3btyvfP9HTpunQ0/LqhTT77UNdDcFe7F/j8rVu34ocffsCvv/6K5557Lt9zPvnkEwQHB8PLy4ujhEQyJHIlR1I+raTo6ZQy7K2mF461CaTZNUe//vrrY59bsGBBkYIh26pduzbCwsIwYcIEPHjwIN9zvv76a0iShNu3b+Ps2bPFHCER2ZrQ5owAcFqtcEzTajIYOTImR1qD1saRmMfsO/v111/Hjh07UL9+/TzHP/74Y0yYMAEDBgywWHDOwE3lhkNdD9nss81RpkwZrF+/HpGRkWjbti22bdsGT09P0/MXLlzAyJEjsWDBAvz222/o1asXjh07Bo1GY+nQiche6XK+5CROqxWKqSBbRiNHOoMOQgizSz1sxeyRo3nz5uGll17C6dOnTcdmz56NiRMnYvPmzRYNzhlIkgR3tbtNHoW5CUNDQ7Fnzx7cvHkTbdq0QXJyMgDAYDDgrbfeQqtWrfDWW29h7ty5SElJwcSJEy19yYjIjuWeVuNS/sKR01J+Y+NZwLGm1sy+s9966y3cuXMHbdq0wf79+7Fu3TpMnz4dW7duRZMmTawRIxWzsmXLYvfu3YiMjESbNm3w888/44svvsDJkydx6tQpAICXlxeWLVuGdu3a4T//+Q8aNGhg46iJqDjk3uPIUUYB7I0cl/ID2cmRqvBdy4pVoaIcPnw47ty5g4iICOj1emzfvh0NG9qm6Jiso0yZMtizZw8iIyNRvnx5ZGRkYNmyZQgKCjKd06ZNG7z11lucXiOSEWPNEafUCs+4Q7aceqsB2VNrGqVjfE8UurdaUFAQ3N3d0aJFCxw6dAiHDmXX1bB9iGNasWLFI8eCgoKeWnS9dOlSK0VERHZJz9YhRaU2LuWXw7Tav5IjR1Gk3mpKpRK//fYbfvvtNwDsrUZE5OzYV63ojEv55VCQbdznCHCsFWvsrUZERAXGvmpFJ6el/JIkQSWpoBM6hxo5Ym81IiIqMI4cFZ2xIFsO02qAY24EyeSIiIgKjslRkRkLsuUwrQY4Zn81JkdERFRgOdNqXK1WWGoZ9VYDmBwREZGTE7rsqRFJxb5qhaWSUW81wDGbz5qVHOl0OkyePBlXrlyxVjxERGTHxMP2IZxWKzxTzZHcRo6EkyZHKpUKH330EfR6xymqIiIiC9JxE8iiUsmofQggk2m11q1bY/fu3VYIhYiI7J2pt5qaI0eFZSrIlsEO2QCgVmRPwTpScmT23f3iiy9izJgx+PPPPxEeHg4PD488z7/yyisWC46IiOyLqX0Ia44KTf1wWk0IQG8Qpk0hnZUsRo7effdd3LhxA3PnzkV0dDQ6dOhgerz22mvWiJGKUWJiIgYOHIgKFSpAo9EgJCQE7du3x6+//lqg1y9atAg+Pj6P1KUNGDAAVapUQVpaGrRaLUaNGoVatWrBw8MDwcHB6NGjB65fv26NX4mILMhUc8RptUIzjhwB8ljO7/QF2QBgMBge+2AtkmO7dOkSwsPDsXPnTsyaNQsnT57Etm3bEBkZiffee69A7/Huu++iQYMG6NOnj+nYzp07sWTJEqxYsQLu7u5IS0vD0aNHMX78eBw9ehTff/89zp07x1FHIkegN65W47RaYRmX8gPZI0fOzhE3gSzS3Z2RkQFXV1dLxeKUhBAQ6ek2+WzJzQ2SVPDh2v79+0OSJBw+fDjPdGmNGjXQu3dvAMDcuXOxfPlyXLhwAX5+fmjfvj1mzZqFEiVKZH+mJOHzzz9HrVq18Omnn6Jr16546623MGTIEDRp0gQA4O3tjR07duT57Pnz56NBgwaIj49HaGhoUX91IrIS47Qaa44KL/c0mhyKso3JkdP1VstNr9dj+vTp+PTTT3Hjxg2cO3cOFSpUwPjx4xEWFpZnxIAAkZ6Ov+qF2+Szqx6Ng+TuXqBz7969i23btmHatGmP1JEBgI+PDwBAoVDgf//7H8LCwnDx4kX0798fI0eOxKJFi0znhoSEYN68eRg0aBC2bNmCEiVKYOrUqU/8/KSkJEiSZPocIrJPpvYhSiZHhaXKlRzJoShbFjVH06ZNw4oVKzBr1iy4uLiYjteqVQvLli2zaHBUfP755x8IIfDMM8888bzBgwcjMjIS5cuXx3PPPYepU6fim2++eeS8t956CzVr1sRPP/2E5cuXQ6PRPPY9MzIyMHr0aHTt2hVeXl5F/l2IyHqEnu1DikqSpFwbQcpg5EhyvOTI7Lt71apVWLp0KZ5//nn069fPdLx27do4e/asRYNzBpKbG6oejbPZZxeUENn/gj5tGm7Xrl2YPn06Tp8+jeTkZOh0OmRkZCA1NTXPiNOJEycQFxcHd3d37Nu3Dw0aNMj3/bRaLTp37gyDwZBn9ImI7BR7q1mESilBZxCyKMh2xJojs0eOrl27hkqVKj1y3GAwQKt1nPnE4iJJEhTu7jZ5mFNvVLlyZUiShDNnzjz2nMuXL+Oll15CzZo1sX79esTFxWHhwoUAkOf/+6ysLPTo0QNdunTBkiVLMG7cOJw7d+6R99NqtejUqRMuXryIHTt2cNSIyAGYao7YW61I1DLaJVsW02o1atTAvn37Hjn+7bffom7duhYJqig2b96Mhg0bws3NDf7+/vjPf/6T5/n4+Hi0b98eHh4e8Pf3x6BBg5CVlWWjaO2Hn58foqKisHDhQqSmpj7y/P379xEbGwudToc5c+agUaNGqFKlSr7L76dMmYI7d+7gk08+Qbdu3RAVFYW33noLhlxz68bE6O+//8Yvv/yCkiVLWvX3IyLLEHr2VrME43J+PWuO7JLZ46ITJ05E9+7dce3aNRgMBnz//ff466+/sGrVKmzatMkaMRbY+vXr0bdvX0yfPh3PPfcchBA4efKk6Xm9Xo927dqhVKlS2L9/P+7cuYOePXtCCIH58+fbMHL7sGjRIjRp0gQNGjTAlClTULt2beh0OuzYsQOLFy/GmjVroNPpMH/+fLRv3x6//fYbPv300zzvERsbi5kzZ+Knn34yFVd/+umnqFGjBubNm4dhw4ZBp9PhjTfewNGjR7Fp0ybo9XokJiYCyE7ScteyEZF9YW81y1A+HDnSyqHmyAFXq0EUwrZt20SLFi2Eh4eHcHNzE02bNhU///xzYd7KYrRarShTpoxYtmzZY8/ZsmWLUCgU4tq1a6Zja9asERqNRiQlJRX4s5KSkgSAR16Tnp4uTp8+LdLT083/BezE9evXxXvvvSfKlSsnXFxcRJkyZcQrr7widu3aJYQQYu7cuSIoKEi4ubmJqKgosWrVKgFA3Lt3T2RkZIjq1auLvn37PvK+q1evFq6uruLs2bPi4sWLAkC+D+Pn/JszXFsiZ3Dzk0/E6arPiITJk20dikNrNP0XUW7UJvHHlfu2DsXqRu4ZKWquqClW/rnS1qE89vv73wqV+kdFRSEqKspC6ZllHD16FNeuXYNCoUDdunWRmJiIOnXqYPbs2ahRowYA4ODBg6hZsyaCg4NNr4uKikJmZibi4uIQGRmZ73tnZmYiMzPT9HNycrJ1fxkbCgoKwoIFC7BgwYJ8nx8yZAiGDBmS51j37t1Nfz516lS+r+vatSu6du1q+lkI5//bEpEzErqHRbUcOSoSOfVXM02rCceZVjO75sgoNjYWX375Jb766ivExdlmNVZuFy5cAABMmjQJ48aNw6ZNm+Dr64uWLVvi7t27ALJbYwQEBOR5na+vL1xcXEzTOvmJiYmBt7e36RESEmK9X4SIyI6Z9jlizVGRmAqyZTCt5oiNZ81Ojq5evYrmzZujQYMGeP/99zFo0CDUr18fzZo1e6SfliVMmjQJkiQ98REbG2sq9v3ggw/w+uuvIzw8HMuXL4ckSfj2229N75ffCi4hxBNXdo0ZMwZJSUmmhzV+TyIiR8DeapZhHDnSyWgpvyMlR2aPi/bu3RtarRZnzpxB1apVAQB//fUXevfujT59+mD79u0WDXDAgAHo3LnzE88JCwvDgwcPAADVq1c3HddoNKhQoQLi4+MBAIGBgTh06FCe1967dw9arfaREaXcNBrNEzcxJCKSjYfTahLbhxSJSkZL+R2x8azZd/e+fftw4MABU2IEAFWrVsX8+fPRtGlTiwYHAP7+/vD393/qeeHh4dBoNPjrr7/QrFkzANnLxS9duoRy5coBABo3boxp06YhISEBQUFBAIDt27dDo9EgPNw2LT6IiByJcVqNNUdFYxo5Ys2RXTL77g4NDc13s0edTocyZcpYJKjC8PLyQr9+/TBx4kSEhISgXLly+OijjwAAHTt2BAC0adMG1atXR/fu3fHRRx/h7t27GD58OPr27WvRDQhZbGx5vKZE9oG91SzD2D5ETkv5HWnkyOyao1mzZmHgwIGIjY01fWHFxsbi/fffx+zZsy0eoDk++ugjdO7cGd27d0f9+vVx+fJl7Ny5E76+vgAApVKJzZs3w9XVFU2bNkWnTp3QoUMHi8WtVmcXnaWlpVnk/SiH8ZoarzER2Qh7q1mESimfgmxHTI7Mvrt79eqFtLQ0NGzYEKqH/3LodDqoVCr07t0bvXv3Np1rXCVWXNRqNWbPnv3EZCc0NNRqm1UqlUr4+Pjg5s2bAAB3M1t40KOEEEhLS8PNmzfh4+MDJYtAiWzK2D6ENUdFo5bjtJozJ0cff/yxFcJwHoGBgQBgSpDIMnx8fEzXlohsx1RzxL+oFIlKTjtkS47XeNbs5Khnz57WiMNpSJKEoKAglC5dmo14LUStVnPEiMhOsLeaZai5lN+ucVzUSpRKJb/QicjpsLeaZSgVxmk1GYwcOWBvtULvkE1ERDJkrDlS8S9/RZFTkM2RI3vE5IiIiArMOK3GfY6KRi2jkSNH3ASSyRERERUYe6tZhnHkSA4F2cbeao5UkF3k5Cg5ORkbN27EmTNnLBEPERHZsZyaI06rFQULsu2b2clRp06dsGDBAgBAeno6IiIi0KlTJ9SuXRvr16+3eIBERGRHjL3VOK1WJKal/DKYVpNFcrR37140b94cALBhwwYIIXD//n3873//w4cffmjxAImIyH6wt5plGHur6bkJpF0yOzlKSkqCn58fAGDbtm14/fXX4e7ujnbt2uHvv/+2eIBERGQ/2FvNMoy91eTQPsRUkO1AjWfNTo5CQkJw8OBBpKamYtu2bWjTpg0A4N69e3B1dbV4gEREZEd0bB9iCXIqyHbEkSOz7+7BgwcjOjoaJUqUQGhoKFq1agUge7qtVq1alo6PiIjsSM5qNSZHRZGzlJ/TavbI7Lu7f//+aNCgAa5cuYIXXngBiodFZRUqVGDNERGRk8vprcbkqCjkNHJkXMrv1MkRAERERKB27dq4ePEiKlasCJVKhXbt2lk6NiIisjOm3mqcVisSlYyW8stiE8i0tDT06dMH7u7uqFGjBuLj4wEAgwYNwowZMyweIBER2REte6tZgvrhrIteRkv5nXoTyDFjxuDEiRPYvXt3ngLs1q1bY926dRYNjoiI7EvOajVuAlkUxsazctrnyJEaz5qd+m/cuBHr1q1Do0aNIEmS6Xj16tVx/vx5iwZHRET2Jae3GtuHFAV3yLZvZo8c3bp1C6VLl37keGpqap5kiYiInI/gUn6LkFNBtiySo/r162Pz5s2mn40J0WeffYbGjRtbLjIiIrIrQoicfY44rVYkKjkt5Zccr+bI7NQ/JiYGbdu2xenTp6HT6fDJJ5/g1KlTOHjwIPbs2WONGImIyB7oc77cWJBdNOqHI0dy2CFbFiNHTZo0wW+//Ya0tDRUrFgR27dvR0BAAA4ePIjw8HBrxEhERHbAtMcRwJqjIjIt5ZfDyJEDJkeFSv1r1aqFlStXWjoWIiKyY7mTI0nFabWikFNvtdxL+YUQDlGfXKDkKDk5ucBv6OXlVehgiIjIjuVJjjitVhSqh/scyWEpv3ETSCB79EittP9RxwLd3T4+Pk/N9IzZoF7vOAVXRERUcHmm1ViQXSRy2iHb2D4EAHRCBzWcJDnatWuXteMgIiI7Z0qOVCqHmBqxZ3IsyAYcp+6oQMlRy5YtrR0HERHZOaF72FeNU2pFpjLtkO38I0dOmxz92/379/H555/jzJkzkCQJ1atXR+/eveHt7W3p+IiIyF7o2FfNUoybQMqht5pCUkAhKWAQBodJjsxeyh8bG4uKFSti3rx5uHv3Lm7fvo25c+eiYsWKOHr0qDViJCIiO8C+apYjp9VqQE5RtqNsBGl2+j9kyBC88sor+Oyzz6B6+LcHnU6Ht99+G4MHD8bevXstHiQREdmeqa+a2v4Lau2dsSBbK4OCbCB7ak1r0DpM81mzk6PY2Ng8iREAqFQqjBw5EhERERYNjoiI7IfQPhw54rRakZkKsmUwrQY43kaQZk+reXl5IT4+/pHjV65cgaenp0WCIiIiO2SsOeK0WpGZCrJlMnJkXM7vtMnRm2++iT59+mDdunW4cuUKrl69irVr1+Ltt99Gly5drBEjERHZAeO0GkeOik5OS/mBnJojR0mOzL7DZ8+eDUmS0KNHD+geFuep1Wq8++67mDFjhsUDJCIi+2CcVoOayVFRyam3GpC3hYgjMPsOd3FxwSeffIKYmBicP38eQghUqlQJ7u7u1oiPiIjsRM5qNSZHRaU0rlZjzZFdKvQd7u7ujlq1alkyFiIismd6FmRbivphbzUhsvc6MiZLzsqYHDndarXevXsX6Lwvvvii0MEQEZH9Mo0cMTkqMuO0GpBdlK1UOHeRu9OOHK1YsQLlypVD3bp1IYQ8hgGJiCiHqeaIyVGRGQuyAXlMrakkJ6056tevH9auXYsLFy6gd+/e6NatG/z8/KwZGxER2RHBaTWLUeWaRtPJYDm/o40cFXgp/6JFi5CQkIBRo0bhp59+QkhICDp16oSff/6ZI0lERHLAaTWLyV1jpJXBcn6nTY4AQKPRoEuXLtixYwdOnz6NGjVqoH///ihXrhxSUlKsFSMREdkBY80RVM5dH1McJEmC+mHdkRyazzp1cpSbJEmQJAlCCBhksk8DEZGcCZ1xE0j2VrMEpYx2yTZtAimcMDnKzMzEmjVr8MILL6Bq1ao4efIkFixYgPj4eJQoUcJaMRIRkR0QxvYhnFazCONyflkUZDvYyFGB7/D+/ftj7dq1CA0NxVtvvYW1a9eiZMmS1oyNiIjsiWkTSE6rWYJpl2wZjBw5bXL06aefIjQ0FOXLl8eePXuwZ8+efM/7/vvvLRYcERHZD9O0GtuHWITq4XJ+ORRkO1rj2QLf4T169IAkOfcOnkRE9Hg5BdlMjixBrZBPfzXjPkdOlxytWLHCimEQEZG9M9UcsbeaRRhHjuRQc2TcAdxRNoEs9Go1IiKSGb1xtRqTI0swbgSpk8G0mqP1VmNyREREBWJsH8KaI8tgQbb9YnJEREQFYqo54rSaRageLuXXymBazdFqjpgcERFRgbC3mmWpZThyxJojIiJyLuytZlFyWsrPaTUiInJKxpoj9lazDGNBNnur2R8mR0REVCBCz95qlmQqyJbDPkdcrUZERM6IvdUsy1SQLYdpNRZkExGRUzLVHHFazRLkVJDNTSBt6Ny5c3j11Vfh7+8PLy8vNG3aFLt27cpzTnx8PNq3bw8PDw/4+/tj0KBByMrKslHERESOw9hbje1DLENOS/kdrbeaUyVH7dq1g06nw86dOxEXF4c6derg5ZdfRmJiIgBAr9ejXbt2SE1Nxf79+7F27VqsX78ew4YNs3HkRET2T3C1mkVxE0j75TTJ0e3bt/HPP/9g9OjRqF27NipXrowZM2YgLS0Np06dAgBs374dp0+fxldffYW6deuidevWmDNnDj777DMkJyfb+DcgIrJv7K1mWWpjbzXWHNkdp0mOSpYsiWrVqmHVqlVITU2FTqfDkiVLEBAQgPDwcADAwYMHUbNmTQQHB5teFxUVhczMTMTFxT32vTMzM5GcnJznQUQkOw+n1dg+xDKUxt5qMphWM9Yc6YRjJEdOc4dLkoQdO3bg1VdfhaenJxQKBQICArBt2zb4+PgAABITExEQEJDndb6+vnBxcTFNveUnJiYGkydPtmb4RER2j9NqliWngmxOq1nYpEmTIEnSEx+xsbEQQqB///4oXbo09u3bh8OHD+PVV1/Fyy+/jISEBNP7SZL0yGcIIfI9bjRmzBgkJSWZHleuXLHK70pEZM/YW82y5FSQ7WjJkd3f4QMGDEDnzp2feE5YWBh27tyJTZs24d69e/Dy8gIALFq0CDt27MDKlSsxevRoBAYG4tChQ3lee+/ePWi12kdGlHLTaDTQaDRF/2WIiByYqbcap9UsggXZ9svu73B/f3/4+/s/9by0tDQAgEKRdzBMoVDA8HD30caNG2PatGlISEhAUFAQgOwibY1GY6pLIiKix9ByWs2STAXZMhg5Uktcym8TjRs3hq+vL3r27IkTJ07g3LlzGDFiBC5evIh27doBANq0aYPq1auje/fuOHbsGH799VcMHz4cffv2NY02ERFR/nKm1bgJpCUYe6tpZTByxE0gbcTf3x/btm1DSkoKnnvuOURERGD//v344Ycf8OyzzwIAlEolNm/eDFdXVzRt2hSdOnVChw4dMHv2bBtHT0Rk/9hbzbLYeNZ+OdXYaEREBH7++ecnnhMaGopNmzYVU0RERM7DtM8Ra44sQqWUUW81Np4lIiKnZKw54rSaRciqIJubQBIRkTMyTquxt5plqBXyKcg2jhyx5oiIiJxKziaQrDmyBOPIkRwKsh2t5ojJERERFUhOcsRpNUtQyam3GpMjIiJySmwfYlFqGfVWY80RERE5JfZWs6ycxrOcVrM3TI6IiKhATJtAMjmyCLWMptWMm0DqBJMjIiJyEkIIwLQJJJMjS5BTQbZawfYhRETkbHQ5X2pMjixDJcOl/EyOiIjIaYhcyRGUTI4sQS3DTSAFBPQG+9/riMkRERE9lWkDSLB9iKWYlvLLYOTIWHMEOMZGkEyOiIjoqYQ2pycWp9Usw9h4Vg4F2cZpNcAxptaYHBER0dPlnlZT8KvDEozJkVZGS/kBx2g+yzuciIieyjStplZDkiTbBuMkZLVDtsSRIyIicjLcANLy5FSQLUmSQ+2SzeSIiIieylhzJCnZV81SjEv5tTIoyAZyirJZkE1ERM6BG0BanJxGjgDH2uuIyRERET2VaZ8jLuO3GKWMGs8CTI6IiMjJCO3DmiNuAGkxcuqtBuQUZXO1GhEROQc9C7ItzdhbTSeDpfwAa46IiMjJcLWa5ZkKsvUiu7Gvk3Ok5rNMjoiI6KlMNUcqrlazFGNBNgDoZVB3xJojIiJyKkJnXK2mtnEkzsO4CSQgj6Js7nNERERORei4z5GlGduHADJJjowjR4LJEREROQPWHFlcnuRIBnsdGQuyOXJEREROwTitxn2OLEeZKznSymA5P2uOiIjIqZhWq3GfI4uRJClnl2wZLOdnzRERETkVU80Rp9UsyricXw4bQXIpPxERORf2VrMK40aQWhnVHHETSCIicgrG9iFgcmRRxqJs7nNkX5gcERHRU3GHbOsw7nUki4Js9lYjIiKnwt5qVqFWyKggmyNHRETkTHJGjrgJpCXJauToYXLEmiMiInIKrDmyDmNBthw2geTIERERORVhmlZjbzVLUhuX8rMg264wOSIioqfK2QSS02qWpDTVHMkgOeImkERE5FSMyRHbh1iUWobTalytRkRETsHUW401RxYlp4JsbgJJREROhb3VrEPFpfx2ickRERE9FXurWYdaKZ/eaqw5IiIi5/JwWo01R5Ylp95qbDxLREROxTitBk6rWZTq4VJ+OfVWY80RERE5BfZWsw5jzZFWBsmRsSCbq9WIiMg5sLeaVchqh2zWHBERkTPJaR/CTSAtSVYF2VytRkREzoTTataRM60mg5EjJkdERORM2FvNOlQyHDliQTYRETkH08gRp9UsSY7tQzhyRERETsFYc8RpNcti41n7xOSIiIieSujZW80aTAXZckiO2HiWiIicCQuyrcNUkC2jaTXWHBERkVNgbzXrkGNBNqfViIjIORh7qzE5sii1qeZIBiNHrDkiIiJnwt5q1mEcOdJy5MiuOExyNG3aNDRp0gTu7u7w8fHJ95z4+Hi0b98eHh4e8Pf3x6BBg5CVlZXnnJMnT6Jly5Zwc3NDmTJlMGXKFAjh/DclEVFRmGqO1EyOLMlYcySnxrM6Yf/JkcPc5VlZWejYsSMaN26Mzz///JHn9Xo92rVrh1KlSmH//v24c+cOevbsCSEE5s+fDwBITk7GCy+8gMjISBw5cgTnzp1Dr1694OHhgWHDhhX3r0RE5DhYkG0Vxt5qcijINjaedYSRI4e5yydPngwAWLFiRb7Pb9++HadPn8aVK1cQHBwMAJgzZw569eqFadOmwcvLC6tXr0ZGRgZWrFgBjUaDmjVr4ty5c5g7dy6GDh0KSZKK69fJl/baNZt+PhHR4xiMo/BKbgJpScZptQcZOly9l2bjaKzrbkp2UpSmzUDctfNPPb9uUHkoFLaZ4HKY5OhpDh48iJo1a5oSIwCIiopCZmYm4uLiEBkZiYMHD6Jly5bQaDR5zhkzZgwuXbqE8uXL5/vemZmZyMzMNP2cnJxsld/h/IsvQfxrGpCIyJ6wfYhlGQuy95y7hWYzd9k4GutSaBLgUQG4l3kHvX7p8NTzf+8cC49c39fFyWmSo8TERAQEBOQ55uvrCxcXFyQmJprOCQsLy3OO8TWJiYmPTY5iYmJMI1fWJGk0gI1Hr4iIHkdTpQo05cNsHYZTaVihJMr4uOF2SubTT3Z0hgAYMkIguSTYOpKnsmlyNGnSpKcmHUeOHEFERESB3i+/aTEhRJ7j/z7HWIz9pCm1MWPGYOjQoaafk5OTERISUqCYzFH1yGGLvycREdmv8v4e+G30c7YOoxi1t3UABWLT5GjAgAHo3LnzE8/590jP4wQGBuLQoUN5jt27dw9ardY0OhQYGGgaRTK6efMmADwy6pSbRqPJMxVHREREzsumyZG/vz/8/f0t8l6NGzfGtGnTkJCQgKCgIADZRdoajQbh4eGmc8aOHYusrCy4uLiYzgkODi5wEkZERETOzWH2OYqPj8fx48cRHx8PvV6P48eP4/jx40hJSQEAtGnTBtWrV0f37t1x7Ngx/Prrrxg+fDj69u0LLy8vAEDXrl2h0WjQq1cv/Pnnn9iwYQOmT59uFyvViIiIyD5IwkF2QOzVqxdWrlz5yPFdu3ahVatWALITqP79+2Pnzp1wc3ND165dMXv27DxTYidPnsR7772Hw4cPw9fXF/369cOECRPMSo6Sk5Ph7e2NpKQkU+JFRERE9q2g398OkxzZEyZHREREjqeg398OM61GREREVByYHBERERHlwuSIiIiIKBcmR0RERES5MDkiIiIiyoXJEREREVEuTI6IiIiIcmFyRERERJQLkyMiIiKiXGzaeNZRGTcVT05OtnEkREREVFDG7+2nNQdhclQIDx48AACEhITYOBIiIiIy14MHD+Dt7f3Y59lbrRAMBgOuX78OT09PsxrWAtlZa0hICK5cucK+bFbGa118eK2LF6938eG1Lj7Fca2FEHjw4AGCg4OhUDy+sogjR4WgUChQtmzZIr2Hl5cX/0UrJrzWxYfXunjxehcfXuviY+1r/aQRIyMWZBMRERHlwuSIiIiIKBcmR8VMo9Fg4sSJ0Gg0tg7F6fFaFx9e6+LF6118eK2Ljz1daxZkExEREeXCkSMiIiKiXJgcEREREeXC5IiIiIgoFyZHRERERLkwObKCRYsWoXz58nB1dUV4eDj27dv3xPP37NmD8PBwuLq6okKFCvj000+LKVLHZ8613r17NyRJeuRx9uzZYozYMe3duxft27dHcHAwJEnCxo0bn/oa3teFY+615n1deDExMahfvz48PT1RunRpdOjQAX/99ddTX8d723yFuda2vLeZHFnYunXrMHjwYHzwwQc4duwYmjdvjhdffBHx8fH5nn/x4kW89NJLaN68OY4dO4axY8di0KBBWL9+fTFH7njMvdZGf/31FxISEkyPypUrF1PEjis1NRXPPvssFixYUKDzeV8XnrnX2oj3tfn27NmD9957D7///jt27NgBnU6HNm3aIDU19bGv4b1dOIW51kY2ubcFWVSDBg1Ev3798hx75plnxOjRo/M9f+TIkeKZZ57Jc+ydd94RjRo1slqMzsLca71r1y4BQNy7d68YonNeAMSGDRueeA7va8soyLXmfW05N2/eFADEnj17HnsO723LKMi1tuW9zZEjC8rKykJcXBzatGmT53ibNm1w4MCBfF9z8ODBR86PiopCbGwstFqt1WJ1dIW51kZ169ZFUFAQnn/+eezatcuaYcoW7+vix/u66JKSkgAAfn5+jz2H97ZlFORaG9ni3mZyZEG3b9+GXq9HQEBAnuMBAQFITEzM9zWJiYn5nq/T6XD79m2rxeroCnOtg4KCsHTpUqxfvx7ff/89qlatiueffx579+4tjpBlhfd18eF9bRlCCAwdOhTNmjVDzZo1H3se7+2iK+i1tuW9rbL6J8iQJEl5fhZCPHLsaefnd5weZc61rlq1KqpWrWr6uXHjxrhy5Qpmz56NFi1aWDVOOeJ9XTx4X1vGgAED8Mcff2D//v1PPZf3dtEU9Frb8t7myJEF+fv7Q6lUPjJycfPmzUf+pmEUGBiY7/kqlQolS5a0WqyOrjDXOj+NGjXC33//benwZI/3tW3xvjbPwIED8eOPP2LXrl0oW7bsE8/lvV005lzr/BTXvc3kyIJcXFwQHh6OHTt25Dm+Y8cONGnSJN/XNG7c+JHzt2/fjoiICKjVaqvF6ugKc63zc+zYMQQFBVk6PNnjfW1bvK8LRgiBAQMG4Pvvv8fOnTtRvnz5p76G93bhFOZa56fY7u1iLwF3cmvXrhVqtVp8/vnn4vTp02Lw4MHCw8NDXLp0SQghxOjRo0X37t1N51+4cEG4u7uLIUOGiNOnT4vPP/9cqNVq8d1339nqV3AY5l7refPmiQ0bNohz586JP//8U4wePVoAEOvXr7fVr+AwHjx4II4dOyaOHTsmAIi5c+eKY8eOicuXLwsheF9bkrnXmvd14b377rvC29tb7N69WyQkJJgeaWlppnN4b1tGYa61Le9tJkdWsHDhQlGuXDnh4uIi6tWrl2epYs+ePUXLli3znL97925Rt25d4eLiIsLCwsTixYuLOWLHZc61njlzpqhYsaJwdXUVvr6+olmzZmLz5s02iNrxGJfU/vvRs2dPIQTva0sy91rzvi68/K4zALF8+XLTOby3LaMw19qW97b0MGgiIiIiAmuOiIiIiPJgckRERESUC5MjIiIiolyYHBERERHlwuSIiIiIKBcmR0RERES5MDkiIiIiyoXJEREREVEuTI6IiArg0qVLkCQJx48ft3UoRGRlTI6IyGp69eoFSZIgSRLUajUqVKiA4cOHIzU11dahERE9lsrWARCRc2vbti2WL18OrVaLffv24e2330ZqaioWL15s9nsJIaDX66FS8T9dRGQ9HDkiIqvSaDQIDAxESEgIunbtiujoaGzcuBEAkJmZiUGDBqF06dJwdXVFs2bNcOTIEdNrd+/eDUmS8PPPPyMiIgIajQb79u2DEAKzZs1ChQoV4ObmhmeffRbffffdY2MYM2YMGjVq9Mjx2rVrY+LEiQAAg8GAKVOmoGzZstBoNKhTpw62bdv22PdcsWIFfHx88hzbuHEjJEky/Txp0iTUqVMHX3zxBUJDQ1GiRAm8++670Ov1mDVrFgIDA1G6dGlMmzYtz/skJSXhv//9L0qXLg0vLy8899xzOHHihOn5EydOIDIyEp6envDy8kJ4eDhiY2MfGysRmYfJEREVKzc3N2i1WgDAyJEjsX79eqxcuRJHjx5FpUqVEBUVhbt37+Z5zciRIxETE4MzZ86gdu3aGDduHJYvX47Fixfj1KlTGDJkCLp164Y9e/bk+5nR0dE4dOgQzp8/bzp26tQpnDx5EtHR0QCATz75BHPmzMHs2bPxxx9/ICoqCq+88gr+/vvvIv2+58+fx9atW7Ft2zasWbMGX3zxBdq1a4erV69iz549mDlzJsaNG4fff/8dQPboWLt27ZCYmIgtW7YgLi4O9erVw/PPP2+6LtHR0ShbtiyOHDmCuLg4jB49Gmq1ukhxElEugojISnr27CleffVV08+HDh0SJUuWFJ06dRIpKSlCrVaL1atXm57PysoSwcHBYtasWUIIIXbt2iUAiI0bN5rOSUlJEa6uruLAgQN5PqtPnz6iS5cuj42ldu3aYsqUKaafx4wZI+rXr2/6OTg4WEybNi3Pa+rXry/69+8vhBDi4sWLAoA4duyYEEKI5cuXC29v7zznb9iwQeT+z+rEiROFu7u7SE5ONh2LiooSYWFhQq/Xm45VrVpVxMTECCGE+PXXX4WXl5fIyMjI894VK1YUS5YsEUII4enpKVasWPHY35WIioYT90RkVZs2bUKJEiWg0+mg1Wrx6quvYv78+Th//jy0Wi2aNm1qOletVqNBgwY4c+ZMnveIiIgw/fn06dPIyMjACy+8kOecrKws1K1b97FxREdH44svvsD48eMhhMCaNWswePBgAEBycjKuX7+eJxYAaNq0aZ7prMIICwuDp6en6eeAgAAolUooFIo8x27evAkAiIuLQ0pKCkqWLJnnfdLT000jX0OHDsXbb7+NL7/8Eq1bt0bHjh1RsWLFIsVJRDmYHBGRVUVGRmLx4sVQq9UIDg42Tf8kJCQAQJ4aHSB7Wunfxzw8PEx/NhgMAIDNmzejTJkyec7TaDSPjaNr164YPXo0jh49ivT0dFy5cgWdO3fOc05BYjFSKBQQQuQ5ZpwuzO3f013GlXv/Pmb8vQwGA4KCgrB79+5H3stY4zRp0iR07doVmzdvxtatWzFx4kSsXbsWr732Wr6xEpF5mBwRkVV5eHigUqVKjxyvVKkSXFxcsH//fnTt2hVAdnIRGxtrGtHJT/Xq1aHRaBAfH4+WLVsWOI6yZcuiRYsWWL16NdLT09G6dWsEBAQAALy8vBAcHIz9+/ejRYsWptccOHAADRo0yPf9SpUqhQcPHiA1NdWUvFliD6R69eohMTERKpUKYWFhjz2vSpUqqFKlCoYMGYIuXbpg+fLlTI6ILITJERHZhIeHB959912MGDECfn5+CA0NxaxZs5CWloY+ffo89nWenp4YPnw4hgwZAoPBgGbNmiE5ORkHDhxAiRIl0LNnz8e+Njo6GpMmTUJWVhbmzZuX57kRI0Zg4sSJqFixIurUqYPly5fj+PHjWL16db7v1bBhQ7i7u2Ps2LEYOHAgDh8+jBUrVhTqWuTWunVrNG7cGB06dMDMmTNRtWpVXL9+HVu2bEGHDh1Qo0YNjBgxAm+88QbKly+Pq1ev4siRI3j99deL/NlElI3JERHZzIwZM2AwGNC9e3c8ePAAERER+Pnnn+Hr6/vE102dOhWlS5dGTEwMLly4AB8fH9SrVw9jx4594us6duyIgQMHQqlUokOHDnmeGzRoEJKTkzFs2DDcvHkT1atXx48//ojKlSvn+15+fn746quvMGLECCxduhStW7fGpEmT8N///tesa/BvkiRhy5Yt+OCDD9C7d2/cunULgYGBaNGihale6c6dO+jRowdu3LgBf39//Oc//8HkyZOL9LlElEMS/540JyIiIpIx7nNERERElAuTIyIiIqJcmBwRERER5cLkiIiIiCgXJkdEREREuTA5IiIiIsqFyRERERFRLkyOiIiIiHJhckRERESUC5MjIiIiolyYHBERERHl8n/YDYg6CIUzNAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Plot solid phase exchange species results\n", + "fig, ax = plt.subplots()\n", + "ax.plot(por_volumes, NaX[:,cell], label='NaX')\n", + "ax.plot(por_volumes, Xminus[:,cell], label='X-')\n", + "ax.plot(por_volumes, KX[:,cell], label='KX')\n", + "ax.plot(por_volumes, CaX2[:,cell], label='CaX2')\n", + "ax.set_xlabel('Pore volumes')\n", + "ax.set_ylabel('Moles per kilogram water')\n", + "ax.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "abbf0301", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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mx07drjlw5cvX46ZM2di1qxZAIAVK1Zg27ZtWLt2LdLS0pp83YMPPoh77rkHarUamzdvdktsRETkndQdOqCmUwcYCspxdSFblLiDvebGm0dubrrpJpd/cG1tLfbv34+FCxfWO56cnIw9e/Y0+br3338fx48fx7/+9S+HNuo0Go0wGo3271szdUZERN6lOKYDogvKEX3BLHcoinS55saLR26uVFJSgnXr1iE7OxuCIKB3796YMWMGgoKCHH6PgoICWCwWREZG1jseGRmJvLy8Rl9z7NgxLFy4ELt374ZG41joaWlpWLx4scNxERGR97sQbUD0z0Cn85Vyh6JI9k0zAzxz5MbppeCZmZno2rUrXn/9dRQVFaGgoADLly9H165dceDAAacDuLKWR6rduZLFYsE999yDxYsX45pLxWKOWLRoEUpLS+2PM2fOOB0jERF5l5xw258dzhTJG4hC2TfNVMrIzfz583Hbbbfh73//u330xGw2Y9asWZg3bx527drl0Pt06tQJarW6wShNfn5+g9EcACgvL0dmZiaysrLw8MMPAwCsVitEUYRGo8H27dsxevToBq/T6/XQ6z3zL5+IiNzjeKgJAKA/faHJX5qpdWrNVpTV2Kb7PLXmplUjN0888US9aSGNRoO//vWvyMzMdPh9dDodEhMTkZ6eXu94eno6hg0b1uD8jh074tChQzh48KD9MXv2bPTo0QMHDx7E0KFDnb0UIiJSqKMdymERAKGiCmauqnUpacNMjUpAR4NW5mga5/TITceOHZGTk4OePXvWO37mzBl06NDBqfdKTU3Fvffei8GDByMpKQnvvPMOcnJyMHv2bAC2KaVz587hgw8+gEqlQt++feu9PiIiAgaDocFxIiLyXSaLCcXWCpwPA2ILbDuEa6Oi5A5LMaQpqdAAHVQqzxwRczq5mTx5MmbOnIlXX30Vw4YNgyAI+O677/D4449jypQpTr9XYWEhXnjhBeTm5qJv377YsmUL4uPjAQC5ubnIyclxNkQiIvJhRTW2Opuz4SrEFlhh/O03BN54o8xRKUdhpdTAz3NLPpxObl599VUIgoBp06bBbLbNuWm1Wjz00ENYunSp0wGkpKQgJSWl0efWr1/f7Guff/55PP/8805/JhERKVdhTSEAoCDaH8iugPHYMZkjUhapgZ+n1tsArUhudDod3njjDaSlpeH4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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "# Identify transition zone time steps of interest\n", + "target_step = 62 \n", + " # 62, near when Na and K intersect for first time at last time step\n", + " # 66, when K approaches maximum molality at last time step\n", + "\n", + "cells = list(range(1, 41)) # Array from 1 to 40\n", + "\n", + "# Plot aqueous phase component concentration results as a function of \n", + "# grid cell for a single time step\n", + "fig, ax = plt.subplots()\n", + "ax.plot(cells, Na[target_step - 1, :]*1000, label='Na')\n", + "ax.plot(cells, Cl[target_step - 1, :]*1000, label='Cl')\n", + "ax.plot(cells, K[target_step - 1, :]*1000, label='K')\n", + "ax.plot(cells, Ca[target_step - 1, :]*1000, label='Ca')\n", + "ax.set_xlabel('Cells')\n", + "ax.set_ylabel('Millimoles per kilogram water')\n", + "ax.legend(loc='lower left')\n", + "plt.show()" + ] } ], "metadata": { @@ -359,7 +1121,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.5" + "version": "3.11.9" } }, "nbformat": 4,