Skip to content

关井回温反演注入剖面:算法、公式与第 2 期次试算

日期 2026-09-12。目标是用一套可复现的公式,从 DTS 关井回温数据得到 PPT 第 3、4 页那种”各簇注入百分比”。脚本 warmback_inversion.py 与本文同目录,输入为第 2 期次主文件,射孔簇深度取自第 1 期次 PPT。

关井后井筒里没有流动,温度靠岩石向井筒径向导热恢复。把注入结束时每簇周围的冷区近似为半径 RR 的圆柱,初始温差 ΔT0\Delta T_0,放在无限大均匀岩石中。圆柱轴线上的温度亏损随时间的解是

D(t)=ΔT0[1−exp⁡ ⁣(−τt)],τ=R24α(1)D(t) = \Delta T_0 \left[1 - \exp\!\left(-\frac{\tau}{t}\right)\right], \qquad \tau = \frac{R^2}{4\alpha} \tag{1}

D=T基线−T(t)D = T_{\text{基线}} - T(t),tt 是关井后时间,α\alpha 是岩石热扩散率,量级 10−6 m2/s10^{-6}\ \text{m}^2/\text{s}。

当 t≫τt \gg \tau,式 (1) 退化为瞬时线热汇解

D(t)→q′4πk t(2)D(t) \to \frac{q'}{4\pi k\, t} \tag{2}

q′q' 是单位井长储存的冷量,单位 J/m,kk 是岩石导热系数。于是晚期乘积

E≡lim⁡t→∞t D(t)=ΔT0 τ=q′4πk(3)E \equiv \lim_{t\to\infty} t\,D(t) = \Delta T_0\,\tau = \frac{q'}{4\pi k} \tag{3}

只和单位井长的冷量成正比,不再依赖 ΔT0\Delta T_0 和 τ\tau 各自的取值。这一点很重要:用式 (1) 拟合时 ΔT0\Delta T_0 和 τ\tau 会互相补偿,单独哪一个都不稳,乘积是稳的。

某簇的冷量分两部分。一部分是注入期间冷液流过井筒、靠导热冷却了近井岩石,这部分沿井均匀,盲管段也有,记 E0E_0。另一部分是注入液进入地层带走的热量,只有吸液的簇才有:

qinj,i′=(ρc)f Vi ΔTinjhi(4)q'_{\text{inj},i} = \frac{(\rho c)_f\, V_i\, \Delta T_{\text{inj}}}{h_i} \tag{4}

ViV_i 是进入第 ii 簇的液量,hih_i 是簇长,ΔTinj\Delta T_{\text{inj}} 是注入液与地温之差。假设各簇 hih_i 和 ΔTinj\Delta T_{\text{inj}} 相同,注入比例为

fi=(Ei−E0,i)+∑j(Ej−E0,j)+(5)f_i = \frac{\left(E_i - E_{0,i}\right)^+}{\sum_j \left(E_j - E_{0,j}\right)^+} \tag{5}

kk、α\alpha、ρc\rho c、ΔTinj\Delta T_{\text{inj}} 全部约掉,不需要岩石参数。E0,iE_{0,i} 取该簇两侧盲管段的 EE 中位数。

如果不扣盲管,直接 fi=Ei/∑Ejf_i = E_i / \sum E_j,得到的是”该簇附近单位井长总冷量”的分布,包含井筒背景,簇间差异会被压平。PPT 的结果是否扣了盲管无从得知,两种都算。

  1. 基线:取注入前 100 个剖面的平均,得 T基线(z)T_{\text{基线}}(z)。
  2. 亏损场:D(z,t)=T基线(z)−T(z,t)D(z,t) = T_{\text{基线}}(z) - T(z,t),tt 从关井时刻 09-17 04:50 起算。
  3. 沿井每 2 m 取一个 4 m 窗口,在 t∈[4,28]t \in [4, 28] h 上用式 (1) 拟合,得 AA、τ\tau,记 E=AτE = A\tau。前 4 小时不参与拟合,原因见第 5 节。
  4. 每簇取射孔深度 ±4 m 窗口,同样拟合得 EiE_i。
  5. 参考值:该簇两侧 15 到 40 m 范围内、且离任何簇都超过 15 m 的窗口,取 EE 的中位数为 E0,iE_{0,i}。
  6. 按式 (5) 算比例。另算不扣盲管的 Ei/∑EjE_i/\sum E_j。
  7. 模型无关的交叉检验:直接用 4 到 28 h 亏损的时间积分代替 EE,走同样的步骤。

一个补充指标:D(0.5 h)−D(2 h)D(0.5\,\text{h}) - D(2\,\text{h}),关井后头 1.5 小时的升温量。纯导热下这个量沿井应当平滑,出现台阶说明井筒里有流体移动。

各簇回温曲线与拟合。灰色区是排除的前 4 小时:

各簇拟合

沿井的 EE 剖面与早期升温指标:

E 剖面

数值表。EE 单位 ℃·h:

簇深度 mEiE_iE0,iE_{0,i}Ei−E0,iE_i - E_{0,i}扣盲管 %不扣盲管 %头 1.5 h 升温 ℃
1224685656006.09.1
1125335453115.79.8
1025935857116.22.7
926626161006.51.8
827216465−106.92.6
7302395914410.19.5
6306499105−6010.610.3
5316099106−7010.615.0
432151041040011.116.7
332855256−405.617.1
233186367−406.814.2
1335712948829413.85.0

三栏样式的剖面图,用扣盲管的结果:

反演剖面

与第 1 期次 PPT 两组反演结果并排:

对比

只有簇 1 是干净的注入信号。 3357 m 处 EE 有一个 15 m 宽的孤立尖峰,值 129,两侧盲管 48,超出 82 ℃·h。这是”局部冷区半径大于两侧”的教科书形态,可以肯定簇 1 在第 2 期次吸了液。第 1 期次两种光缆也都把簇 1 列为主力簇之一。

其余 11 簇在局部尺度上分不出来。 它们的 EE 和两侧盲管一样,差值在 ±7 以内,是噪声水平。不是这些簇没吸液,是井筒尺度的另一个过程把簇尺度的信号盖住了:

  • EE 剖面呈台阶状。2350 到 2760 m 是 55 到 65,2760 到 3230 m 逐渐升到 105 并形成 180 m 宽的平台,3230 到 3250 m 之间陡降到 55,3370 m 以深回到 45。
  • 头 1.5 小时升温指标呈镜像。2533 m 处从 12 陡降到 2,3100 到 3330 m 高达 15 到 18 ℃,3340 m 以深又降到 5。
  • 这些边界锐利、宽度上百米的分段,导热做不出来。它们说明关井后井筒里有流体重新分布:某些段来了暖流体,某些段留住了冷流体。最可能的机制是水平段轨迹起伏,关井后密度大的冷注入液沉到低洼段,暖的地层流体或油浮到高点段。3050 到 3230 m 存冷量最大,像是一个低洼;3230 到 3340 m 升温最快,像是一个高点。没有井斜数据无法证实。

不扣盲管的那一列形态上更像 PPT。 簇 1 最大 13.8%,簇 4 到 7 在 10 到 11%,其余 6 到 7%。但这一列反映的是井筒分段储冷,不是各簇吸液。如果 PPT 的方法也没扣盲管,它的结果里同样混有这个成分,这是需要向原作者核实的地方。

与第 1 期次的可比结论只有一条:趾端簇 1 两期都是主力。第 1 期次的簇 3 是最大注入簇,第 2 期次簇 3 所在的 3285 m 恰好落在关井后快速升温的那一段里,信号被冲掉了。

  1. 井斜数据,即测深对垂深的轨迹表。有了它可以判断 EE 剖面的台阶是不是轨迹起伏造成的,并把高低点段从分析里剔除或单独建模。
  2. 第 2 期次泵注记录,确认 04:50 关井时刻。关井时刻错 10 分钟,早期拟合就会偏。
  3. 第 1 期次的原始数据。把本算法跑一遍,和 PPT 的百分比对照,才能知道 PPT 用的是扣盲管还是不扣盲管的口径。
  4. 更长的关井记录不再需要,29.5 小时已经足够进入式 (2) 的晚期区。

warmback_inversion.py,Python 3,依赖 numpy、scipy、matplotlib。参数在文件头部:井口采样点 I0、采样间隔 DX、关井时刻 SHUT、拟合时间窗 T_FIT0/T_FIT1、窗口宽度、参考带范围、簇深度表。输出四张图和一个 energy_profile.npy,后者存沿井的 AA、τ\tau、EE 和积分。