Vous êtes sur la page 1sur 21

CAMELOT a Python based GUI for semi-analytic solutions to the pressure disturbance due to injection into a single layer

aquifer Version 0.2


Karl W. Bandilla July 16, 2010
c Karl Bandilla 2010 KWBandilla@gmail.com

Introduction

CAMELOT is a GUI programmed in the scripting language Python and uses Tkinter. The purpose of the GUI is to facilitate the computation of the pressure disturbance caused by injecting a supercritical CO2 into an aquifer as part of geologic carbon sequestration. The receiving aquifer is either bounded at the top and bottom by leaky layers or impermeable layers. The semi-analytic solutions implemented in this GUI are based on work by Theis [1], Hantush and Jacob [2], Moench [3] and Zhou et al. [4]. The validity of input variables is not checked within the GUI, so bad input values (e.g., strings instead of numbers, negative values, ...) may lead to crashes.

License

CAMELOT is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Release history

Version 0.1 May 2010: rst release Version 0.2 July 2010: added scroll bars to tabs; added Area of Review tab; added boxes to compute brine viscosity and density to Utilities tab.

Installation

In order to use CAMELOT Python 2.5 or later needs to be installed on the computer. Python and all needed third-party modules are freely available online. It is suggested that Python is installed from a package such as PythonXY which includes all third-party modules needed for CAMELOT. Alternatively, Python can be installed from www.python.org. In this case the following packages may need to be installed separately: Tkinter, tkFileDialog, matplotlib, NumPy, SciPy, math, and cmath. CAMELOT consists of one script le runCAMELOT 0 2.py and several Python modules (CAMELOT 0 2, ExtraWidgets 1 1, Utilities 1 2, Units 1 1, Theis 0 2, HantushJacob 0 2, SingleLayer 0 2, HoogPy 1 0, BrineProperties 1 0, and CO2Properties 1 0 ). These modules can be freely downloaded from code.google.com/p/camelotpy, either individually or as part of the CAMELOT installation package. The modules need to be either in the same directory as runCAMELOT 0 2.py, or within the Python search path. The installation

package will place the modules into the Lib/site-packages folder. The runCAMELOT 0 2.py script is used to start the CAMELOT GUI, and can be placed in any directory.

5
5.1

GUI
Overview

The CAMELOT GUI consists of a single window with 7 tabs and one menu bar. Scenarios can be saved and loaded from the menu bar. The rst tab (Model Setup) of the GUI allows the user to enter the aquifer and leaky layer properties, as well as the injection parameters. The second tab (Observations) lets the user choose the distance, time, and/or pressure for which output is given. The third tab (Run Model ) runs the model to nd either the distance, time, or pressure based on the chosen observations, and display the result in table form. The fourth tab (Graph) draws a gure of the results, while the fth (Export) exports the results to a coma-delimited le (*.csv le). The sixth tab (Utilities) oers several utilities to compute the model parameters shown in the Model Setup tab. The seventh tab (Area of Review ) is used to compute the Area of Review based on the critical pressure increase approach. CAMELOT allows the user to choose from a variety of units for the model parameters. The units do not need to consistent (i.e., the user can choose m/s for the upper leaky layer conductivity and ft/day for the receiving aquifer conductivity), because the GUI converts all units to the following base units for computation: seconds, meters, kilograms, and centigrades.

5.2

Model Setup

The Model Setup tab shows all the aquifer and leaky layer properties as well as the injection parameters. 1. initial pressure: the pressure in the receiving aquifer before injection begins [F/L2 ]. This value can either be input manually, or be set by one of the utilities in the Utilities tab (see section 5.7). If the checkbox is unchecked a value of 0 is shown if the pressure unit is chosen to be % of initial pres.. 3

3 5

7 6 9 8

10 11 12 13

15 14 17 16

18

19

20

21

22

Figure 1: Model Setup tab

2. fracture pressure: the pressure at which the aquifer or leaky layer begin to fracture [F/L2 ]. If the checkbox is unchecked a value of 0 is shown if the pressure unit is chosen to be % of fractu. pres.. 3. shut-o time: time at which injection stops [T]. It is assumed that injection starts at t=0. If the checkbox is unchecked injection is assumed to continue indenitely. 4. neglect leaky layer storage: If the checkbox is checked the leaky 4

layer storage terms are neglected. 5. upper boundary condition: the boundary condition at the top of the upper leaky layer. The choices are either no ow for an impermeable layer above the upper leaky layer, or innite sink for a constant pressure boundary condition. 6. use upper leaky layer: determines if the upper leaky layer is considered for the computations. If the upper leaky layer is not considered (checkbox unchecked), the receiving aquifer is assumed to have an impermeable upper boundary. 7. hydraulic conductivity: hydraulic conductivity of the upper leaky layer [L/T]. This value can either be input manually, or be set by one of the utilities in the Utilities tab (see section 5.7). 8. thickness: thickness of the upper leaky layer [L]. 9. specic storage: specic storage of the upper leaky layer [1/L]. This value can either be input manually, or be set by one of the utilities in the Utilities tab (see section 5.7). The value is ignored if the neglect leaky layer storage checkbox is checked. 10. hydraulic conductivity: hydraulic conductivity of the receiving aquifer [L/T]. This value can either be input manually, or be set by one of the utilities in the Utilities tab (see section 5.7). 11. thickness: thickness of the receiving aquifer [L]. 12. specic storage: specic storage of the receiving aquifer [1/L]. This value can either be input manually, or be set by one of the utilities in the Utilities tab (see section 5.7). 13. volumetric injection rate: rate at which CO2 equivalent brine is injected into the receiving aquifer [L3 /T]. This value can either be input manually, or be set by one of the utilities in the Utilities tab (see section 5.7). 14. use lower leaky layer: determines if the lower leaky layer is considered for the computations. If the lower leaky layer is not considered (checkbox unchecked), the receiving aquifer is assumed to have an impermeable lower boundary. 5

15. hydraulic conductivity: hydraulic conductivity of the lower leaky layer [L/T]. This value can either be input manually, or be set by one of the utilities in the Utilities tab (see section 5.7). 16. thickness: thickness of the lower leaky layer [L]. 17. specic storage: specic storage of the lower leaky layer [1/L]. This value can either be input manually, or be set by one of the utilities in the Utilities tab (see section 5.7). The value is ignored if the neglect leaky layer storage checkbox is checked. 18. lower boundary condition: the boundary condition at the bottom of the lower leaky layer. The choices are either no ow for an impermeable layer below the lower leaky layer, or innite sink for a constant pressure boundary condition. 19. well radius: radius of the well bore [L]. If the checkbox is unchecked an innitesimal well radius is assumed. 20. boundary radius: distance from the center of the injection well to the lateral impermeable boundary [L]. If the checkbox is unchecked an innite aquifer is assumed. 21. gravitational acceleration: gravitational acceleration [L/T2 ]. 22. fresh water density: density of fresh water [M/L3 ].

5.3

Observations

The Observations tab allows the user to specify at which time, distance, and/or pressure the model is evaluated. The input format for time, distance and pressure are the same. The input format is explained with the example of time. The user has three choices to input the time values: a single value, a computer generated list, or a list input manually. 1. single time: species a single time value (i.e., the model is run for one time value) [T]. 2. start time: rst value in the computer generated list [T]. 6

1 2 3 4 5

1 2 3 4 5

1 2 3 4 5

Figure 2: Observations tab

3. end time: last value in the computer generated list [T]. 4. step type: use either linear steps (e.g., 0.2, 0.3, 0.4, ...) or logarithmic steps (e.g., 1.0, 2.2, 4.6, 10.0) to populate the list. 5. number of steps / step size: choose either the number of steps [-] to go from the start time to the end time (i.e., the step size is computed), or the step size [T] (i.e., the number of steps is computed). 6. user supplied list: the user can enter up to 15 time values. The list ends either after the 15th value, or at the rst empty entry box.

5.4

Run Model

3 1 2

Figure 3: Run Model tab

In the Run Model tab the user can run the model, and view the results. 1. get pressure from distance and time: run the model using the values for time and distance specied in the Observations tab (see section 5.3) to nd the resulting pressure. The results are shown the list boxes below. 2. get distance from pressure and time: run the model using the values for time and pressure specied in the Observations tab (see section 5.3) to nd the distance at which the pressure is reached for the given time (pressure contours). If the specied pressure is not reached the model returns the string no contour. The results values are shown the list boxes below. 3. get time from distance and pressure: run the model using the values for distance and pressure specied in the Observations tab (see section 5.3) to nd the time at which the pressure is reached for the given distance. If the specied pressure is not reached the model returns the string pressure not reached. The results values are shown the list boxes below. 8

4. Scenario name: allows the user to associate a name with a set of model results. The scenario name can be used to order the result for graphing (see section 5.5) and exporting (see section 5.6). 5. result list boxes: display the results from the model runs. Changing the units will automatically convert the displayed values. Results from multiple runs are shown together. 6. clear results: deletes the results from all previous runs. Caution: once results are cleared, they are no longer available for graphing (see section 5.5) and exporting (see section 5.6).

5.5

Graph

The Graph tab allows the user to graph the model results. 1. Choose distance(s): the user can choose which distance values to display on the graph. If the value all is selected, all distance values are displayed. Several values can be selected by holding the Ctrl key. no contour values are skipped. 2. Choose time(s): the user can choose which time values to display on the graph. If the value all is selected, all time values are displayed. Several values can be selected by holding the Ctrl key. pressure not reached values are skipped. 3. Choose pressure(s): the user can choose which pressure values to display on the graph. If the value all is selected, all pressure values are displayed. Several values can be selected by holding the Ctrl key. 4. Choose scenario(s): the user can choose which scenarios to display on the graph. If the value all is selected, all scenarios are displayed. Several values can be selected by holding the Ctrl key. 5. plot pressure vs. distance: plot the selected values, with distance on the x-axis, pressure on the y-axis, and one line for each combination of time and scenario. 6. plot pressure vs. time: plot the selected values, with time on the x-axis, pressure on the y-axis, and one line for each combination of distance and scenario. 9

7. plot distance vs. time: plot the selected values, with time on the x-axis, distance on the y-axis, and one line for each combination of pressure and scenario. 8. display legend: turn legend on and o. 9. decrease font size: decrease the font size of the plot. 10. increase font size: increase the font size of the plot. 11. x-axis: controls if x-axis is linear or logarithmic.

5.6

Export

The Export tab allows the user to save model results to coma delimited les (*.csv). 1. Choose distance(s): the user can choose which distance values to export to the le. If the value all is selected, all distance values are displayed. Several values can be selected by holding the Ctrl key. 2. Choose time(s): the user can choose which time values to export to the le. If the value all is selected, all time values are displayed. Several values can be selected by holding the Ctrl key. 3. Choose pressure(s): the user can choose which pressure values to display on the graph. If the value all is selected, all pressure values are displayed. Several values can be selected by holding the Ctrl key. 4. Choose scenario(s): the user can choose which scenarios to export to the le. If the value all is selected, all scenarios are displayed. Several values can be selected by holding the Ctrl key. 5. Export to *.csv: save selected values to a coma delimited le. Clicking this button opens a dialog box to specify le name and location.

10

7 8

10

4 11

Figure 4: Graph tab

5.7

Utilities

The Utilities tab allows users to compute some of the input variables on the Model Setup tab (see section 5.2). The four parameters that can be computed are: hydraulic conductivity, specic storage, initial pressure, and volumetric injection rate. Any changes to input values, units or computation option leads to an update of the computed value. A value of 0 for a computed value means that either one of the input values is out of range, or that one of input values is not a number. The properties on the Model Setup tab are 11

Figure 5: Export tab

only changed when one of the update buttons is clicked. The unit of the property on the Model Setup tab is also updated.

23 1 2 5 3 6 7 4 24 8 9 10 11 14 15 31 12 13 28 29 30 27 32 25 26

16 17 18 19 22 20 33 36 34 35 37 38 39

21

40 41 42 43

Figure 6: Utilities tab

12

1. permeability: hydraulic permeability [L2 ]. 2. brine density: density of the resident brine [M/L3 ]. 3. brine viscosity: dynamic viscosity of the resident brine [M/L/T]. 4. gravitational acceleration: gravitational acceleration [L/T2 ]. 5. update aquifer: updates the value and unit of the aquifer hydraulic conductivity on the Model Setup tab. 6. update upper leaky layer: updates the value and unit of the upper leaky layer hydraulic conductivity on the Model Setup tab. 7. update lower leaky layer: updates the value and unit of the lower leaky layer hydraulic conductivity on the Model Setup tab. 8. brine density: density of the resident brine [M/L3 ]. 9. soil compressibility: compressibility of the soil [LT2 /M]. 10. brine compressibility: compressibility of the resident brine [LT2 /M]. 11. porosity: porosity of the porous medium [-]. 12. gravitational acceleration: gravitational acceleration [L/T2 ]. 13. update aquifer: updates the value and unit of the aquifer specic storage on the Model Setup tab. 14. update upper leaky layer: updates the value and unit of the upper leaky layer specic storage on the Model Setup tab. 15. update lower leaky layer: updates the value and unit of the lower leaky layer specic storage on the Model Setup tab. 16. mean depth storage aquifer: mean depth from the ground surface of the receiving aquifer [L]. 17. depth to top of USDW: depth from the ground surface to the top of the underground source of drinking water (USDW) [L]. In most cases this is the groundwater table.

13

18. depth to bottom of USDW: depth from the ground surface to the lower boundary of the underground source of drinking water (USDW) [L]. This is the boundary that delineates drinking water from brine. 19. brine density: density of the resident brine [M/L3 ]. 20. USDW density: density of the fresh water of the underground source of drinking water (USDW) [M/L3 ]. 21. gravitational acceleration: gravitational acceleration [L/T2 ]. 22. update initial pressure: updates the value and unit of the initial pressure on the Model Setup tab. 23. mass injection rate: mass of CO2 that is being injected [M/T]. 24. density options: the user can choose between three options to determine the CO2 density which is used to compute the volumetric ow rate. The density can specied directly, it can be based on a specied pressure and temperature, or it can be based on the pressure at the well bore at a given time. 25. density: density of injected CO2 [M/L3 ]. 26. pressure: pressure representative of the injected CO2 [M/L/T2 ]. 27. temperature: the temperature in the receiving aquifer [C]. 28. time: time at which to evaluate the pressure [T]. This is usually the end of injection time. 29. well radius: radius of the well bore [L] (e.g., the location at which the pressure is evaluated). 30. temperature: the temperature in the receiving aquifer [C]. 31. initial pressure: the pressure in the receiving aquifer before injection starts [M/L/T2 ]. 32. update volumetric injection rate: updates the value and unit of the volumetric injection rate on the Model Setup tab. 33. temperature: brine temperature [T]. 14

34. pressure: brine pressure [M/L/T2 ]. 35. salinity: brine salinity [M/L3 ]. 36. update initial bottom USDW: updates the value and unit of the initial density at the bottom of the USDW on the Area of Review tab. 37. update initial top injection layer: updates the value and unit of the initial density at the top of the injection layer on the Area of Review tab. 38. update nal bottom USDW: updates the value and unit of the nal density at the bottom of the USDW on the Area of Review tab. 39. update nal top injection layer: updates the value and unit of the nal density at the top of the injection layer on the Area of Review tab. 40. temperature: brine temperature [T]. 41. pressure: brine pressure [M/L/T2 ]. 42. salinity: brine salinity [M/L3 ]. 43. update for hydraulic conductivity: updates the value and unit of the brine viscosity in the hydraulic conductivity box on the Utilities tab.

5.8

Area of Review

The Area of Review tab allows the user to compute the critical pressure increase needed to lift brine from the injection layer to a potential USDW above. The critical pressure increase depends on the distance between the injection layer and the USDW, and the densities at the bottom of the USDW and in the injection layer both before injection starts (termed initial) and at the point when the injection layer brine reaches the USDW (termed nal). The distance from the injection well corresponding to the critical pressure increase is also computed along with the size of the Area of Review (based on a circle). 1. distance from bottom of USDW to top of injection layer: the distance between the USDW and the injection layer [L]. 15

2. time: time at which critical pressure increase is evaluated [T]. 3. initial bottom USDW: brine density at the bottom of the USDW before injection starts [M/L3 ]. 4. initial top injection layer: brine density at the top of the injection layer before injection starts [M/L3 ]. 5. nal bottom USDW: brine density at the bottom of the USDW as the brine reaches the USDW [M/L3 ]. 6. nal top injection layer: brine density at the top of the injection layer as the brine reaches the USDW [M/L3 ]. 7. Compute critical pressure increase, distance and area: starts critical pressure increase calculations. 8. Critical pressure increase: result of the critical pressure increase calculation; given in MPa. 9. Distance to critical pressure: result of calculation for distance using given time and computed critical pressure increase; given in km. 10. Area of Review: size of area of review based on a circle with the calculated radius; given in km2 .

1 2

4 7 8 9 10

Figure 7: Area of Review tab

16

5.9

Menu bar

The File menu allows to save and load model parameters. All parameters available in CAMELOT are saved in a le with the le ending sce. The result from model runs, however, are not saved. For both saving and loading scenarios a dialog box opens to specify the name and location of the le. The scenario les can be opened in any text editor for editing. If a scenario le with the name default.sce is located in the same folder as runCAMELOT 0 1b.py, it is read to set the initial model parameters. If default.sce is not present, a set of hard-coded values is used to initialize the model parameters. The user has the option to save the current model parameters as defaults, when CAMELOT is quit. Please refer to the following example scenario le for the le format. It is necessary to leave at least one blank between a value and its unit. The input lines need to be in the same order as in the example below. The only exceptions are the lines specifying the manual lists, as they may stretch over several lines as shown in the example. If less than 15 values are specied, CAMELOT lls up the remaining list items with empty values. CAMELOT version 0.1b Input file for scenario 1 Aquifer properties Hydraulic conductivity: 1e-05 m/s Thickness: 500.0 m Specific storage: 4e-06 1/m Initial pressure considered: yes Initial pressure: 200.0 bar Fracture pressure considered: yes Fracture pressure: 1500.0 bar Fresh water density: 1000.0 kg/m^3 Boundary radius considered: no Boundary radius: 200.0 km Gravitational acceleration: 9.81 m/s^2 Leaky layer properties Neglect leaky layer storage: no Upper leaky layer properties Upper layer considered: yes 17

Upper boundary condition: infinite sink Hydraulic conductivity: 1e-07 m/s Thickness: 300.0 m Specific storage: 1e-06 1/m Lower leaky layer properties Lower layer considered: no Lower boundary condition: infinite sink Hydraulic conductivity: 1e-08 m/s Thickness: 100.0 m Specific storage: 8e-07 1/m Injection properties Volumetric injection rate: 2.5 m^3/s Well radius considered: yes Well radius: 5.0 m Injection shut-off time considered: yes Injection shut-off time: 40.0 yrs Distance observations Distance list selection: single Single distance: 1.0 km List start distance: 100.0 m List end distance: 100.0 km Distance list step type: linear Distance list step group: number of steps Distance list number of steps: 15 Distance list step size: 500.0 m Manual distance list: Time observations Time list selection: single Single time: 30.0 yrs List start time: 1.0 yrs List end time: 50.0 yrs Time list step type: linear Time list step group: number of steps Time list number of steps: 15 Time list step size: 1.0 yrs 18

Manual time list: Pressure observations Pressure list selection: manual Single pressure: 10.0 bar List start pressure: 0.01 bar List end pressure: 100.0 bar Pressure list step type: linear Pressure list step group: number of steps Pressure list number of steps: 15 Pressure list step size: 5.0 bar Manual pressure list: 50.0 [bar], 10.0 [bar], 1.0 [bar], 0.1 [bar], 0.01 [bar] Run Distance unit: m Time unit: yrs Pressure unit: bar Run type: 1 Graph Distance unit: m Time unit: yrs Pressure unit: bar Export Distance unit: m Time unit: yrs Pressure unit: bar Utilities: hydraulic conductivity Hydraulic conductivity: m/s Permeability: 1e-13 m^2 Brine density: 1045.0 kg/m^3 Brine viscosity: 0.000253 Pa s Gravitational acceleration: 9.81 m/s^2 Utilities: specific storage 19

Specific storage: 1/m Brine density: 1045.0 kg/m^3 Soil compressibility: 3.72e-10 1/Pa Brine compressibility: 4.5e-10 1/Pa Porosity: 0.15 Gravitational acceleration: 9.81 m/s^2 Utilities: initial pressure Initial pressure: bar Mean depth of aquifer: 1000.0 m Depth to top of USDW: 20.0 m Depth to bottom of USDW: 200.0 m Brine density: 1045.0 kg/m^3 Water density in USDW: 1000.0 kg/m^3 Gravitational acceleration: 9.81 m/s^2 Utilities: volumetric injection rate Volumetric injection rate: m^3/s Mass injection rate: 100.0 Mtonne/yr CO2 density: 479.0 kg/m^3 Injection pressure: 100.0 bar Injection temperature: 30.0 C Injection end time: 30.0 yrs Injection well radius: 5.0 m Aquifer temperature: 30.0 C Initial pressure: 100.0 bar Utilities: brine density brine density: kg/m^3 Temperature: 50.0 C Pressure: 15.0 MPa Salinity: 200000.0 mg/L Utilities: brine viscosity brine viscosity: Pa s Temperature: 50.0 C Pressure: 15.0 MPa Salinity: 200000.0 mg/L 20

Area of Review Distance to USDW: 500.0 m Time: 30.0 yrs Initial density at bottom of USDW: 1000.0 kg/m^3 Initial density at top of injection layer: 1150.0 kg/m^3 Final density at bottom of USDW: 1150.0 kg/m^3 Final density at top of injection layer: 1150.0 kg/m^3

References
[1] C. V. Theis, The relation between lowering of the piezometric surface and the rate and duration of discharge of a well using ground water storage, Trans. Am. Geophys. Union 16th anual meeting (Pt. 2) (1935) 519524. [2] M. S. Hantush, C. E. Jacob, Nonsteady radial ow in an innite leaky aquifer, Trans. Am. Geophys. Union 36th anual meeting (Pt. 1) (1955) 95100. [3] A. F. Moench, Transient ow to a large-diameter well in an aquifer with storative semiconing layers, Water Resourses Research 21 (8) (1985) 11211131. [4] Q. Zhou, J. T. Birkholzer, C.-F. Tsang, A semi-analytical solution for large-scale injection-induced pressure perturbation and leakage in a laterally bounded aquiferaquitard system, Transport in Porous Media 78 (1) (2009) 127148, doi: 10.1007/s11242-008-9290-0.

21

Vous aimerez peut-être aussi