Monitoring the specific capacity of a well is a useful way to gauge a well's efficiency. Over time the specific capacity of a well will degrade and maintenance or rehabilitation may be required. This is due to gradual plugging of the well's intake filter pack.
Numerical Approach
To calculate a well's specific capacity, we only need measured flow rate and water level at the well, making this an easy parameter to evaluate over time in Info360. The equation is simply:
Where Q is the pumping flowrate, h is the head in the well during pumping and ho is the steady state head of the aquifer when the pump is not running.
The tricky aspect is developing an expression to automatically evaluate the well drawdown from a single level feed in real time. When the pump from the well is turned on, the head in the well quickly drops at first, then slowly decays to a mostly steady state value. When the pump is then turned off, it rises again, asymptotically approaching the pre-drawdown level.
Innovyze worked with a client to implement the following strategy which filters to only calculate the specific capacity at a time several hours after a pump has been turned off.
In this example, we'll use 15 minute data and select for 6 hours after the pump turns off, but you can easily modify for your own case as necessary.
We also evaluate multiple contributing parameters for validation purposes; these outputs are optional.
Workflow
- Create a new BizBlock assigning a name based the well you are analyzing.
- Add the BizBlock to your Workspace and set it to Design mode
- In Design mode, add four inputs:
- Flow - Set as the measured flowrate from the well
- Level - Set as the measured level in the well
- N - Set as a constant value of 24. Based on 15 minute data, this represents 6 hours. Feel free to modify as needed.
- Qmin - Set as a constant value just below the minimum flowrate that occurs when the well pump is on.
- Add a BizBlock with an appropriate name and specify it to calculate based on a small time interval that is available, such as 15 minutes.
- Set up the following outputs, copy and pasting in the expressions in the table below. The only output that is necessary is SC - Specific Capacity; the others are optional for validation.
If you wanted, you could break these expressions into multiple parts, since they all use the same IIF filter which occupies most of the expression space.
Output | Expression |
---|---|
SC - Specific Capacity | IIF(Sum({@Flow}, {@N}) <={@Qmin} and Previous({@Flow}, {@N}) > {@Qmin} and ROC({@Level},{@N})>0, Previous({@Flow},{@N})/({@Level} - Previous({@Level},{@N})),'') |
DD - Drawdown (optional) | IIF(Sum({@Flow}, {@N}) <={@Qmin} and Previous({@Flow}, {@N}) > {@Qmin} and ROC({@Level},{@N})>0, {@Level} - Previous({@Level},{@N}), '') |
PWL - Pumping Water Level (optional) | IIF(Sum({@Flow}, {@N}) <={@Qmin} and Previous({@Flow}, {@N}) > {@Qmin} and ROC({@Level},{@N})>0, Previous({@Level},{@N}), '') |
SWL - Static/Standing Water Level (optional) | IIF(Sum({@Flow}, {@N}) <={@Qmin} and Previous({@Flow}, {@N}) > {@Qmin} and ROC({@Level},{@N})>0, {@Level}, '') |
Flow - (optional - for validation) | IIF(Sum({@Flow}, {@N}) <={@Qmin} and Previous({@Flow}, {@N}) > {@Qmin} and ROC({@Level},{@N})>0, Previous({@Flow},{@N}), '') |
Explanation:
Let's break down that IIF statement a little further:
IIF(Sum({@Flow}, {@N}) <={@Qmin} and Previous({@Flow}, {@N}) > {@Qmin} and ROC({@Level},{@N})>0, ....)
This will only return values when three things are true:
- Sum({@Flow}, {@N}) <={@Qmin} : This requires that the pump has been off for the past N periods of time (6 hours in this case)
- Previous({@Flow}, {@N}) > {@Qmin} : This requires that the pump was on N periods ago.
- ROC({@Level},{@N})>0 : This simply requires that the level has changed between now and N periods ago, which is a numerical requirement since the drawdown will be the denominator and we don't want to divide by zero.
6. Save and run the BizBlock, then review results by double-clicking an output while in Snapshot mode. Because the data is only calculated at specific points which represent the state of the well, it will make the most sense to view the data using a Daily or larger time interval. If you wanted, you could have a secondary post-processing BizBlock that runs only on daily data and outputs Average({@SC}) to get the average specific capacity each day.