1. 电阻率层析成像(ERT)技术概述
电阻率层析成像(Electrical Resistivity Tomography, ERT)是一种通过地表或井中电极阵列测量地下介质电阻率分布的地球物理探测方法。这项技术基于不同岩土介质对电流传导能力的差异,通过测量人工施加电流场产生的电位差来反演地下电性结构。
ERT系统通常由三部分组成:电极阵列、数据采集单元和反演解释软件。电极阵列可以采用表面布置(Surface ERT)或跨井布置(Cross-Borehole ERT, XBH)两种方式。表面布置适用于浅层探测(通常<100米),而跨井布置则能提供更高分辨率的井间成像。
在数学原理上,ERT属于非线性反演问题。其正演过程基于泊松方程:
∇·(σ∇φ) = -Iδ(r-r₀)
其中σ为电导率,φ为电位,I为注入电流,δ为狄拉克函数,r₀为电流注入点位置。灵敏度分析则是研究模型参数变化对观测数据影响程度的关键工具,它决定了反演结果的分辨率和可靠性。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 灵敏度分布计算的核心原理
灵敏度分布反映了地下不同区域电阻率变化对地表测量数据的影响程度。在ERT中,灵敏度矩阵S的每个元素Sᵢⱼ表示第j个模型参数(网格单元)对第i个测量数据的敏感度,其数学表达式为:
Sᵢⱼ = ∂dᵢ/∂mⱼ = -∫∫∫∇φᵃ·∇φᵇ dV
其中φᵃ和φᵇ分别对应电流注入和测量电极对的电位分布,积分在模型单元体积内进行。
对于2D情况,灵敏度计算可简化为:
Sᵢⱼ = -∫∫(∂φᵃ/∂x ∂φᵇ/∂x + ∂φᵃ/∂y ∂φᵇ/∂y) dxdy
3D情况则需要考虑全空间积分:
Sᵢⱼ = -∫∫∫(∂φᵃ/∂x ∂φᵇ/∂x + ∂φᵃ/∂y ∂φᵇ/∂y + ∂φᵃ/∂z ∂φᵇ/∂z) dxdydz
实际计算中,我们通常采用有限差分或有限元法进行离散化求解。灵敏度分布的特征直接影响数据采集方案设计:
- 高灵敏度区域:反演结果可靠,分辨率高
- 低灵敏度区域:反演结果不确定性大,可能出现伪影
3. 表面电极配置的2D灵敏度分析
表面电极排列是ERT最常用的配置方式,主要包括以下几种典型排列:
- 温纳排列(Wenner)
- 施伦贝尔热排列(Schlumberger)
- 偶极-偶极排列(Dipole-Dipole)
- 单极-偶极排列(Pole-Dipole)
以偶极-偶极排列为例,其灵敏度分布呈现以下特征:
- 最大灵敏度出现在电流偶极和电位偶极之间的区域
- 随深度增加灵敏度迅速衰减
- 横向分辨率高于纵向分辨率
Matlab实现核心代码段:
matlab复制% 2D表面ERT灵敏度计算
function S = calculate_2D_surface_sensitivity(grid, elec_pos, a_spacing, n_levels)
[X,Y] = meshgrid(grid.x, grid.y);
S = zeros(size(X));
for level = 1:n_levels
for pos = 1:length(elec_pos)-3*level
A = elec_pos(pos);
B = elec_pos(pos+level);
M = elec_pos(pos+2*level);
N = elec_pos(pos+3*level);
% 计算电流偶极AB的电位场
phi_AB = compute_potential(X,Y,A,B);
% 计算测量偶极MN的电位场
phi_MN = compute_potential(X,Y,M,N);
% 灵敏度累加
S = S + abs(gradient(phi_AB).*gradient(phi_MN));
end
end
S = S / max(S(:)); % 归一化
end
实际应用中需注意:
- 电极间距选择:一般取目标深度1/5-1/3
- 测量层数控制:通常4-8层可获得较好深度覆盖
- 地形校正:复杂地形需进行地形影响校正
4. 跨井(XBH)配置的3D灵敏度特性
跨井ERT通过在多个钻孔中布置电极,实现了井间区域的三维成像能力。相比表面ERT,XBH配置具有以下优势:
- 更高的垂向分辨率
- 更大的探测深度
- 对垂向结构的更好刻画
XBH灵敏度分布特征:
- 井间区域灵敏度最高
- 随远离井孔迅速降低
- 电极排列方向分辨率最高
典型跨井电极排列方式包括:
- 井间偶极-偶极
- 井间单极-单极
- 井间单极-偶极
Matlab 3D灵敏度计算关键代码:
matlab复制% 3D跨井ERT灵敏度计算
function S = calculate_3D_xbh_sensitivity(grid, elec_pos1, elec_pos2)
[X,Y,Z] = meshgrid(grid.x, grid.y, grid.z);
S = zeros(size(X));
% 井1电极循环
for i = 1:length(elec_pos1)-1
A = elec_pos1(i);
B = elec_pos1(i+1);
% 井2电极循环
for j = 1:length(elec_pos2)-1
M = elec_pos2(j);
N = elec_pos2(j+1);
% 计算3D电位场
phi_AB = compute_3D_potential(X,Y,Z,A,B);
phi_MN = compute_3D_potential(X,Y,Z,M,N);
% 3D灵敏度计算
[grad_AB_x, grad_AB_y, grad_AB_z] = gradient(phi_AB);
[grad_MN_x, grad_MN_y, grad_MN_z] = gradient(phi_MN);
S = S + abs(grad_AB_x.*grad_MN_x + grad_AB_y.*grad_MN_y + grad_AB_z.*grad_MN_z);
end
end
S = S / max(S(:)); % 归一化
end
跨井ERT实施要点:
- 井间距建议不超过井深的1.5倍
- 电极密度应保证垂向分辨率需求
- 需考虑井孔流体对测量的影响
- 井间地层突变会导致灵敏度分布畸变
5. 灵敏度分布的优化与应用策略
在实际工程应用中,优化灵敏度分布是提高ERT成像质量的关键。以下是几种常用策略:
- 混合排列数据融合:
- 组合不同排列类型的测量数据
- 示例:表面温纳排列+跨井偶极排列
- 可同时获得较好的浅部覆盖和深部分辨率
- 自适应电极选择算法:
matlab复制function optimal_pairs = select_optimal_electrodes(sensitivity_map, threshold)
% 找出灵敏度高于阈值的区域
high_sens_areas = sensitivity_map > threshold;
% 连接成分分析
cc = bwconncomp(high_sens_areas);
% 选择覆盖最多高灵敏度区域的电极对
optimal_pairs = [];
for i = 1:cc.NumObjects
[~, idx] = max(sum(sensitivity_map(cc.PixelIdxList{i})));
optimal_pairs = [optimal_pairs; cc.PixelIdxList{i}(idx)];
end
end
- 分辨率矩阵分析:
R = SᵀS
通过分析R矩阵的特征值分布,可以评估:
- 模型参数的可分辨性
- 反演结果的空间分辨率
- 数据采集方案的充分性
- 实际应用中的注意事项:
- 地表ERT避免在高压线附近测量
- 跨井ERT需确保井中电极良好接地
- 干燥季节地表测量需增加电极接地措施
- 工业游散电流会严重影响数据质量
6. Matlab实现中的关键技术细节
完整的ERT灵敏度分析程序包含以下核心模块:
- 网格生成:
matlab复制function grid = create_grid(xmin, xmax, ymin, ymax, zmin, zmax, nx, ny, nz)
grid.x = linspace(xmin, xmax, nx);
grid.y = linspace(ymin, ymax, ny);
if nz > 1
grid.z = linspace(zmin, zmax, nz);
else
grid.z = 0;
end
end
- 电位场计算(2D/3D):
matlab复制function phi = compute_potential(X, Y, A, B)
r_A = sqrt((X-A(1)).^2 + (Y-A(2)).^2);
r_B = sqrt((X-B(1)).^2 + (Y-B(2)).^2);
phi = 1./r_A - 1./r_B;
end
function phi = compute_3D_potential(X, Y, Z, A, B)
r_A = sqrt((X-A(1)).^2 + (Y-A(2)).^2 + (Z-A(3)).^2);
r_B = sqrt((X-B(1)).^2 + (Y-B(2)).^2 + (Z-B(3)).^2);
phi = 1./r_A - 1./r_B;
end
- 可视化模块:
matlab复制function plot_sensitivity_2D(S, grid, elec_pos)
figure;
imagesc(grid.x, grid.y, S);
hold on;
plot(elec_pos(:,1), elec_pos(:,2), 'ko', 'MarkerSize', 10, 'MarkerFaceColor', 'w');
colorbar;
axis equal tight;
xlabel('水平距离 (m)');
ylabel('深度 (m)');
title('2D灵敏度分布');
end
function plot_sensitivity_3D(S, grid, elec_pos1, elec_pos2)
figure;
slice(grid.x, grid.y, grid.z, S, ...
median(grid.x), median(grid.y), median(grid.z));
hold on;
plot3(elec_pos1(:,1), elec_pos1(:,2), elec_pos1(:,3), 'k-', 'LineWidth', 2);
plot3(elec_pos2(:,1), elec_pos2(:,2), elec_pos2(:,3), 'r-', 'LineWidth', 2);
colorbar;
xlabel('X (m)'); ylabel('Y (m)'); zlabel('Z (m)');
title('3D跨井灵敏度分布');
end
程序优化技巧:
- 使用并行计算加速多重电极对循环
- 采用稀疏矩阵存储大型灵敏度矩阵
- 预计算并复用相同电极配置的电位场
- 对规则网格使用快速傅里叶变换求解电位场
7. 实际工程案例与验证
以某地下水污染调查项目为例,我们组合应用了表面ERT和跨井ERT:
- 场地条件:
- 面积:100m×60m
- 污染羽状体预计深度:5-25m
- 已有监测井3口
- 方案设计:
- 表面ERT:60电极,偶极-偶极排列
- 跨井ERT:3口井中各布置24电极
- 联合数据采集方案
-
灵敏度分布对比:
| 参数 | 表面ERT | 跨井ERT |
|-------------|---------|---------|
| 水平分辨率 | 2-3m | 1-1.5m |
| 垂向分辨率 | 3-5m | 0.5-1m |
| 最大探测深度| 30m | 50m |
| 数据量 | 1500 | 3000 | -
实施中发现的问题与解决:
- 问题1:井中电极接触不良
- 解决方案:使用膨润土浆改善接触
- 问题2:地表局部高阻区数据异常
- 解决方案:增加电极接地盐水
- 问题3:井间数据反演不稳定
- 解决方案:加入灵敏度加权约束
- 效果验证:
通过后期钻孔取样验证,ERT反演结果与实际情况吻合度达到85%以上,成功圈定了污染羽状体的三维分布。
