FEKO中内存消耗的预估方法
问题背景
FEKO的核心算法为矩量法(MOM)以及多层快速多级子(MLFMA),通常情况下,模型剖分网格数目<1万的时候,选择MOM居多,此时你的8GB或16GB内存的笔记本电脑还能顺利的完成计算;当网格数~[1万,10万]的时候,如果不是模型的结构特别复杂或是收敛性较差,选择MLFMA,16GB内存的笔记本应该还可以胜任;当网格数>10万的时候,通常就需要服务器(内存通常为512GB、1TB及以上)的介入了。如果你经常使用FEKO进行仿真计算,对于结构相对简单,不含有复杂精细结构的电磁模型的网格与内存消耗之间的对应关系,应该有着大致的概念。
然而,对于模型比较复杂(如金属-介质混合,多层介质,含有FSS结构、阵列天线、腔体或波导结构等令FEKO头痛的模型),上面的对应关系通常情况是不适用的,就会出现这样的情况:明明模型的网格数目也不多,但是就连内存以TB计的服务器也报错说“内存不够”。
解决方法
下面介绍两种内存预估的方法,可以帮助设计师提前预估计算所需的内存大小,避免盲目计算。
方法1:软件自动预估(支持预估的算法:MLFMM, MoM, PO and FEM )
想要查看方法1的视频讲解的可以去观看如下视频。下面详细介绍利用软件自动预估内存消耗的操作方法。
step1:首先建2个文本文件project.txt(名称随意)和hosts.txt,两种文件的内容为:
step2:分别将project和hosts文本文件另存为project.bat和hosts.list格式
step3:打开feko terminal,运行project.bat程序,运行完成后,可以在out文件里查看内存消耗。
方法2:利用理论公式计算
随意搜索一篇关于矩量法(MOM)或者多层快速多级子(MLFMA)的学位论文,都会针对两种算法的内存消耗以及计算量的理论计算公式进行详细说明,这也是计算电磁学(CEM)研究领域最为关注的两个参量,想要通俗易懂的了解两种算法的原理区别的,可以参考往期文章《CAE设计师的你,有必要了解计算电磁学吗?》。
MOM的计算内存消耗正比于N2,MLFMM的内存消耗正比于NlogN,此处的N为未知量数目,由于MOM和MLFMA算法采用的三角网格,因此N=1.5*网格数。此处如果采用单精度计算(8位),则MOM的实际内存消耗为N2*8(bit),MLFMM则正比于NlogN*8(bit);如果为双精度型(16位),则MOM的实际内存消耗为N2*16(bit),MLFMM则正比于NlogN*16(bit),由下图曲线对比可知,随着未知量数目N的增大,MOM的内存消耗将会远远大于MLFMA。
需要说明的是,MOM的计算由于不存在分区和迭代,为纯计算,因此,内存消耗可以直接按照这个公式计算,但是MLFMM的内存消耗则需要看分区的质量,对于结构比较复杂的模型(如含有许多薄介质层的微带天线),导致每个box里面含有太多未知量,近区使用MOM算法的未知量太多(超过full MOM的20%),计算效果还不如用full MOM,因此也经常会报错,提示使用MOM 进行计算,利用FEKO的内存预估,也的确发现MLFMM的计算内存消耗为38GB,超过的MOM的25GB。
总结
对于相对简单的电磁模型,依据工程经验,设计师通产能建立起网格数目和内存消耗之间大致的关系,但是对于结构比较复杂的模型,则不太适用,全文介绍两种内存预估的方法:1)软件自动预估;2)理论计算,可以帮助设计师更为准确的预估电磁模型的内存消耗。
文章来源电磁CAEer