GprMax2D / 3D 二进制格式文件头
以二进制格式存储的所有GprMax2D和GprMax3D输出文件都有一个16字节长的头部和一个数据部分。头部在所有GprMax2D / 3D文件中都相同,定义如下:
bytes 0-1 包含整数十六进制数2B67,它将文件标识为GprMax2D / 3D,并提供确定多字节实体的低字节(最低有效位)是先写还是最后写的方法。如果是文件的第一个字节(字节 0)是十六进制数67,文件首先记录为低字节(LITTLE ENDIAN ),但如果第一个字节是十六进制2B,则文件最后记录为低字节(BIG ENDIAN )。
bytes 2-3 包含一个正整数,用于确定文件的特定类型:
- 当前版本2.0
☞ 20200 GprMax2D #analysis:命令文件
☞ 20204 GprMax2D #snapshot:命令文件
☞ 20205 GprMax2D geometry 几何文件
☞ 30200 GprMax3D #analysis:命令文件
☞ 30204 GprMax3D #snapshot:命令文件
☞ 30205 GprMax3D geometry 几何文件
bytes 4 - 5 包含一个整数,它是存储在文件数据部分(NOT IN THE HEADER )中的每个整数类型数据(SWORD)使用的字节数的值。
bytes 6 - 7 包含一个整数,它是存储在文件数据部分中的每个浮点类型数据(SREAL)使用的字节数的值。
bytes 8 - 9 包含一个整数,它是用于在文件的数据部分中存储标题(TITLELENGTH)的字符数(字节)。
bytes 10 - 11 包含一个整数,它是用于在文件的数据部分中存储任何源类型说明符(SOURCELENGTH)的字符(字节)数。
bytes 12 - 13 包含整数,该整数是用于在文件的数据部分中存储任何介质标识符字符串(MEDIALENGTH)的字符(字节)数。
bytes 14 - 15 保留。
二进制格式输出文件的数据部分取决于文件的类型,而文件的类型又由字节2 - 3中的整数值确定。
值得注意的是,在GprMax2D / 3D二进制格式文件的数据部分
☞由int表示的所有整数都是SWORD字节长。
☞由float表示的所有浮点数都是SREAL字节长。
☞用char表示的字符存储在一个字节中。
☞ 二进制格式文件的数据部分从字节16 开始
GprMax2D BINARY(二进制)文件格式
#analysis:BINARY(二进制)输出文件
标题后,信息存储如下:
-
模型的标题在TITLELENGTH字节字符串中
-
已执行的迭代次数(NI)在float中
-
空间步长Δ x在float中
-
空间步长Δ y在float中
-
时间步长Δ t在float中
-
#analysis:命令(NSTEPS)中的步骤数在int中
-
x方向上的步骤,源点针对每条迹线移动,通过标准化Δ X ,存储在int中
- y方向上的步骤,源点针对每条迹线移动,标准化为Δ y ,存储在int中
- 在步骤X方向与该输出点(接收器),用于每个轨迹移动时,通过归一化Δ X,存储在int中
- 在步骤ÿ方向与该输出点(接收器),用于每个轨迹移动时,通过归一化Δ y,存储在int中
-
使用#tx: commands(NTX)指定的发送器数量在int中
-
使用#rx: commands(NRX)指定的接收器数量在int中
-
使用#rx_box:命令(NRXBOX)指定的接收器盒区域的数量在int中
-
在analysis中对于每个发射器(源)#tx:
-
源的x坐标以int的单元坐标表示
-
源的y坐标以int的单元坐标表示
-
源类型(即源ID)在SOURCELENGTH字节字符串中
-
初始源时间延迟为浮点数float
-
源移除的时间为浮点数float
-
-
在analysis中对于每一个接收器#rx:
-
接收器的x坐标以int的单元坐标表示
-
接收器的y坐标以int的单元坐标表示
-
-
在analysis中对于每个接收器区域#rx_box:
-
盒子输出区域(NRXBOXOUT)的输出点总数在int中
-
盒子中每个接收器的x坐标以int中的单元坐标表示
-
盒子中每个接收器的y坐标以int中的单元坐标表示
-
对于每个#rx:输出点(NRX),电磁场Ez,Hx,Hy的成分按顺序存储在浮点中,然后对于每个#rx_box中定义的每个输出点:(NRXBOXOUT),每个时间步,在分析中的总(NI)时间步长和总(NSTEPS)运行数。
#snapshot:BINARY(二进制)输出文件
标题(头部)后,信息存储如下:
-
模型的标题在TITLELENGTH字节字符串中
-
已执行的迭代次数(NI)在float中
-
空间步长Δ X在float中
-
空间步长Δ y在float中
-
时间步长Δ t在float中
-
快照的全局源位置编号在int中
-
快照区域左下方X坐标坐标以int的单元坐标表示
- 快照区域左下方y坐标坐标以int的单元坐标表示
-
快照区域右上方X坐标坐标以int的单元坐标表示
-
快照区域右上方y坐标坐标以int的单元坐标表示
-
在采样间隔X方向,归一化Δ x,存储在INT
-
在采样间隔ÿ方向,归一化Δ y,存储在INT
-
拍摄快照的时刻,由Δt标准化(即迭代数量- BER),存储在浮点数float
-
x方向的样本数在int中
-
y方向的样本数在int中
-
每个x,y采样点的Ez电磁场分量的值都存储在浮点数中。图示用伪代码说明了用来存储场组成值的过程。
-
每个x,y采样点的Hx电磁场分量的值都存储在浮点数中。图示用伪代码说明了用来存储场组成值的过程。
-
每个x,y采样点的Hy电磁场分量的值都存储在浮点数中。图示用伪代码说明了用来存储场组成值的过程。
Geometry(几何)输出文件
几何文件始终以二进制格式存储。标题后,信息存储如下:
- 模型的标题在TITLELENGTH字节字符串中
- 已执行的迭代次数(NI)在float中
- 空间步长Δ x在float中
- 空间步长Δ y在float中
- 时间步长Δ t在float中
- 在X方向上单元(NX)数量(编号)在int中
- y方向的单元格数(NY)在int中
- 模型中存在的不同媒体(PMEDIA)的数量在int中
- 列表PMEDIA媒体长标识符。其中标识符存储在MEDIALENGTH字符(字节)字符串中。
- 对于模型中的每个单元格,以int(2个字节)来存储 单元ID 。上图中所示的循环结构用于存储这些值。每个单元ID对应于列表条目的不同媒体([1..PMEDIA])。
GprMax2D ASCII文件格式
ASCII输出文件可以使用任何文本编辑器或文字处理软件进行编辑,存储在其中的信息通常是不言自明的。