一种适用于矩量法的近场数据快速无损压缩存储方法
技术领域
本发明涉及电磁环境数据存储,特别是涉及一种适用于矩量法的近场数据快速无损压缩存储方法。
背景技术
电磁环境数据库在进行设备测试、场景模拟等情况下具有着非常重要的作用,电磁环境数据库中的数据主要包含天线的近场数据和远场数据;
对于近场数据而言,一般通过传统矩量法得到的天线近场数据,但是这些数据占用硬盘空间很大,具有很大的冗余,且数据格式不适用于海量数据存储,也不适用于对存储长度要求非常严格的场合。
发明内容
本发明的目的在于克服现有技术的不足,提供一种适用于矩量法的近场数据快速无损压缩存储方法,能够有效降低近场数据的存储空间,且数据格式能够适用于海量数据的存储。
本发明的目的是通过以下技术方案来实现的:一种适用于矩量法的近场数据快速无损压缩存储方法,包括以下步骤:
S1.加载CAD网格模型:
从nastran格式的目标对象网格模型文件中提取CAD面元网格模型的点列表和点连接列表,设置材料的电磁参数信息和模型激励源参数,完成电磁模型创建工作;
优选地,所述目标对象包括天线、电路,或天线与电路形成的复杂组合体。
S2.将提取的CAD面元网格模型、设置的材料电磁参数信息,以及激励源参数转换成***矩阵[A]nbase×nbase和右侧激励项[rhs]nbase;
S3.确定CAD面元网格模型的点列表中每个网格顶点电场和磁场的近场计算公式,并据此计算出每个网格顶点电场和磁场;
S4.将步骤S1得到CAD面元网格模型的点列表和点连接列表导出网格数据文件;并将步骤S3得到的每个网格顶点的近场电场和磁场数据导出成近场数据文件;
S5.将导出近场数据文件和导出的网格数据文件读取进内存,分别建立CAD面元网格模型每个网格顶点与近场数据文件中电场和磁场数据的映射;
S6.对内存中的近场数据和网格数据进行压缩,并写入二进制文件;
S7.借助于rar压缩工具将步骤S6得到的数据进行二次压缩,得到最终的压缩存储文件。
所述步骤S2包括:
S201.将CAD面元网格模型中的点列表和点连接列表通过RWG基函数的格式转换成矩量法所需的基函数,设nbase为电磁模型中所有基函数未知量总数,材料的电磁参数信息包括磁导率μl和介电常数εl;激励源参数包括源点所在基函数区域的位置矢量和入射场分布;
S202.转换得到***矩阵[A]nbase×nbase:设amn为[A]nbase×nbase的第m行第n列元素,则amn填充公式如下:
其中,G为三维格林函数;
ω=2πf
0为角频率;f
0为频率;
为哈密尔顿算子;f
m和f
n为第m个和第n个基函数;r′为源点所在区域即f
n区域内的位置矢量;r为场点所在区域即f
m区域内的位置矢量;
S203.转换得到右侧激励项[rhs]nbase:设rhsm为右侧激励项[rhs]nbase中的第m个元素,则填充公式如下:
S204.通过矩阵求解计算求解[A]nbase×nbasex=[rhs]nbase得到x,作为每个基函数ibase未知量上的电流量x[ibase],ibase为1到nbase的整数下标。
所述步骤S3中,CAD面元网格模型的点列表中每个点电场和磁场的近场计算公式为:
其中,J为电流分布,M为磁流分布,计算域S′为所有面元组成的区域,r′为面元区域内的位置矢量,k为自由空间波数;将E(r)沿x,y,z三个方向进行投影,得到Ex、Ey、Ez;将H(r)沿x,y,z三个方向进行投影,得到Hx、Hy、Hz。
所述步骤S4中,近场数据文件的存储格式为维度为nPoint*12的二维浮点数,即每个网格顶点的近场数据文件包括12列数据,每个点的近场数据为一列,存储格式为:
第一列数据为re(Ex),第二列数据为im(Ex),第三列数据为re(Ey),第四列数据为im(Ey),第五列数据为re(Ez),第六列数据为im(Ez),第七列数据为re(Hx),第八列的数据为im(Hx),第九列的数据为re(Hy),第十列的数据为im(Hy),第十一列的数据为re(Ez),第十二列的数据为im(Ez);
其中,re(K)为取复数数组K的实部,im(K)为取复数数组K的虚部,Ex、Ey、Ez、Hx、Hy、Hz均为一维复数数组,Ex、Ey、Ez分别表示x,y,z三个方向上网格顶点的电场,Hx、Hy、Hz表示x,y,z三个方向上网格顶点的磁场。
所述步骤S6包括:
S601..对内存中加载的近场数据格式作如下归一化处理:
按照用户需求设定如下参数:空间分辨率:Sr、动态范围:Dr、幅度分辨率:Mr、相位分辨率:Pr,其中:
20≤Sr≤300;20≤Dr≤300;Dr≤Sr;0.01≤Mr≤1;0.1≤Pe≤5;
在计算前对Mr和Pr的值进行处理:
Nmr=ceil(log2Sr/Me)
Npr=ceil(log2360/Pr)
其中,Nmr为幅度存储位数,Npr为相位存储位数;
S602.对于每一个网格顶点的近场数据进行离散压缩处理:
第一步、从文件中读取的nPoint*12的二维浮点数组,每一个浮点即一个网格顶点,将该网格顶点的近场数据文件,将其恢复为:Ex、Ey、Ez、Hx、Hy、Hz,分别表示各个方向上的该网格顶点的电场或磁场;
对每一个网格顶点进行总场计算,公式为:
Etot=10*log10(|Ex|2+|Ey|2+|Ez|2+1e-30)
Htot=10*log10(|Hx|2+|Hy|2+|Hz|2+1e-30)
其中,1e-30的作用是为了保证log10取值的有效性;Etot和Htot都是一维实数数组,长度为nPoint;
第二步、取各个网格顶点处Etot的最大值记为Emax,取各个网格顶点处Htot的最大值记为Hmax;
第三步、对于任一个网格顶点的Ex、Ey、Ez和Hx、Hy、Hz进行处理:
A01.判断是否满足:Etot<Emax-Dr,若满足,Ex、Ey、Ez全部置0,不满足,Ex、Ey、Ez不变;
同理,判断是否满足Htot<Hmax-Dr若满足,则Hx、Hy、Hz全部置0,若不满足,则Hx、Hy、Hz不变;
A02.根据步骤A01得到的结果再次进行处理:
判断是否满足20*log10(|Ex|+1e-30)<Etot-Sr,若满足,Ex置0,若不满足,Ex不变;
判断是否满足20*log10(|Ey|+1e-30)<Etot-Sr,若满足,Ey置0,若不满足,Ey不变;
判断是否满足20*log10(|Ez|+1e-30)<Etot-Sr,若满足,Ez置0,若不满足,Ez不变;
判断是否满足20*log10(|Hx|+1e-30)<Htot-Sr,若满足,Hx置0,若不满足,Hx不变;
判断是否满足20*log10(|Hy|+1e-30)<Htot-Sr,若满足,Hy置0,若不满足,Hy不变;
判断是否满足20*log10(|Hz|+1e-30)<Htot-Sr,若满足,Hz置0,若不满足,Hz不变;
A03、对步骤A02得到的数据采用的场值离散化流程公式进行处理:
进行上述处理后,将每个网格顶点的处理后的近场数据作为一行,每行近场数据用6*(Nmr+Npr)个二进制数位表示;其中,int()表示取整函数,Mag()表示取幅度、Deg()表示辐角;
第四步、对于任一个网格顶点,将第三步的处理结果写入二进制文件:
第五步、对于不同的网格顶点,重复第三步和第四步,得到所有网格顶点近场数据的压缩结果。
本发明的有益效果是:本发明能够有效降低近场数据的存储空间,且数据格式能够适用于海量数据的存储和一些对存储长度要求非常严格的场合。
附图说明
图1为本发明的方法流程图。
具体实施方式
下面结合附图进一步详细描述本发明的技术方案,但本发明的保护范围不局限于以下所述。
如图1所示,一种适用于矩量法的近场数据快速无损压缩存储方法,包括以下步骤:
S1.加载CAD网格模型:
从nastran格式的目标对象网格模型文件中提取CAD面元网格模型的点列表和点连接列表,设置材料的电磁参数信息和模型激励源参数,完成电磁模型创建工作;
在本申请的实施例中,所述目标对象包括天线、电路,或天线与电路形成的复杂组合体。
S2.将提取的CAD面元网格模型、设置的材料电磁参数信息,以及激励源参数转换成***矩阵[A]nbase×nbase和右侧激励项[rhs]nbase:
S201.将CAD面元网格模型中的点列表和点连接列表通过RWG基函数的格式转换成矩量法所需的基函数,设nbase为电磁模型中所有基函数未知量总数,材料的电磁参数信息包括磁导率μl和介电常数εl;激励源参数包括源点所在基函数区域的位置矢量和入射场分布;
S202.转换得到***矩阵[A]nbase×nbase:设amn为[A]nbase×nbase的第m行第n列元素,则amn填充公式如下:
其中,G为三维格林函数;
ω=2πf
0为角频率;f
0为频率;
为哈密尔顿算子;f
m和f
n为第m个和第n个基函数;r′为源点所在区域即f
n区域内的位置矢量;r为场点所在区域即f
m区域内的位置矢量;
S203.转换得到右侧激励项[rhs]nbase:设rhsm为右侧激励项[rhs]nbase中的第m个元素,则填充公式如下:
S204.通过矩阵求解计算求解[A]nbase×nbasex=[rhs]nbase得到x,作为每个基函数ibase未知量上的电流量x[ibase],ibase为1到nbase的整数下标。
S3.确定CAD面元网格模型的点列表中每个网格顶点电场和磁场的近场计算公式,并据此计算出每个网格顶点电场和磁场;
CAD面元网格模型的点列表中每个点电场和磁场的近场计算公式为:
其中,J为电流分布,M为磁流分布,计算域S′为所有面元组成的区域,r′为面元区域内的位置矢量,k为自由空间波数;将E(r)沿x,y,z三个方向进行投影,得到Ex、Ey、Ez;将H(r)沿x,y,z三个方向进行投影,得到Hx、Hy、Hz。
S4.将步骤S1得到CAD面元网格模型的点列表和点连接列表导出网格数据文件;并将步骤S3得到的每个网格顶点的近场电场和磁场数据导出成近场数据文件;
以常见的三角形面单元网格为例,一般的存储格式包括如下四个部分:
1)点总数nPoint
2)点坐标列表Points
3)单元总数nElement顶点数nVertex
4)点连接列表Connects
其中,nPoint、nElement和nVertex为整型数据,点坐标列表存储的是维度为nPoint*3的二维浮点数组,Connects存储的维度为nElement*(nVertex+1)的二维整型数组,前nVertex列存储的是每个单元的各个顶点所在Points中的序号(序号以1开始计数),最后一列存储的是每个单元的材料编号(一般0表示完全电导体材料);
步骤S4中近场数据的一般存储文件格式为维度为nPoint*12的二维浮点数(单精度或双精度),即每个网格顶点的近场数据文件包括12列数据,每个点的近场数据为一列,每个点的近场存储格式(单行)格式为:
其中,re(K)为取复数数组K的实部,im(K)为取复数数组K的虚部,Ex、Ey、Ez、Hx、Hy、Hz均为一维复数数组,Ex、Ey、Ez分别表示x,y,z三个方向上网格顶点的电场,Hx、Hy、Hz表示x,y,z三个方向上网格顶点的磁场。
S5.将导出近场数据文件和导出的网格数据文件读取进内存,分别建立CAD面元网格模型每个点与近场数据文件中电场和磁场数据的映射;
S6.对内存中的近场数据和网格数据进行压缩,并写入二进制文件;
S601.对内存中加载的近场数据格式作如下归一化处理:
按照用户需求设定如下参数:空间分辨率(dB):Sr、动态范围(dB):Dr、幅度分辨率(dB):Mr、相位分辨率(度):Pr,其中:
20≤Sr≤300;20≤Dr≤300;Dr≤Sr;0.01≤Mr≤1;0.1≤Pe≤5;
在本申请的实施例中,Sr默认取120dB;Dr默认取60dB;Me默认取0.3;Pe默认取0.36;在计算前对Mr和Pr的值进行处理:
Nmr=ceil(log2Sr/Me)
Npr=ceil(log2360/Pr)
其中,Nmr为幅度存储位数,Npr为相位存储位数;
S602.对于每一个网格顶点的近场数据进行离散压缩处理:
从文件中读取的nPoint*12的二维浮点数组,每一个浮点即一个网格顶点,将该网格顶点的近场数据文件,将其恢复为:Ex、Ey、Ez、Hx、Hy、Hz,分别表示各个方向上的该网格顶点的电场或磁场;
对每一个网格顶点进行总场计算,公式为:
Etot=10*log10(|Ex|2+|Ey|2+|Ez|2+1e-30)
Htot=10*log10(|Hx|2+|Hy|2+|Hz|2+1e-30)
其中,1e-30的作用是为了保证log10取值的有效性;Etot和Htot都是一维实数数组,长度为nPoint;
第二步、取各个网格顶点处Etot的最大值记为Emax,取各个网格顶点处Htot的最大值记为Hmax;
第三步、对于任一个网格顶点的Ex、Ey、Ez和Hx、Hy、Hz进行处理:
A01.判断是否满足:Etot<Emax-Dr,若满足,Ex、Ey、Ez全部置0,不满足,Ex、Ey、Ez不变;
同理,判断是否满足Htot<Hmax-Dr若满足,则Hx、Hy、Hz全部置0,若不满足,则Hx、Hy、Hz不变;
A02.根据步骤A01得到的结果再次进行处理:
判断是否满足20*log10(|Ex|+1e-30)<Etot-Sr,若满足,Ex置0,若不满足,Ex不变;
判断是否满足20*log10(|Ey|+1e-30)<Etot-Sr,若满足,Ey置0,若不满足,Ey不变;
判断是否满足20*log10(|Ez|+1e-30)<Etot-Sr,若满足,Ez置0,若不满足,Ez不变;
判断是否满足20*log10(|Hx|+1e-30)<Htot-Sr,若满足,Hx置0,若不满足,Hx不变;
判断是否满足20*log10(|Hy|+1e-30)<Htot-Sr,若满足,Hy置0,若不满足,Hy不变;
判断是否满足20*log10(|Hz|+1e-30)<Htot-Sr,若满足,Hz置0,若不满足,Hz不变;
A03、对步骤A02得到的数据采用的场值离散化流程公式进行处理:
进行上述处理后,将每个网格顶点的处理后的近场数据作为一行,每行近场数据用6*(Nmr+Npr)个二进制数位表示;其中,int()表示取整函数,Mag()表示取幅度、Deg()表示辐角;
第四步、第三步的处理结果写入二进制文件:
其中,二进制文件数据头的数据格式
数位(byte) |
4 |
4 |
4 |
4 |
4 |
4 |
数值 |
S<sub>r</sub> |
D<sub>r</sub> |
M<sub>e</sub> |
P<sub>e</sub> |
E<sub>max</sub> |
H<sub>max</sub> |
类型 |
浮点 |
浮点 |
浮点 |
浮点 |
浮点 |
浮点 |
数据行的每行数据格式:
在本申请的实施例中,上述数据采用bigending来进行数位的编码和解码;
第五步、对于不同的网格顶点,重复第三步和第四步,得到所有网格顶点近场数据的压缩结果。
S7.借助于rar压缩工具将步骤S6得到的数据进行二次压缩,得到最终的压缩存储文件。
上述说明示出并描述了本发明的一个优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。