资源描述
GprMax中GprMax2D用法
V1.3
实验环境:
操作系统:Windows7
软件版本:MATLAB7.1&GprMaxV2.0
参照资料:
[1]UserGuideV2.pdf
一、GprMax2D软件使用
1.1 直接运营
..\GprMaxV2.0\Windows文献夹下GprMax2D.exe文献,会浮现如下窗口(也可以在命令提示符窗口输入命令运营) :
1.2 输入文献名
注意:要输入文献全途径;*.in文献只要浮现任何语法错误或者途径错误,软件都会自动关闭,不会有任何错误提示。
浮现如下画面(以自带例子文献bre1.in为例,*.in命令参照前面文章或[1]):
运营完毕会发现..\GprMaxV2.0\Windows文献夹下多了两个文献bre1.out、bre1.geo文献,复制到tools文献夹。
二、数据成像
tools文献夹下有五个m文献:gprmax.m,gprmax2g.m,gprmax3g.m,gprmaxde.m ,gprmaxso.m。
这里只讲gprmax2g.m,gprmax.m这两个文献用法,其她三个后来有空再写。gprmax3g.m是解决GprMax3D几何数据;gprmaxde.m用来计算Debye公式(参照[1])介电常数;gprmaxso.m用于计算勉励函数。
2.1 gprmax2g.m用法
gprmax2g函数用于读取GprMax2D软件仿真探地雷达模型生成二进制几何数据。
gprmax2g函数原型:
[mesh,header,media] = gprmax2g( 'filename' )
filename是.geo文献名;
media:存储介质类型,media.type;
header:存储模型几何参数;
header.title:模型名称;
header.dx:模型在X轴每次偏移大小(单位:m);
header.dy:模型在Y轴每次偏移大小(单位:m);
header.dt:最大容许时间步长(单位:秒);
header.nx:模型在X轴偏移次数;
header.ny:模型在Y轴偏移次数;
例子:如输入文献*.in中定义:
#domain:2.5 0.65
#dx_dy:0.0025 0.0025
那么:header.dx=0.0025;header.dy=0.0025;
header.dt = 1/(c*sqrt(1/header.dx^2+1/header.dy^2));(其中c=,为光速,公式参照[1]);
header.nx=2.5/0.0025=1000;header.ny=0.65/0.0025=260;
mesh:存储模型数据,M x N数组,其中M为Y轴方向Yee单元数目,N为X轴方向Yee单元数目;M=header.nx,N=header.ny;
gprmax2g.m使用例子:
filegeo = 'bre1.geo';
[meshdata,header,media]=gprmax2g(filegeo);
figure(1);
[MM,NN]=size(meshdata);
imagesc((1:NN)*header.dx,(1:MM)*header.dy,meshdata)
axis('equal');
xlabel('x(m)');
ylabel('y(m)');
2.2 gprmax.m用法
gprmax函数用于读取GprMax2D与GprMax3D软件仿真探地雷达模型生成二进制波形数据。
gprmax函数原型:
[Header,Fields] = gprmax( 'filename' )
filename是.out文献名;
1) Header:该变量涉及如下成员:
Header.title: 模型名称;
Header.iterations:迭代次数;
Header.dx:在X轴每次偏移大小;
Header.dy:在Y轴每次偏移大小;
Header.dt:最大容许时间步长;
Header.NSteps:仿真次数;等于*.in文献中#analysis:命令第一种参数;
例子:如输入文献*.in中定义:
#domain:2.5 0.65
#dx_dy:0.0025 0.0025
#time_window:12e-9
……
#analysis:115 bre1.out b
#tx:0.0875 0.4525 MyLineSource 0.0 12e-9
#rx:0.1125 0.4525
#tx_steps:0.02 0.0
#rx_steps:0.02 0.0
#end_analysis:
……
那么,Header.iterations=ceil(Header.removed/Header.dt);
Header.dx=0.0025;Header.dy=0.0025;
Header.dt= 1/(c*sqrt(1/Header.dx^2+1/Header.dy^2));
Header.NSteps=115;
Header.TxStepX=0.02/Header.dx=8;Header.TxStepY=0.0/Header.dy=0;
Header.RxStepX=0.02/Header.dx=8;Header.RxStepY=0.0/Header.dy=0;
Header.ntx:
Header.nrx:
Header.nrx_box:
Header.tx=0.0875/Header.dx=35;
Header.ty=0.4525/Header.dy=181;
Header.source=’MyLineSource’;
Header.delay=0;(等于#tx:命令第四个参数)
Header.removed=12e-9;(等于#tx:命令第五个参数)
Header.rx=0.1125/Header.dx=45;
Header.ry=0.4525/Header.dy=181;
2)Fields:该变量涉及如下成员:
Fields.t:每个波形时间轴。数组大小Header.iterations*1;
Fields.ez:Z轴方向磁矢量数据。数组大小Header.iterations*1* Header.NSteps;
Fields.hx:X轴方向电矢量数据。数组大小Header.iterations*1* Header.NSteps;
Fields.hy:Y轴方向电矢量数据。数组大小Header.iterations*1* Header.NSteps;
由于GprMax仿真是基于FDTD算法,以上三者关系为:
详细可参照FDTD算法有关文献。
gprmax.m使用例子:
fileout = 'bre1.out';
[Header,Fields]=gprmax(fileout);
N=1:Header.NSteps; %移动次数
Position=Header.dx*Header.tx+(N-1)*(Header.dx*Header.TxStepX);%天线每次所在位置
Data(:,:)=Fields.ez(:,1,:); %转换数组格式
figure(2);
imagesc(Position,Fields.t*1e9,Data);%画图
colorbar
xlabel('Antena Position (m)');
ylabel('t(ns)');
GprMaxV2.0中GprMax2D输入文献命令
实验环境:
操作系统:Windows 7
软件版本:MATLAB 7.1 & GprMaxV2.0
参照文献:
GprMaxV2.0软件manual文献夹下UserGuideV2.pdf。
GprMaxV2.0下载地址:
阐明:翻译得不好,还望人们见谅,由于我也是边看边译。
3.1 GprMax2D命令普通注意事项
为了描述GprMax2D/3D命令及其参数,咱们作如下商定:
f表达浮点数(如1.5或15e-1、1.5e1)
i表达整数
c表达字符
str表达字符串
file表达输入文献名
所有空间距离基本单位为米
所有时间基本单位为秒
所有频率参数基本单位是Hz
3.2 GprMax2D 2.0版本共有32条命令:
#title:
#domain:
#dx_dy:
#time_step_stability_factor:
#time_window:
#messages:
#number_of_media:
#nips_number:
#media_file:
#geometry_file:
#medium:
#abc_type:
#abc_order:
#abc_stability_factors:
#abc_optimization_angles:
#abc_mixing_parameters:
#pml_layers:
#box:
#cylinder:
#x_segment:
#y_segment:
#triangle:
#analysis:
#end_analysis:
#tx:
#rx:
#rx_box:
#snapshot:
#tx_steps:
#rx_steps:
#line_source:
#excitation_file:
如下可以运营于GprMax中命令在GprMax2D版本2.0中将不再支持:
#scan:
#csg:
#extra_tx:
此外,某些命令旧参数规则亦发生了变化:
#tx:
#snapshot:
3.3 GprMax2D命令参数
为了更好地简介GprMax2D命令,咱们将它们提成四类:
普通命令:涉及用于指定大小和模型离散
ABC有关命令:容许定制和优化吸取边界条件
介质和对象构造命令:用不同参数来在模型中引入不同介质和构造简朴几何形状
勉励和输出命令:用来放置源代码和模型输出点
运营GprMax2D最低限度命令如下:
•#domain:
•#dx_dy:
•#time_window:
•至少一种#analysis:及与其相应结束命令#end_analysis:
至少一种#tx:与#rx:,或者#rx_box:命令
• 为了使#tx:命令对的运营,同步需要一行新#line_source:命令
3.3.1普通命令
#title:
模型题目
#title:str
Str即是模型题目,必要是单行。
#domain:
模型范畴(单位:米)
#domain:f1 f2
f1与f2分别代表x和y轴上量度大小
#domain:1.0 1.5
表达1.0*1.5大小范畴
#dx_dy:
表达x和y轴上偏移量(如△x、△y)
#dx_dy:f1 f2
表达x轴偏移f1和y轴方向上偏移f2
#domain:1.0 1.5
#dx_dy:0.1 0.1
则模型单元数为10*15
#domain:1.0 1.5
#dx_dy:0.01 0.01
则模型单元数为100*150
最大容许时间步△t与△x、△y约束关系如下:
(3.1)
C为光速,GprMax2D中计算△t使用3.1式等号。
#time step stability factor:
通过该命令,你可以修改GprMax2D所计算△t值,但必要满足3.1式规定。
#time_window:
用于指定所需总模仿时间。语法:
#time_window:f1
或者
#time_window:i1
总迭代次数和模仿时间窗口: (3.2)
#number_of_media:
但你需要使用不不大于10个介质时必要使用该命令,由于GprMax2D只初始化了10个介质使用空间。
#number_of_media:i1
i1不不大于10。
#media_file:
使用该命令,你可以定义惯用介质所描述构造参数文献途径与名称。
#geometry_file:
使用该命令,你可以定义模型几何信息二进制文献。这些信息可以用于创立模型图像与检查创立对的与否。
#geometry_file:model.geo
#messages:
使用该命令,你可以控制软件运营时在屏幕上输出信息。
#messages:c1
#nips_number:
该命令仅当在GprMax2D需要时才用于你输入文献中。
#nips_number:i1
4.1 GPRMAX3D命令普通注释
大多数可以用在GPRMAX3D命令几乎和GPRMAX2D是同样。但是,有某些命令是GPRMAX3D独有。为了简要扼要,这里只阐述与GPRMAX2D不同命令。
基本空间和暂时离散环节分别为△t和△x,△y,△z。
4.2 命令清淡
在版本2里面,GPRMAX3D一共有42个命令用在3D GPR建模中。她们是:
#title:
#domain:
#dx_dy_dz:
#time_step_stability_factor:
#messages:
#number_of_media:
#nips_number:
#media_file:
#geometry_file:
#medium:
#abc_type:
#abc_order:
#abc_stability_factors:
#abc_optimization_angles:
#abc__mixing_parameters:
#pml_layers:
#box:
#cylinder:
#cylinder_new:
#cylindrical_segment:
#sphere:
#plate:
#edge:
#triangle:
#bowtie:
#thin_wire:
#analysis:
#end_analysis:
#tx:
#rx:
#rx_box
#snapshot:
#tx_steps:
#rx_steps:
#huygens_surface:
#hertzian_dipole:
#voltage_source:
#transmissio_line:
#plane_wave:
#excitation_file:
4.3 GPRMAX3D命令参数
为了更好地简介GprMax2D命令,咱们将它们提成四类:
1.普通命令:涉及用于指定大小和模型离散
2. ABC有关命令:容许定制和优化吸取边界条件
3.介质和对象构造命令:用不同参数来在模型中引入不同介质和构造简朴几何形状
4.勉励和输出命令:用来放置源代码和模型输出点
4.3.1 普通命令
#title:
与GprMax2D用法形同
#domain:
用来指定模型尺寸(单位:米)
#domain: f1 f2 f3
f1,f2和f3分别是模型x,y,z方向上大小
#dx_dy_dz:
指定x,y,z方向上增量
#dx_dy_dz:f1 f2 f3
f1是空间步x方向上增量,f2是空间步y方向上增量,f3是空间步z方向上增量。空间离散化控制最大容许时间步△t和为了达到所需要仿真时间窗而提出解决方案。△t和△x,△y,△z之间关系是:
(4.1)
其中c为光速。在GPRMAX3D中,上式取等号。4.1中,一种小△x,△y,△z值导致△t得小值,这个△t小值意味着为了达到所给仿真时间而需要更多迭代次数。但是,需要指出更小△x,△y,△z和△t值会让模型更精准。
#time_step_stability_factor:
用法与GPR2D相似。可以修改△t值。
#time_window:
用法与GPR2D相似。
#number_of_media:
用法与GPR2D相似。
#geometry_file:
用法与GPR2D相似。
#messages:
用法与GPR2D相似。
#nips_number:
用法与GPR2D相似。仅当GPRMAX3D被规定用时,才必要用到她。
4.3.2 ABC 有关命令
在GPRMAX 3D这些影响Higdon ABCs配备和性能命令与GPRMAX 2D用法相似。但是,GPRMAX3D用了更有力PML ABC。
#abc_type:pml
#abc_type:higdon 可以设立ABC默认参数。
#pml_layers:i1
i1是pml所占Yee单元数目。默认值为8。所占用Yee单元数越多,PML性能越好,但是所花计算资源也越多。并且,有两点要注意:
a) PML是几何模型一某些。但是,PML层里域不参加计算并且用她们来计算就是错。因而,不要把源和接受器设立在这个区域。PML深度是用YEE 单元来度量而不是距离。
b) 注意:当前PML仅用于非磁介质。因而,如果你模型需要用到磁性参数,你必要用Higdoon ABC而不是PML。
4.3.3 介质和对象构造命令
在GPRMAX3D中,这些命令用来容易引入模型中不同介质和介质构造。在解决普通命令之后,GPRMAX3D建立一种初始化为free space(air)任意尺寸模型。
注意,free space和pec已经被定义在GPRMAX3D中,你不必再去定义这两种介质。因而,核心词free_space和pec可以直接用而不需要再定义参数。
其她介质她们参数必要通过下面之一来设立:
l #media_file:命令包括各种各样经惯用介质定义(见附录A)
l #medium: 输入文献中命令
#medium:
和GPRMAX2D中用法相似。并且,同一种介质文献可以不变化她们构造下既用到GPRMAX2D又用到GPRMAX3D
#thin_wire:
引入细电线模型。细电线被用作介质标示符给#dege:对象构造命令。
#thin_wire: f1 str1
f1是电线半径,并且为了建立适当细电线物理模型,必要必△l小。Str1是介质ID。Thin wire被以为是pec。
例:#thin_wire: 0.001 MyWire
#box: f1 f2 f3 f4 f5 f6 str1
f1 f2 f3是左下角坐标,f4 f5 f6是右上角坐标。Str1是#medium:定义标示符。
#plate:f1 f2 f3 f4 f5 f6 str1
f1 f2 f3是金属板左下角坐标。f4 f5 f6是金属板右上角坐标。str1 是介质标示符。
#triangle:
三角行块。
#triangle: f1 f2 f3 f4 f5 f6 f7 f8 f9 str1
f1 f2 f3,f4 f5 f6 ,f7 f8 f9分别是三角形三个顶点坐标。str1是介质标示符。
#bowtie:
蝴蝶天线。由两个三角形块构成
#bowtie:c1 c2 f1 f2 f3 f4 f5 str1
C1是蝴蝶天线方向,x,y或者z。c2是剩余方向。F1,f2,f3是天线馈电点x,y,z坐标。F4是天线元长度(完整蝴蝶天线长度一半)。f5是展开角。Str1是介质标示符。
#edge:
一种天线。这个天线仅仅是YEE元边沿,当建立电阻或者细电线是可以用她。
#edge:f1 f2 f3 f4 f5 f6 str1
F1 f2 f3是边沿起始坐标,f4 f5 f6是边沿结束坐标。Str1是介质标示符。
#cylinder:
有限维3D圆柱模型。
#cylinder:c1 f1 f2 f3 f4 f5 str1
C1是圆柱轴方向,可以是x,y或z。f1和f2分别是圆柱轴高低坐标。F3,f4是其她重要坐标用来表达两个圆柱圆形面中心。
l X方向圆柱(f1,f3,f4)为(x1,y,z),(f2,f3,f4)为(x2,y,z)
l y方向圆柱(f3,f1,f4)为(x,y1,z),(f3,f2,f4)为(x,y2,z)
l z方向圆柱(f3,f4,f1)为(x,y,z1),(f3,f4,f2)为(x,y,z2)
f5是圆柱圆盘半径,str1是介质标示符。
#cylinder_new:
有限维3D圆柱。与#cylinder:不同是,它轴向可以是任意。
#cylinder_new: f1 f2 f3 f4 f5 f6 f7 str1
F1 f2 f3 是圆柱底面圆心坐标,f4 f5 f6是圆柱顶面圆心坐标。F7是圆柱底面半径。Str1是介质标示符。
#cylindrical_segment:
圆柱一段。
#cylindrical_segment:c1 f1 f2 f3 f4 f5 str1 c2 f6 f7
C1是圆柱轴向,可以是x,y,z。f1,f2是圆柱轴向上部和下部坐标。F3,f4是表达圆柱顶,底部其她两个坐标。F5是顶,底部半径。C2是片段变化方向。F6,f7是片段起始和结束点。
#sphere:
球体。
#sphere: f1 f2 f3 f4 str1
F1 f2 f3是球心坐标 f4是球半径。Str1是介质标示符
4.3.4 勉励和输出命令
#excitation_file:
容许顾客指定单个包括可以勉励模型幅度值清单ASCII文献。这些值至少要和迭代次数相等。
#excitation_file:str1
Str1是ASCII文献名字。
例:#excitation_file: mysource.dat
#hertzian_dipole:
定义最简朴勉励。
#hertzian_dipole:f1 f2 str1 str2
F1 f2分别是源波形幅度和频率。Str1是波形标示符。Str2是源标示符。
例:#hertzian_dipole:1.0 600e6 ricker MyDipole
与GPRMAX2D里面#line_source等价
#voltage_source:
定义电压源。它引入一种电压器件位置,可以是一种硬源或者一种内部集成电阻。
#voltage_source:f1 f2 str1 f3 str2
F1 f2是源波形振幅和频率。Str1是波形标示符。 F3是内部电阻R。
例:#voltage_source:1.0 600e6 gaussian 50.0 MyVolt
#transmission_line:
定义可以刺激天线1D两线传播线参数。
#transmission_line: f1 f2 str1 f3 f4 str2
F1 f2是源波形振幅和频率,str1是勉励类型。F3是传播线长度。F4是阻抗特性,str2是源标示符
例:#transmission_line:1.0 600e6 gaussian 0.5 200.0 MyLine
#plane_wave:
描述平面波源
#plane_wave:f1 f2 str1 f3 f4 f5 str2 str3
F1 f2是源波形振幅和频率,str1是勉励类型。F3 f4分别是0到pi和0到2pi角度。
#huygens_surface:
必要与平面波同步用。
#huygens_surface:f1 f2 f3 f4 f5 f6 str1
F1 f2 f3是huygens表面左下角坐标,f4 f5 f6是右上角坐标。Str1是要用到#plane_wave标示符
例:#huygens_surface:0.2 0.2 0.2 0.8 0.8 0.8 MyHugens
#tx:c1 f1 f2 f3 str1 f4 f5
C1源极化方向,可以是x,y,z。f1 f2 f3是源坐标。Str1是源ID,f4是勉励掩饰,f5是源移去时间。
#rx: f1 f2 f3
F1 f2 f3是输出点坐标
#rx_box:f1 f2 f3 f4 f5 f6 f7 f8 f9
F1 f2 f3是输出体积左下坐标,f4 f5 f6是输出体积右上坐标,f7 f8 f9是定义每一方向输出点步数。最小值为f7为△x,f8为△y,f9为△z。
#tx_steps:f1 f2 f3
F1 f2 f3是x,y,y增量
#rx_steps:f1 f2 f3
同上
#snapshot:
获得模型区域电磁场信息。
#snapshot:i1 f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 filed1 c1
或者
#snapshot:i1 f1 f2 f3 f4 f5 f6 f7 f8 f9 i2 filed1 c1
i1是一种成为全局户勉励点计数器。它决定哪一种snapshot被用勉励源位置。她值在1和步数之间,这个步数定义为#analysis第一种参数
f1 f2 f3是左下角坐标;f4 f5 f6是右上角坐标;f7f8f9是x,y,z方向上样本间隔。
f10或i2是snapshot时间,或者迭代次数。
file1是存储snapshot文献名
c1 可以是a或者b表达snapshot格式是ASCII还是BINARY
GprMax中GprMax3D用法
诸多网友问我GprMax 3D用法,没有那么多时间去一一论述GprMax 3D原理。
直接贴一种GprMax 3D例子上来,给人们参照吧。
*注:这个例子也是好久之前参照网上一种例子,来源应当是来源这里:
(1)Second.in文献内容如下:
#medium:6.0 0.0 0.0 0.01 1.0 0.0 concrete
--------------------------------------
#domain:0.6 1.2 0.65
#dx_dy_dz:0.01 0.01 0.01
#time_window:12e-9
--------------------------------------
#box:0.0 0.0 0.0 0.6 1.2 0.5 concrete
#box:0.2 0.5 0.1 0.4 0.7 0.3 free_space
--------------------------------------
#hertzian_dipole:1.0 900e6 ricker MyDipole
#analysis:21 second.out b
#tx:x 0.3 0.115 0.55 MyDipole 0.0 12e-9
#rx:0.3 0.365 0.55
#tx_steps:0.0 0.04 0.0
#rx_steps:0.0 0.04 0.0
#end_analysis:
--------------------------------------
#geometry_file:second.geo
#messages:y
(2)GprMax 3D界面和运营办法跟GprMax 2D相似,这里不多说了。
Matlab解决文献:
name = 'second.geo';
[mesh,ID,header,media] = gprmax3g(name);
figure
p1=patch(isosurface(mesh,1));
set(p1,'facecolor',[1,0,0],'edgecolor','none');
p2=patch(isosurface(mesh,2));
set(p2,'facecolor',[0,1,0],'edgecolor','none');
[Header,Fields] = gprmax('second.out');
radargram(:,:) = Fields.ez(:,1,:);
t=1e9*Fields.t;
Y = Header.dy * Header.rx:Header.dy * Header.RxStepY :Header.dy * Header.rx + (Header.dy * Header.RxStepY * (Header.NSteps-1));
figure;
imagesc(Y,t,radargram);
title('Ez');
ylabel('Time (ns)');
xlabel('Scan length (m)');
figure;
[x,y]=meshgrid(Y,t);
surf(x,y,radargram,'EdgeColor','none')
view([1,1,0.5]);
title('Ez' );
ylabel('Time (m)');
xlabel('Scan length (m)');
解决成果图像:(见下页)
(3)问题:
geo文献显示不对的,没时间去找为什么了,有空再弄吧。
展开阅读全文