3. 回灌井水位恢复试验数据提取与段划分

任务拆解:从连续记录中切出“回灌段”与“恢复段”

回灌井水位恢复试验的原始记录是一条连续的水位—时间序列,其中包含回灌进行阶段和停灌后的恢复阶段。求参(如 Theis 恢复法、Cooper-Jacob 直线段法)只使用恢复段数据,因此必须先准确定位停灌时刻 t₀,再以 t₀ 为界切分数据,并计算恢复段的初始水位与回升幅度。本案例的核心是把这一判断过程写成可复现的规则,而不是靠人工目测挑点。

停灌时刻的识别依据是回灌流量信号:回灌期间流量 Q 维持在一个正值台阶,停灌后 Q 骤降至 0(或接近 0 的漏计值)。水位本身在停灌瞬间不会突变,而是由“注水抬升”转为“自然回升/回落”,因此不能仅凭水位斜率判断停灌点。工程上常出现流量计滞后、停泵后余流、水位计采样间隔大于流量采样间隔等情况,需要设置容差与确认窗口。

停灌时刻 t₀ 识别与恢复段切分 依据流量台阶下降判定 t₀;水位在 t₀ 后进入恢复段,用于求参 回灌流量 Q(t) Q t Q ≈ Q₀(回灌中) Q ≈ 0(停灌) t₀ 停灌时刻 井中水位 H(t) H t 注水抬升 恢复段 H₀(t₀ 时刻水位) ΔH 回升幅度 分段判定规则 ① 流量阈值判定 Q < Q_stop(如 0.05·Q₀)且持续 ≥ 2 个采样间隔 ② 时间对齐 以流量首个低于阈值时刻作为 t₀,插值到水位时间轴 ③ 恢复段提取 取 t ≥ t₀ 的水位点,剔除停灌后前 Δt 缓冲段 ④ 特征量计算 H₀ = H(t₀);ΔH = H(t₀) − H(t_end) 注:水位在 t₀ 处连续,停灌点由流量信号确定;恢复段起点需扣除停泵余流缓冲时间。

数据准备与关键字段

假设已完成例1的清洗,得到统一时间步长的结构化数据,包含 time(秒,相对试验起点)、Q(m³/h)、H(m,井中水位,向上为正)。本案例只需 time、Q、H 三列。下面用一段自洽的 Python 代码完成停灌识别、分段与特征量计算,示例数据为教学构造,用于演示规则行为,不代表实测结果。

import numpy as np
import pandas as pd

# 教学示例数据:0~3600 s 回灌,Q=20 m³/h;3600 s 后停灌,Q≈0
t = np.arange(0, 7201, 60)          # 60 s 采样,共 121 点
Q = np.where(t < 3600, 20.0, 0.0)
# 构造水位:回灌期抬升,停灌后恢复下降(示例形态,非实测)
H = np.where(t < 3600,
             5.0 + 0.0012 * t,
             9.32 - 0.00035 * (t - 3600))
df = pd.DataFrame({"time": t, "Q": Q, "H": H})

# 1) 停灌时刻识别
Q0 = df.loc[df["Q"] > 0, "Q"].median()      # 回灌期典型流量
Q_stop = 0.05 * Q0                          # 停灌阈值
below = df["Q"] < Q_stop
# 连续 2 个采样点低于阈值才确认停灌
confirm = below & below.shift(1, fill_value=False)
t0 = df.loc[confirm, "time"].iloc[0]
print("Q0 =", Q0, " Q_stop =", Q_stop, " t0 =", t0)

# 2) 分段
buffer = 120                                # 停泵余流缓冲 120 s
inj = df[df["time"] < t0]
rec = df[(df["time"] >= t0 + buffer)].copy()
rec["dt"] = rec["time"] - t0                # 相对停灌时刻

# 3) 特征量
H0 = df.loc[df["time"] == t0, "H"].iloc[0]
H_end = rec["H"].iloc[-1]
dH = H0 - H_end
print("H0 =", round(H0, 3), " H_end =", round(H_end, 3), " ΔH =", round(dH, 3))
print("回灌段点数 =", len(inj), " 恢复段点数 =", len(rec))

运行后预期输出:Q0 = 20.0 Q_stop = 1.0 t0 = 3600,H0 = 9.32 H_end ≈ 8.06 ΔH ≈ 1.26,回灌段 60 点、恢复段 59 点(扣除 120 s 缓冲后从 3720 s 起)。这些数值由给定输入直接推出,属于示例结果。

规则细节与常见偏差

  • 阈值 Q_stop 的选取:取回灌期流量中位数的 5% 是稳健做法;若流量计存在零点漂移,应先减去漂移基线再比较。
  • 确认窗口:单点低于阈值可能是瞬时波动,要求连续 2 个采样点确认,可避免把流量毛刺误判为停灌。
  • 时间对齐:流量与水位采样时刻可能不同,t₀ 应插值到水位时间轴,再取最近的水位点作为 H₀。
  • 缓冲段:停泵后管路余流会使水位短暂继续上升,恢复段起点应后移一个缓冲时间(本例 120 s),否则早期点会污染恢复直线段。
  • 回升幅度符号:本案例定义 H 向上为正,ΔH = H₀ − H_end 为正表示水位回落;若采用埋深坐标(向下为正),符号需相应调整并在全流程保持一致。
恢复段数据应保留 dt = t − t₀ 列,后续 Theis 恢复法以 lg(dt) 或 lg((t+Δt)/Δt) 为横轴,缺少相对时间将无法直接求参。
若流量记录在停灌后长时间不归零(如余流持续数十分钟),仅靠阈值会低估 t₀ 或误判恢复段起点。此时应结合流量下降沿的斜率变化点辅助定位,并在报告中说明缓冲时间取值依据。

分段结果检查清单

检查项通过条件本例取值
t₀ 是否落在流量下降沿t₀ 前后 Q 由 Q₀ 降至 ≈03600 s,Q 由 20 降至 0
回灌段是否完整回灌段点数 ≥ 预期采样数60 点(0~3540 s)
恢复段是否扣除缓冲恢复段首点 time ≥ t₀ + buffer3720 s
H₀ 是否取自 t₀ 时刻H₀ 与原始记录一致9.32 m
ΔH 符号是否符合约定与坐标约定一致+1.26 m(向上为正)

完成上述分段后,恢复段数据即可作为例4、例5等后续求参与井损计算的输入;若检查表中任一项不通过,应先回到流量与水位原始曲线核对,而不是直接进入求参环节。