利用Gallop的Lua脚本实现RCS的批量计算
Posted 觅玄电子科技
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用Gallop的Lua脚本实现RCS的批量计算相关的知识,希望对你有一定的参考价值。
摘要:通过总场散射场技术,FDTD可以计算在平面波入射条件下的散射远场,从而得到目标的双站RCS,如果需要不同入射角情况下的单站RCS谱线,需要遍历所有入射角进行逐个计算。Gallop可以使用Lua[1]语言实现批量建模、计算、后处理。本示例以杏仁体模型为例,利用脚本实现单站RCS的计算和后处理。
参考文献
[1] http://www.lua.org/
建模和仿真步骤
(1)新建脚本文件
打开Gallop软件,在Lua菜单上,或者工具栏上,可以新建脚本文件。Gallop内置了脚本编辑器,可以编辑、修改、保存脚本文件。
2)编辑脚本
在脚本里,可以实现GUI界面的所有操作,并可以方便实现批量化建模和计算,尤其适合工程应用。针对RCS、天线罩等应用,Gallop已经预安装有大量的前后处理脚本,用户只需要进行相应的参数设置,既可方便进行计算。
第一步:引用所需文件
----------------------------------------------------------------------------
--首先引用所需的头文件:建模、RCS设置文件、多节点计算文件
require "geometry"
require "RCS"
require "MPIPond"
----------------------------------------------------------------------------
第二步:设置RCS计算参数:极化、入射角、散射目标的模型路径、远场的频率点、激励源的设置等等
----------------------------------------------------------------------------
-- RCS 计算参数设置
--需要计算的极化:HH 水平极化,VV垂直极化
local polars ={"HH","VV"};
--激励源的入射角度设置
local angs = {0,2,4,6,8};
--所需要计算的模型路径,可以是相对路径,也可以是绝对路径
local paths = {"ALMOND253-export.stp" }
--所需要计算的散射场频率
local freqs = {1.19,7,9.92}
--激励源的频率范围:需要包含散射场频率范围
local signal_freq_min = 1
local signal_freq_max = 10
--剖分参考频率
local mesh_freq = 15
----------------------------------------------------------------------------
第三步:创建计算池,并往计算池添加计算模型
----------------------------------------------------------------------------
-- 创建计算池:用于多模型的多节点并行计算
local calculater = MPIPond:new()
----------------------------------------------------------------------------
----------------------------------------------------------------------------
-- 向计算池添加计算模型
for _, path in pairs(paths) do
--根据需要计算的散射体三维模型目录创建散射体模型
functionRCS:create_scaters()
---------------------------
--建立散射体的模型,可以修改成介质等材料
localmat_pec = Geometry.NewMaterial("PEC")
mat_pec:fill_color(0.5,0.5,0.5)
mat_pec:sigma_e(1.0e13)
-------------------------
---------------------------
--Target:建立散射体的几何结构,并赋予材料特性
localtarget = Geometry.load_step{ path = path }
target:material(mat_pec)
target:triangulate(0.02)
target:material(mat_pec )
---------------------------
---------------------------
--设置计算区域:模型几何边界
posxm,posym,poszm,posxp,posyp,poszp= target:bbox()
---------------------------
return{target}, {bbox_x1 = posxm, bbox_y1 = posym, bbox_z1 = poszm, bbox_x2 = posxp, bbox_y2 = posyp, bbox_z2 = poszp, }
end
for_,polar in pairs(polars) do
for_,ang in pairs( angs ) do
localalmond = RCS:new( {
name="rcs-".."path".."("..ang..")-"..polar;
num_threads= 16; --计算线程数
dext= 6; -- 物体到空气盒子
farbox_info= { freq=freqs; dfarbox = 4; };
source_info= { freq_min = signal_freq_min;
freq_max= signal_freq_max;
dsrc = 2;
type= polar,
theta= ang; };
units= { freq = GHz; dim = mm };
mesh_freq= mesh_freq;
})
table.insert(calculater.model, almond );
end
end
end
第四步:调用求解器进行计算
----------------------------------------------------------------------------
calculater:find_results()
calculater:run()
----------------------------------------------------------------------------
(3)调用脚本求解
创建计算脚本文件后,我们可以在Gallop里调用计算脚本进行计算,另外我们也可以通过命令行模式调用Gallop求解器。
1 Gallop的GUI界面调用脚本: 在lua菜单里,或者工具栏上点击RunScript,然后执行相应的脚本文件进行RCS计算。
2 命令行模式调用脚本:通过命令行模式调用脚本可以减少显示、用户交互的过程,在进行批量计算时更稳定、效率更高。首先打开windows开始菜单里找到的“运行”,并键入cmd,通过cd命令把当前目录切换到脚本文件目录,并运行 runGallop rcs_script.lua,运行结束后,会输出各入射角情况下的模型文件,并导出RCS文件。
(4)计算结果后处理
上述脚本运行结束后,将得到不同角度入射情况下的远场散射方向图,存储在不同的文件中,模型文件也一并保存。通过Lua脚本可以实现数据的后处理,画图,导出等功能。Gallop示例里提供了处理RCS计算结果的脚本,运行脚本后,我们可以生成所需要的图形。
以上是关于利用Gallop的Lua脚本实现RCS的批量计算的主要内容,如果未能解决你的问题,请参考以下文章
sh [LUA] Redis批量/批量操作脚本(重命名,删除)
StackExchange.Redis加载Lua脚本进行模糊查询的批量删除和修改
基于 Redis 实现分布式锁,分析解决锁误删情况 及 利用Lua脚本解决原子性问题并改造锁