【电磁】求解瞬变电磁TEM层状介质正演【含Matlab源码 2164期】

本文介绍了使用Matlab求解瞬变电磁层状介质正演问题的方法,包括基于大定源回线的电磁场理论,提供部分源代码示例,并展示了不同模型的运行结果。文中还讨论了Matlab版本和相关研究参考文献。
摘要由CSDN通过智能技术生成

在这里插入图片描述

⛄一、获取代码方式

获取代码方式1:
完整代码已上传我的资源:【电磁】基于matlab求解瞬变电磁TEM层状介质正演【含Matlab源码 2164期】
点击上面蓝色字体,直接付费下载,即可。

获取代码方式2:
付费专栏Matlab物理应用(初级版)

备注:
点击上面蓝色字体付费专栏Matlab物理应用(初级版),扫描上面二维码,付费29.9元订阅海神之光博客付费专栏Matlab物理应用(初级版),凭支付凭证,私信博主,可免费获得1份本博客上传CSDN资源代码(有效期为订阅日起,三天内有效);
点击CSDN资源下载链接:1份本博客上传CSDN资源代码

⛄二、瞬变电磁

1 引言
瞬变电磁法的主要工作装置有中心回线、重叠回线、大定源回线等, 其中又以大定源回线装置应用最为广泛。大回线源装置的工作方法是采用较长的发送回线, 利用阶跃波电流场源激励, 在大地产生过渡过程场, 断电瞬间在大地中形成涡旋交变电磁场。在回线内外一定的范围内, 可观测到这种由地下介质产生的二次感应电磁场, 随时间变化的衰减特性, 进而从测量得到的异常信号中分析出地下不均匀体的导电性能和位置, 以达到解决地质问题的目的。大回线装置与目标体具有最佳耦合、异常幅值大、形态简单、受旁侧地质体影响小的特点, 并对高阻层有很强的穿透能力, 对低阻层有较高的分辨能力。这种装置对铺设回线的要求不是很严格, 一旦铺好回线后, 不仅可采用多台接收机同时工作, 而且可以把接收线圈排成阵列, 发展成阵列式接收的观测系统。这种场源具有发射磁矩大、场均匀及随距离衰减慢等特点, 适合于密集点距采样, 精细探测。

大回线由于面积较大, 不能看作磁偶极子。因此, 研究大回线源激发的电磁场有着重要的意义。 国内、外对大回线源产生电磁场的研究并不多, 翁爱华等首先求出任意一层电磁波的反射系数和透射系数, 然后据此计算了圆形发射回生的频率域电磁场;M.Poddar根据电磁学互易原理和垂直磁偶源产生的电磁场;求解出距形发射回线产生的频率域电磁场;Nagendra Partap Singh等利用超几何分布函数, 化简了圆形发射回线电磁场表达式中贝塞尔函数的乘积, 从而求解出频率域电磁场。

作者从基本的电磁场理论出发, 给出大回线发射源框内外不同位置的电磁响应表达式, 利用一种新的算法计算电磁响应, 并与传统的线性数值滤波法计算结果进行了对比分析 (对比所用的滤波权系数, 采用Anderson计算的801个系数) 。

2 理论基础
在这里插入图片描述
每个区间上的积分, 采用以下形式计算:
在这里插入图片描述
式中m是积分阶数;w是与横坐标x有关的权重向量。

通过对上述方程做简单的变换, 可以变换成与FHT算法一样的形式:
在这里插入图片描述

⛄三、部分源代码

close all
clc
clear
%%% 受Matlab计算精度所限,观测时间范围设置在10(-7)至10(-2)s以内。
%%% 受Matlab计算精度所限,各层的测试电阻设置在500欧姆以下。
%%% FORTRAN语言才是电磁波场正反演的经典编程语言,MATLAB可用于简单测试
t=logspace(-7,-2,100);
%两层模型测试
[V1]=TEMforward4([500],[]);
[V2]=TEMforward4([100],[]);
[V3]=TEMforward4([500,100],[50]);
%三层模型测试
[V4]=TEMforward4([200],[]);
[V5]=TEMforward4([50],[]);
[V6]=TEMforward4([500],[]);
[V7]=TEMforward4([200,50,500],[50,100]);
%四层模型测试
[V20]=TEMforward4([500,100,1000,200],[50,200,500]);
%一层模型绘图
V11=[V1;V2];
figure(1);
loglog(t,V11,‘.-’);
legend(‘500欧姆’,‘100欧姆’);
xlabel(‘时间 / s’)
ylabel(‘电压 / V’)
%两层模型绘图
V=[V1;V2;V3];
figure(2);
loglog(t,V,‘.-’);
legend(‘第一层’,‘第二层’,‘两层’);
xlabel(‘时间 / s’)
ylabel(‘电压 / V’)
%三层模型绘图
V12=[V4;V5;V6;V7];
figure(3);
loglog(t,V12,‘.-’);
legend(‘第一层’,‘第二层’,‘第三层’,‘三层’);
xlabel(‘时间 / s’)
ylabel(‘电压 / V’)
%四层模型绘图
figure(4);
loglog(t,V20,‘.-’);
legend(‘{\rho}=[500,100,1000,200] H=[50,200,500]’);
xlabel(‘时间 / s’)
ylabel(‘电压 / V’)

⛄四、运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

⛄五、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]柳建新,张维,曹创华,蔡盛.大定源瞬变电磁均匀层状介质正演计算[J].物探化探计算技术. 2014,36(02)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

  • 22
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
瞬变电磁(Transient Electromagnetic,简称TEM是一种地球物理探测方,可以用来探测地下岩矿、地下水、地下油气等物质的存在及分布情况。TEM正演模拟是一项重要的工作,可以用来验证理论、优化测量方案和解释实际观测数据。 在MATLAB求解TEM层状介质正演,首先需要确定电源和接收器的位置,以及地下介质的参数,如电阻率、磁导率和介电常数等。然后,可以采用二维有限元或差分等数值方求解电磁场分布。最终,可以得到在不同时间和空间位置处的电磁场强度和方向。 以下是求解TEM层状介质正演MATLAB源码示例: ```matlab % TEM正演模拟 % 定义参数 f=1e4; % 频率,单位Hz mu0=4*pi*1e-7; % 真空磁导率,单位H/m epsilon0=8.85e-12; % 真空介电常数,单位F/m rho=100; % 地下介质电阻率,单位Ω·m h=20; % 层厚,单位m % 计算波长、入射角和传输系数 lambda=sqrt(rho*mu0/(2*pi*f)); theta=atan(sqrt(mu0/epsilon0/rho)); tau=1+2*sqrt(-1)*tanh(sqrt(-1)*lambda*sin(theta)*h)/sqrt(-1)*lambda*sin(theta)*rho; % 定义电源位置和接收器位置 src_pos=[-100;0]; % 单位m rcv_pos=[100;0]; % 单位m % 计算电源激励 src_exc=exp(-sqrt(-1)*2*pi*f*tau*norm(src_pos-rcv_pos)/3e8); % 计算电磁场分布 Nx=100; % x方向节点数 Ny=100; % y方向节点数 dx=1; % x方向步长,单位m dy=1; % y方向步长,单位m x=linspace(-500,500,Nx); % x方向坐标,单位m y=linspace(-500,500,Ny); % y方向坐标,单位m [X,Y]=meshgrid(x,y); % 构成网格 z=-h/2:0.1:h/2; % 层内z方向节点数 dz=z(2)-z(1); % z方向步长,单位m Ex=zeros(Ny,Nx,length(z)); % x方向电场,单位V/m Ey=zeros(Ny,Nx,length(z)); % y方向电场,单位V/m Hz=zeros(Ny,Nx,length(z)); % z方向磁场,单位A/m for k=1:length(z) z_pos=z(k); m=zeros(Ny,Nx); omega=2*pi*f; for i=1:Nx for j=1:Ny X_pos=X(i,j); Y_pos=Y(i,j); r=sqrt((X_pos-src_pos(1))^2+(Y_pos-src_pos(2))^2+(z_pos-h/2)^2); m(j,i)=((X_pos-rcv_pos(1))*(z_pos-h/2)-... (Y_pos-rcv_pos(2))*(src_pos(1)-rcv_pos(1)))/r^3; Ex(j,i,k)=m(j,i)/rho*src_exc*sqrt(-1)*omega*mu0/(4*pi); Ey(j,i,k)=m(j,i)/rho*src_exc*sqrt(-1)*omega*mu0/(4*pi); Hz(j,i,k)=(z_pos-h/2)*src_exc/r^3/sqrt(-1)*omega*epsilon0; end end end % 可视化电磁场分布 figure subplot(1,3,1) imagesc(x,y,abs(Ex(:,:,end))) xlabel('x') ylabel('y') title('Ex') colorbar subplot(1,3,2) imagesc(x,y,abs(Ey(:,:,end))) xlabel('x') ylabel('y') title('Ey') colorbar subplot(1,3,3) imagesc(x,y,abs(Hz(:,:,end))) xlabel('x') ylabel('y') title('Hz') colorbar ``` 以上代码采用差分求解电磁场分布,得到层内不同位置处的电场和磁场分布。最终,可视化了在x轴上的电磁场分布情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Matlab领域

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值