用矩量法求解该算子方程的步骤如下:1)选择一组带有未知数的基函数{ji}iN=1表示未知等效流或场,即。用矩量法求解电磁场问题的优点是严格地计算各子散射体间的互耦,矩量法本身保证了计算误差的系统总体最小而不会产生数值色散问题。具体表达为传统阻抗元素计算方法是对应于每一个基函数和权函数而言的。......
2025-09-30
FEKO提供了LUA的脚本功能,在前处理CADFEKO和后处理POSTFEKO中均集成了LUA脚本编辑器Script editor,如图4-37所示。在脚本编辑器中可以输入或编辑脚本,支持断点设置进行调试,可直接运行输出结果。

图4-37 FEKO的LUA脚本编辑器
FEKO脚本编辑器的启动方法非常简单,即在CADFEKO或POSTFEKO的“Home”菜单中单击“Script editor”按钮,即可弹出脚本编辑器,如图4-38和图4-39所示。

图4-38 CADFEKO中启动脚本编辑器

图4-39 POSTFEKO中启动脚本编辑器
FEKO网站提供了部分脚本,网址为https://www.feko.info/support/lua-scripts,可直接下载。
1.LUA脚本在CADFEKO中的使用
CADFEKO可以基于LUA脚本来完成求解之前所有的工作,主要包括参量定义、材料定义、建立模型(包括导入几何模型或网格)、赋材料属性、端口定义、工作频率设置、求解方法设置、求解参数设置以及网格生成等,为了提高代码生成的效率,CADFEKO支持脚本宏的录制功能(Record macro),单击“Record macro”按钮后,CADFEKO按照单击按钮功能的顺序,自动生成LUA脚本,完成操作再次单击“Record macro”按钮后,会自动弹出脚本编辑器,查看生成的脚本,非常方便。同时,由于LUA脚本语法简单,易读性强,因此非常有助于用户理解和修改脚本。对于初学者,也有助于掌握LUA脚本。
这里给出的例子就是利用宏录制功能快速生成的脚本,可以直接复制下边几个部分的脚本到脚本编辑器,或直接读取光盘目录“../scripts/cadfeko/”中的“cadfeko_macro_record.lua”文件,直接运行。
示例:CADFEKO录制宏。
第1部分是创建CADFEKO的一个应用app(cf代表CADFEKO的一个接口),并生成一个工程project:
--CADFEKO14.0-273612(x64)
app=cf.GetApplication()
project=app:NewProject()
第2部分是设置长度单位为毫米(mm):
--Modified solution entity:Model unit
properties=project:GetProperties()
properties.ModelAttributes.Unit=cf.Enums.ModelUnitEnum.Millimetres
project:SetProperties(properties)
第3部分是设定几个主要变量:
--Added variable"freq"=6e9
freq=project.Variables:Add("freq","6e9")
--Added variable"lam"=c0/freq/0.001
lam=project.Variables:Add("lam","c0/freq/0.001")
--Added variable"a"=0.8lam
a=project.Variables:Add("a","0.8lam")
--Added variable"b"=0.6lam
b=project.Variables:Add("b","0.6lam")
--Added variable"c"=0.2lam
c=project.Variables:Add("c","0.2lam")
第4部分是创建模型Cuboid1和Cylinder1:
--Created geometry:cuboid"Cuboid1"
properties=cf.Cuboid.GetDefaultProperties()
properties.Depth="b"
properties.Height="c"
properties.Label="Cuboid1"
properties.Width="a"
Cuboid1=project.Geometry:AddCuboid(properties)
--Created geometry:cylinder"Cylinder1"
properties=cf.Cylinder.GetDefaultProperties()
properties.Base.U="a/2"
properties.Base.V="b/2"
properties.Height="2c"
properties.Label="Cylinder1"
properties.Radius="0.2lam"
Cylinder1=project.Geometry:AddCylinder(properties)
第5部分是进行布尔操作:
--Created geometry:union""
Cuboid1=project.Geometry["Cuboid1"]
Cylinder1=project.Geometry["Cylinder1"]
targets={Cuboid1,Cylinder1}
project.Geometry:Union(targets)
第6部分是调整视图:
View3D=app.Views["3D view 1"]
View3D:ZoomToExtents()
第7部分是网格剖分设置:
MeshSettings=project.Mesher.Settings
properties=MeshSettings:GetProperties()
properties.Advanced.MinElementSize=37.0511713132585
properties.Advanced.RefinementFactor=62.4196350581785
properties.MeshSizeOption=cf.Enums.MeshSizeOptionEnum.Custom
properties.TetrahedronEdgeLength=""
properties.TriangleEdgeLength="lam/12"
properties.WireSegmentLength=""
MeshSettings:SetProperties(properties)
第8部分是进行网格划分:
--Mesh the model
project.Mesher:Mesh()
上述脚本的运行,也可以直接进入DOS界面,把目录切换到../scripts/cadfeko中,输入如下脚本,按〈Enter〉键即可:
>>:cadfeko--run-script cadfeko_macro_record.lua
关于CADFEKO中LUA脚本的使用方法与详细说明,可以参考User Manual中的第7章。
2.LUA脚本在POSTFEKO中的使用
POSTFEKO也支持LUA脚本功能,主要是利用LUA脚本读取bof中的计算结果信息(电场强度、磁场强度、电流、功率、RCS等),并可对这些结果进行计算处理。
FEKO运算直接得到参量结果(近场、远场、源、阻抗、S参数、功率、模式项、T/R等),可以单击“Home”菜单中的“New script”按钮,选择相应的参数,会直接弹出脚本编辑器,自动生成相应的代码。
下边给出的示例,可以直接复制下边几个部分的脚本到POSTFEKO的脚本编辑器,保存该脚本文件,并把光盘目录“../scripts/postfeko”中的“horn.fek”和“horn.bof”复制过来,或直接读取光盘目录“../scripts/postfeko”中的“far_field.lua”文件,直接运行。
示例1:POSTFEKO读取远场数据,并在3D视图和直角坐标系中显示。
第1部分是创建POSTFEKO的一个应用app(pf代表POSTFEKO的一个接口),生成一个工程,并打开“Horn.fek”文件,读取CADFEKO求解设置中所设定的远场计算FarFields:
app=pf.GetApplication()
app:NewProject()
app:OpenFile("Horn.fek")
farFieldCollection=app.Models[1].Configurations[1].FarFields
第2部分添加一个直角坐标系,采用索引和名称两种方式来生成2D曲线:
--Add the first far field to a Cartesian graph
graph=app.CartesianGraphs:Add()
farFieldTrace1=graph.Traces:Add(farFieldCollection[1])--Index method
farFieldTrace2=graph.Traces:Add(farFieldCollection["FarField1"])--Name method
第3部分是显示远场的3D视图:
--Add all the far fields in the collection to the 3D view
for index,farFieldData in pairs(farFieldCollection)do
farFieldPlot=app.Views[1].Plots:Add(farFieldData)
end
示例2:POSTFEKO中通过LUA读取近场数据。
该脚本把z=0,以原点为中心,半径大于等于0.15m区域的电/磁场值强制设置为0:
(https://www.chuimin.cn)
上述脚本参见链接资源的文件“../scripts/postfeko/near_field.lua”。要运行该脚本,方法是:单击“Home”菜单中的“Script editor”按钮,启动脚本编辑器,这时复制上述代码,或选择打开“../scripts/postfeko/near_field.lua”,单击“运行”按钮。
示例3:POSTFEKO中通过LUA设置2D曲线的运算。
该脚本演示了如何读取FEKO安装路径下的已有工程的结果,显示近场的2D曲线,并激活“Enable math”选项,写入表达式实现2D曲线翻倍和取dB,其中FEKO_HOME是FEKO的环境变量,并可以在脚本编辑器中直接使用。
app=pf.GetApplication()
app:NewProject()
app:OpenFile(FEKO_HOME..[[/examples/Resources/Automation/startup.fek]])
cartesianGraph1=app.CartesianGraphs:Add()
trace1=cartesianGraph1.Traces:Add(app.Models[1].Configurations[1].NearFields[1])
--Set 'TraceMathExpression' properties
trace1.Math.Expression="self2.0"
trace1.Math.Enabled=true
cartesianGraph2=app.CartesianGraphs:Add()
trace2=cartesianGraph2.Traces:Add(app.Models[1].Configurations[1].NearFields[1])
cartesianGraph1:ZoomToExtents()
--Set 'TraceMathExpression' properties
trace2.Math.Expression="20log(self)"
trace2.Label="NearField_Math_Expression_".."20log10E"
trace2.Math.Enabled=true
trace3=cartesianGraph2.Traces:Add(app.Models[1].Configurations[1].NearFields[1])
--Set 'Value ScaledToDB'
trace3.Quantity.ValuesScaledToDB=true
trace3.Label="NearField_dB"
关于POSTFEKO中LUA脚本的使用方法与详细说明,可以参考User Manual中的第10章。
3.LUA窗体与控件(Form&Controls)
为方便用户创建自定义窗体(Form)以实现某些功能应用,FEKO集成的LUA脚本也提供了窗体与常用控件(Controls)集创建功能,可以通过输入脚本的方式来完成,不提供常用控件的面板功能。对于复杂的窗体,也可以通过Visual Studio等工具来创建。
FEKO提供了控件集主要包括:按钮(formButtons),组合框(formComboBox),复选框(FormCheckBox),单选按钮(FormRadioButtonGroup),文本编辑框(FormLineEdit),选项卡(FormLabel),文件夹浏览(FormDirectoryBrowser),文件浏览(FormFileBrowser),文件另存为(FormFileSaveAsBrowser),控件分组容器(FormGroupBox)等。详细的内容可以参考软件自带的UserManual.pdf第10.3.67~10.3.91节所列的内容。
在POSTFEKO中,打开Script editor,并把下述代码复制到脚本编辑区域;或直接在脚本编辑器中单击打开按钮,打开“../scripts/controls/form_controls.lua”,单击“Run script”按钮或按〈Ctrl+R〉快捷键运行该脚本,显示如图4-40所示的界面(在该脚本中读取链接资源中自带的Horn.fek文件和图片文件horn.png)。



图4-40 显示的界面
4.其他主要模块
FEKO安装完成后,包含大量的LUA模块,默认情况下可以直接使用下列模块。
1)math:一个数学类库,包含常用的函数方法,见表4-15。
2)string:一个字符串处理库。
3)table:一个表数据处理库。
4)os:方便用户访问操作系统环境和文件的类库。
5)io:一个读写文件的输入/输出模块。
6)debug:脚本调试模块。
表4-15 常用函数

FEKO安装完后,有些广泛应用的LUA模块(也包括网上下载得到的模块)在默认情况下会包含进来,如果要应用这些模块,则必须使用函数require()进行加载,例如,require('luacom')。下面介绍的几个模块均为FEKO安装自带的模块,应用时必须重新进行加载。
1)luacom:在Windows系统中安装完FEKO后,会包含“luacom”模块,该模块是一个非常强大的模块,它使用户可以使用各种com组件,如Office的Word、Excel等。下述示例说明了如何使用该模块来控制Excel。
--COM example 1
require('luacom')
excel=luacom.CreateObject("Excel.Application")
excel.Visible=true
wb=excel.Workbooks:Add()
ws=wb.Worksheets(1)
for i=1,20 do
ws.Cells(i,1).Value2=i
end
--COM example 2
require"luacom"
excel=luacom.CreateObject("Excel.Application")
local book=excel.Workbooks:Add()
local sheet=book.Worksheets(1)
excel.Visible=true
for row=1,30 do
sheet.Cells(row,1).Value2=math.floor(math.random()100)
end
local chart=excel.Charts:Add()
chart.ChartType=4
local range=sheet:Range("A1:A30")
chart:SetSourceData(range)
2)LuaFileSystem:该模块提供便携的方式访问底层的目录结构和文件属性。模块名称必须包括“lfs”。
3)LuaXml:一个处理XML数据的精简函数集,必须采用名称“luaxml”来调用该模块。
4)PenLight:LUA的扩展模块,一个包含表、数组、字符串、路径和目录、数据和函数的集合,必须采用名称“pl”来调用该模块。
5)winapi:该模块是视窗操作系统应用程序接口,提供了一些基本的工具,用于Windows系统,如访问注册表、找出系统资源,并让用户更多地控制进程的创建。
FEKO的LUA脚本也提供了特殊的功能函数集,这里列出一部分:
1)Complex——复数运算函数集。
2)Matrix——矩阵运算函数集。
3)ComplexMatrix——快速矩阵复数运算。
下述脚本演示了矩阵的复数运算,参见链接资源“../scripts/math/matrix_complex.lua”。为了保证该脚本在CADFEKO和POSTFEKO中都可以直接运行,而不用修改代码,这里加入了一行特殊的命令——“feko=cf or pf”。
--Create a default 2×2 complex matrix of zeros
feko=cf or pf
cm1=feko.ComplexMatrix.Zeros(2)
--Assign values to each element of the matrix
cm1[1][1]=1+j
cm1[2][1]=2+2j
cm1[1][2]=3+3j
cm1[2][2]=4+4j
--Create a 2×2 complex matrix with a fill value of 2+j
cm2=feko.ComplexMatrix(2,2,2+j)
--Determine the transpose and determinant of the matrix
transpose=cm1:Transpose()
determinant=cm1:Determinant()
--Some of the valid operators for 'ComplexMatrix'
cm3=cm12
cm4=cm2(3+j)
cm5=cm1+2
cm6=cm1-1
cm7=cm1+cm2
cm8=cm1-cm2
本部分的内容主要针对LUA脚本的初学者,通过本节的学习,能够快速掌握FEKO的LUA脚本的使用以及最基本的函数和结果处理功能,为以后灵活应用LUA脚本解决工作中的任意功能需求打下坚实的基础。
相关文章
用矩量法求解该算子方程的步骤如下:1)选择一组带有未知数的基函数{ji}iN=1表示未知等效流或场,即。用矩量法求解电磁场问题的优点是严格地计算各子散射体间的互耦,矩量法本身保证了计算误差的系统总体最小而不会产生数值色散问题。具体表达为传统阻抗元素计算方法是对应于每一个基函数和权函数而言的。......
2025-09-30
图3-2清晰地说明了各个模块之间的关系。9)*.pfs是后处理POSTFEKO进行结果显示设置完成后保存所生成的文件,可以利用POSTFEKO直接打开。图3-3所示详细说明了各个模块之间相互调用的快捷方式。方式1:在菜单栏中的“Solver/Run”下单击“PREFEKO”图标按钮。为保证同一个工程的.cfx、.pre一致性,在进入EDITFEKO中时,建议选择“Yes”。......
2025-09-30
在本操作练习中,我们要采用Workplane的方法来建立如图3-49所示的模型。图3-51 创建Polygon_global图3-52 调整模型的角度和位置3)创建Plate_workplane。③把Label命名为“Polygon_workplane”,然后单击“Create”按钮。图3-55 创建模型Polygon_workplane图3-56 修改“Workplane”图3-57 绕u轴旋转前后的模型对比5)保存新建的工作平面“workplane_40deg”。图3-59 把“Workplane_40deg”设为默认工作坐标系6)创建Line①在“Construct”菜单中单击“Line”按钮,如图3-60所示。本练习主要介绍了FEKO中Workplane的使用方法,并通过一个简单模型来练习Workplane的使用。......
2025-09-30
有效地降低自身的RCS是提高自身生存能力的关键。目标的RCS是度量目标对雷达波散射能力的一个物理量。RCS与很多因素有关,如目标外形、尺寸、材料、姿态、雷达波长、极化等。图1-6 双站RCS的表示在本书的第9章将详细介绍在FEKO中仿真金属目标体和带吸波层目标体等的实现方法。......
2025-09-30
CADFEKO和POSTFEKO集成了一种强大的、高效的轻量级脚本语言——LUA,允许用户利用脚本来创建模型、得到仿真结果和模型配置信息等。需要注意的是,LUA脚本区分大小写,在FEKO 14.0进行更新后,在LUA脚本编辑器中就可以支持中文字符的输入。LUA脚本可以很容易地被C/C++代码调用,也可以反过来调用C/C++的函数,这使得LUA在应用程序中可以被广泛应用。在网络上可以发现很多LUA的功能模块,可以下载、安装到本地,并在FEKO中直接使用。......
2025-09-30
有限元方法是近似求解数理边值问题的一种数值技术,有限元方法思想最早在20世纪40年代由Courant提出,在50年代用于飞机设计。有限元法是采用整个区域上的变分原理或某种弱提法得到积分形式的控制方程,而边界条件通过引入积分表达式来隐式体现,也可以最后用显式引进。FEKO中的有限元采用与矩量法混合方法。在这个边界的内部用有限元法给出场的表达,而外部区域的场用边界积分表达。......
2025-09-30
多层快速多极子方法采用多层分区计算,即对于附近区强耦合量直接计算;对于非附近区耦合量则用多层快速多极子方法实现。多层快速多极子方法基于树形结构计算,其特点是逐层聚合、逐层转移、逐层配置、嵌套递推。图2-11所示为二维多层快速多极子方法中,在第二层的多极转移示意图。在多极配置过程中,已经考虑了父层父组的所有非附近组的贡献,尚未考虑的是该子层子组的远亲组贡献。......
2025-09-30
时域有限差分方法适合宽频带电磁问题分析,如宽带天线和电磁屏蔽效能、雷击等应用。1966年,K.S.Yee首次提出一种电磁场数值计算新方法—时域有限差分方法。FDTD方法用于求解微分形式的麦克斯韦旋度方程组,利用差分原理将旋度方程组离散成为一组时域递推公式。......
2025-09-30
相关推荐