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=299792458,为光速,公式参考[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;Hea der.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下载地址:http://www.doczj.com/doc/53b7a572eefdc8d376ee32df.html /Download.html说明:翻译得不好,还望⼤家见谅,因为我也是边看边译的。3.1 GprMax2D命令的⼀般注意事项
为了描述GprMax2D/3D命令及其参数,我们作以下约定:f表⽰浮点数(如1.5或15e-1、1.5e1)i表⽰整数c表⽰字符str表⽰字符串
file表⽰输⼊⽂件名
所有空间距离的基本单位为⽶所有时间的基本单位为秒所有频率参数的基本单位是Hz3.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: i1i1⼤于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⽤了更有⼒的PMLABC。#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 str1F1 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:str1Str1是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:
因篇幅问题不能全部显示,请点此查看更多更全内容