本发明涉及有限元算法领域,具体涉及基于fpga的有限元算法运算效率提升领域。
背景技术:
::工程电磁场的数值(矢量磁位、磁密度等)分析、计算方法当中,有限元算法是被应用的最广泛的方法之一。有限元算法的特点是直接求局域场的基本方程和给定的定解条件的近似值,有限差分法的数学模型简洁,便于理解和实现。本课题结合了有限元算法跟有限差分法的特点,利用差分有限元算法,对线性磁材料进行单元剖分,根据给定条件来计算磁场的矢量磁位,并利用变分条件近似定解条件。有限元算法的出现,是数值分析方法研究领域内的重大突破性进展。与其他数值方法相比较,有限元算法的突出优点是:(1)有限元网格具有很大的灵活性,可以根据一定的条件构造不同类型的单元,在一个求解场域中可以使用同一类型单元,也可将不同类型单元组合起来使用,同一类型单元又可以具有不同的形状。因此,有限元网络可以很方便地模拟不同形状的边界面和交界面。(2)有限元算法得出的离散化方程组具有稀疏对称的系数矩阵,使方程组的求解得以简化,计算机存储量和计算时间也相应地大大减少。(3)边界条件的处理容易并入有限元数学模型,便于编写通用的计算机程序。今天的微处理器(cpu)的种类有很多,所以其中的内部结构差别也十分巨大,分别包括4位微处理器、8位微处理器、16位微处理器、32位微处理器、64位微处理器等,它们大体上是利用pc(personalcomputer)与载有微处理器的主电路板进行串口相连,将编译好的程序下载进微处理器,并利用特定的外部设备(执行机构、测控装置等)来完成特定的功能。总体上,利用所利用的编译软件多种多样,同时实现的功能也不尽相同。但都有一个致命的缺点就是微处理器的运算速度速度十分有限,而且运算速度受到外部晶振时钟的约束,处理器只能在在外部时钟的有效频率的约束下按程序一步一步的执行命令,不能将程序并行运算处理。而fpga是完全可以进行并行运算的处理器,其中有数亿个数字门阵列(d触发器),这样处理器内部可自行搭建出能够运算的dsp,并且多个dsp能够同时进行运算,以实现并行运算。由于材料的复杂性,需要对材料剖分多个规则三角形单元进行离散化,并且利用第一类边界条件需要计算每个单元的相关磁属性,这样整体的计算量极大。如果应用通用计算器串行通信运算算法,运算时间将过长。用并行运算的fpga处理器去运算有限元算法,可以提高运算速度,本发明是以此为目的,研究有限元算法的整体离散化剖分方法,以及求解单元的近似定解条件,使用梯度法降低计算复杂度,再利用fpga的并行通信特性,搭建针对有限元算法的计算机架构,提高有限元算法运算速度。技术实现要素:针对现有技术中存在的问题,本发明提出一种基于fpga平台的优化有限元算法的方法,利用并行运算来代替串行运算,并用梯度法优化求解计算复杂度。该方法可以显著提高有限元算法运算速度。对未知场域场域进行单元剖分,进而对每个单元进行分析,用有限个自由度(就是特定的位置的函数值)、由单元插值函数拼接而成的近似解来逼近无限个自由度的精确解,然后将这一过程在fpga上完成。利用其并行运算的特性来缩短大规模矩阵运算带来的长时间等待。一种基于fpga平台的优化有限元算法的方法,步骤如下:步骤(1)、对待测模型的未知函数进行单元格剖分。对未知函数进行单元格剖分,进而对每个单元格进行分析,用有限个自由度、由单元插值函数拼接而成的近似解来逼近无限个自由度的精确解。采用三角形作为单元剖分网格,通过二元一次线性函数插值来对未知场进行剖分。步骤(2)、将泛函的变分问题转化为多元函数的极值问题。3节点三角形的二元一次线性插值多项式为u=λ1 λ2x λ3y(1)式中,λ1、λ2、λ3均为待定系数。为了确定这3个常数的值,可以将单元3个节点的坐标和待求函数值带入式(1)中,即可得到:以λ1、λ2、λ3为未知数求解这个方程组,求解得到:式中,δ为三角形的单元面积。计算式(3)中ai、bi、ci(i=1,2,3)是由单元节点坐标决定的常数,可以根据节点坐标计算得到,公式如下:步骤(3)、分析插值基函数的3节点三角形单元格,获得所求场值。将(2)式和(3)式合并,得到单元剖分网格内任一点的场值,公式如下:采用更简化的紧缩形式进行表示,公式如下:式(7)中,ni为三角形单元的插值基函数,公式如下:步骤(4)、插值基函数的3节点三角形单元格各个常数总体合成。基于matlab单元插值基函数求解常数ai、bi、ci。步骤(5)、将边界条件代入,利用梯度法求解代数方程组。使用matlabcoder功能将matlab语言转换为c语言。步骤(6)、在主板中搭建有限元算法运行的计算机架构。将c语言工程添加到sdk编译环境中编译,将编译成功后的比特流文件下载进主板后运行。本发明有益成果如下:针对复杂的有限元算法得出整体离散化剖分方法以及求解单元的近似定解条件使得适合在微处理器上运行,并利用matlabcoder功能将matlab语言转换为c语言使其能够在fpga内核下运行,利用fpga并行运算的特性以及梯度法大大减少运算时间,提升有限元算法运算效率。附图说明图1为本发明单元剖分网格示意图;图2为本发明实施例待求场域示意图;图3为本发明算法运行流程图。具体实施方式以下结合附图及实施例,对本发明进行进一步的详细说明。实施例1:采用tul公司生产由依元素公司销售的带有fpga芯片的主板,该主板搭载pynq-z2芯片,芯片内部包含一个650mhz的arm-cortex-a9双核处理器;还包括一个嵌入式系统,该系统中包含13,300个逻辑片,每个片有4个6输入lut(lookuptable即查找表)和8个d触发器,630kbblockram(块随机存储器)、220片dsp,dsp片上包含xilinx模拟数字转换器(xadc)。如图2所示,待求模型为放置在矩形开口槽内的载流导体,例如坡莫合金,其中通有已知的恒定电流。选取矩形区域abcd作为求解区域,记为ω,其中包含了空气和坡莫合金两种媒质,其相对磁阻率分别为v1=1.0000004,v2=0.00005;导体中的源电流密度为j=0.06a/m2。矩形以外的阴影线部分表示铁芯,其磁导率设为无穷大;并设槽口处的磁场只存在切向分量。将矢量磁位沿垂直于纸面方向设为z轴方向,以矢量磁位沿垂直于纸面方向的分量az为未知函数,并简记为a。此场域满足的泊松方程边值问题可表示为式(9),式(10),式(11),式(12)。|a||ad=a0(10)式(10)中,a0为给定的任意常数;式(12)中,v,v1和v2为磁阻率,l12为两种媒质的交界面。第一类边界条件对应的条件变分问题表达式为:如图3所示,本发明算法,实现步骤如下:步骤(1)、单元格剖分。采用3节点三角形单元对求解区域进行剖分,以a点为原点建立直角坐标系,横轴向右为正方向,纵轴向下为正方向。横轴上坐标分别为1,2,3,4,5;纵轴上坐标为1,2,3,4,5,6,7。如图2所示进行剖分,获得的三角形的面积均为1/2,共48个等大3节点等腰直角三角形,共35个节点,并且35个节点的矢量磁位已知,可以保证在整个求解区域内,三角形互不重叠,也不存在未剖分的遗漏场域。对求解区域中的所有节点按顺序编号,节点编号为1~35,节点编号为总体编号,同时将所有的3节点三角形单元按顺序编号,三角形单元编号为1~48。每个三角形单元的3个节点同样按顺序编号,记为α,β,γ,称为局部编号,例如在三角形1上的三个节点编号分别为α=1,β=6,γ=7,在三角形2上的三个节点编号分别为α=1,β=2,γ=7。g表示节点总数。图1为本发明单元剖分网格示意图。步骤(2)、将泛函的变分问题转化为多元函数的极值问题。根据式(13)边值问题,式(9)、式(10)、式(11)、式(12)对应的条件变分问题为:a=a0|ad(15)对于二维问题,原泛函表达式(13)中的体积分项退化成面积分,面积分项则会退化成线积分。由于边值问题式(9)、式(10)、式(11)、式(12)中的第二类边界条件是齐次边界条件,因此泛函表达式中不包含线积分项。将式(14)、式(15)中的泛函在区域ω上的积分表达成在各三角形单元上的积分之和,公式如下:式中,积分区域为每个三角形剖分单元格的面积;e为单元格总数,在本实例中,单元格总数e=48。将单元格上的矢量磁位用三角形三个顶点磁位值的线性插值来近似表示,即:式中,nl为三角形单元三个顶点上的插值基函数,al为三角形单元三个顶点上的矢量磁位,上标e表示该变量与磁场相关。将式(17)代入式(16),得到:式中:在式(18)中,由于单元格中的矢量磁位函数采用式(19)来表示,其中插值基函数为经过处理系数的已知函数,节点矢量磁位值为待定系数,因此fe(ae)是以求解区域上全部节点磁位值为变量的多元函数,泛函的变分问题转换为多元函数的极值问题,即:式中,e为单元格总数,在此实施例中为48。任务变为寻求一组节点磁位值即寻求解向量使得多元函数取得极值,根据多元函数的极值定理,得:式中以48个单元格矢量磁位值为未知数,但这48个单元格的矢量磁位由35个节点磁位值构成,所以也可认为是35个节点磁位值为未知数的代数方程组,写成矩阵形式,可表示为:ka=f(22)为获得该方程组的系数矩阵和右端向量各元素的表达式,需要在每个单元上进行微分和积分运算。步骤(3)、分析插值基函数的3节点三角形单元格。由式(17)可知,每个3节点三角形单元格都有将式(8)代入其中,得:将式(23)代入单元格上函数的表达式中对aα、aβ、aγ求偏导,获得代数方程组式(22)中与3节点三角形单元格ε有关的对应项,对应项为3节点三角形单元格ε对单元方程组矩阵ke和单元右端向量fe的贡献,记为:对上式进行整理,获得:其中,kexy的求解方法为将对应单元格的磁阻率除以4倍的单元格对应面积然后乘上对应单元格顶点b,c常数的乘积;fex的求解方法为3节点三角形单元格面积乘以载流导体的电流密度的1/3倍。分析可知,因为将原场域分为48个3节点三角形单元格,因此在计算k矩阵的过程中一共有48个ke矩阵,因为是3节点三角形单元格,所以每个ke矩阵都为3行3列的对称矩阵,矩阵中的对角线元素代表3节点三角形网格中的顶点位置的常数,其余右上角3个不同位置的元素分别代表3节点三角形的3个边的位置的常数。在matlab中实现每个元素的计算。步骤(4)、插值基函数的3节点三角形单元格各个常数总体合成。为建立离散化代数方程式(22),需要将单元分析结果即单元格系数矩阵ke和单元右端向量fe的各元素累加到系数矩阵k和右端向量f中,插值基函数的3节点三角形单元格各个常数总体合成的要点为将插值基函数的3节点三角形单元格经过分析后再通过matlab计算得到的各元素的值累加到系数矩阵k和右端向量f中的正确位置。具体做法的如下:设置系数矩阵k和右端向量f,由于对场域剖分一共有35个节点,所以初始化默认k矩阵为35行35列的矩阵,矩阵内部所有元素暂时填为0;f向量为35维的列向量,向量内部元素暂时填为0。将计算得到的每个单元格系数矩阵ke和列向量fe进行整合,各元素的下标决定各元素向系数矩阵k和右端向量f中分别累加的位置。将kemn,(m=α,β,γ;n=α,β,γ)累加到系数矩阵k的第m行、第n列元素中去;将累加到右端向量f的第m个元素中去;m与n为节点的局部编号。因为场域的单元剖分结果,形成多条系数矩阵k中元素kemn的合成,且每个k值的合成所需要的单元格矩阵kemn中的元素个数不尽相同;共计35条右端向量f中fe的合成,且每个f值的合成所需要的单元格向量f中的元素个数不尽相同。步骤5:将边界条件代入,利用梯度法求解代数方程组。在总体合成完成后,建立总的离散化代数方程式(22),然后根据式(14)、式(15)给出的第一类边界条件对式(22)进行处理。采用强加边界条件,需要在有限元离散化方程组建立后通过对方程组的修改代入原方程组计算。按本实例中对场域的剖分,共有35个节点,所以共有35个节点的边界条件,所以应在整体合成计算后得到的方程组中取消第m个方程,同时将剩余的方程修改,用矩阵表示,如下:对于求解ka=b这样的矩阵方程,可采用梯度法来降低计算复杂度。其中a=[a1,...,a35]t,b=[f1-k1,na0n,...f35-k35,na0n,]。令r(k)=b-ka(k),k=0,1,2,3,······为迭代次数。a(k 1)=a(k) αkr(k)(29)<>为向量内积运算。对式(28),式(29)进行迭代处理,直到结果收敛。对强加边界条件的边界上的35个节点,均采用以上方法逐个求解。由以上分析可知,需要将合成计算后的k元素代入到系数矩阵k,并且对等式右端的右端向量f整合后需要进行整理修改、代入。利用matlab软件编写计算该代数方程组的代码。应求得的是35个35维的列向量a,将这35个35维的列向量a放在同一矩阵中,最终获得一个35阶的方阵。利用matlabcoder功能将求解这一方程组的matlab代码转换为c语言。步骤6:在主板中搭建适合有限元算法运行的计算机架构。本实施例中采用vivado作为计算机架构,vivado是xilinx公司在2012年发布的设计套件。安装这一集成设计环境后,点击“launchsdk”(运行sdk)后点击“ok”,利用sdk编译工具编译由matlab语言转换而来的c语言文件。利用microusb连接线将主板与电脑连接起来,并根据pynq-z2数据手册正确插接跳线帽之后,打开电源,选择sdk编译界面最上方“xilinx”中的“programfpga”,然后会弹出对应的“programfpga”浮动窗口,再点击“program”,点击sdk编译界面下方的“sdkterminal”,再点击右侧的“ ”,通信端口与主板相连,连接成功后“sdkterminal”界面下方会提示“connectedtocom6at115200”,表明计算机已经与主板连接成功。然后右键工程,选择“runas”中的“startperformanceanalysis”,再选择“runas”中的“launchonhardware(gdb)”将程序下载进主板,开始运行。结果分析:利用sdk的调试工具,可以在计算机上检测并分析芯片运行这个算法的各种性能。最终在以fpga为内核的主板上运算时间为0.028秒,而同样的程序在以i5-4200h芯片为cpu的计算机上的matlab中运算时间为0.043秒。相比之下,利用fpga运算有限元算法运算时间减少了34.88%,极大地提升了有限元算法的运算效率。当前第1页1 2 3 当前第1页1 2 3 
技术特征:1.一种基于fpga平台的优化有限元算法的方法,其特征在于,步骤如下:
步骤(1)、对待测模型的未知函数进行单元格剖分;
对未知函数进行单元格剖分,进而对每个单元格进行分析,用有限个自由度、由单元插值函数拼接而成的近似解来逼近无限个自由度的精确解;采用三角形作为单元剖分网格,通过二元一次线性函数插值来对未知场进行剖分;
步骤(2)、将泛函的变分问题转化为多元函数的极值问题;
3节点三角形的二元一次线性插值多项式为
u=λ1 λ2x λ3y(1)
式中,λ1、λ2、λ3均为待定系数;为了确定这3个常数的值,可以将单元3个节点的坐标和待求函数值带入式(1)中,即可得到:
以λ1、λ2、λ3为未知数求解这个方程组,求解得到:
式中,δ为三角形的单元面积;
计算式(3)中ai、bi、ci(i=1,2,3)是由单元节点坐标决定的常数,可以根据节点坐标计算得到,公式如下:
步骤(3)、分析插值基函数的3节点三角形单元格,获得所求场值;
将(2)式和(3)式合并,得到单元剖分网格内任一点的场值,公式如下:
采用更简化的紧缩形式进行表示,公式如下:
式(7)中,ni为三角形单元的插值基函数,公式如下:
步骤(4)、插值基函数的3节点三角形单元格各个常数总体合成;基于matlab单元插值基函数求解常数ai、bi、ci;
步骤(5)、将边界条件代入,利用梯度法求解代数方程组;使用matlabcoder功能将matlab语言转换为c语言;
步骤(6)、在主板中搭建有限元算法运行的计算机架构;将c语言工程添加到sdk编译环境中编译,将编译成功后的比特流文件下载进主板后运行。
2.根据权利要求1所述的一种基于fpga平台的优化有限元算法的方法,其特征在于,待求模型为放置在矩形开口槽内的载流导体,其中通有已知的恒定电流;选取矩形区域abcd作为求解区域,记为ω,其中包含了空气和载流导体两种媒质,其相对磁阻率分别为v1,v2;导体中的源电流密度为j;矩形以外的两侧部分表示铁芯,其磁导率设为无穷大;并设槽口处的磁场只存在切向分量;将矢量磁位沿垂直于纸面方向设为z轴方向,以矢量磁位沿垂直于纸面方向的分量az为未知函数,并简记为a;
此场域满足的泊松方程边值问题可表示为式(9),式(10),式(11),式(12);
|a||ad=a0(10)
式(10)中,a0为给定的任意常数;式(12)中,v,v1和v2为磁阻率,l12为两种媒质的交界面;第一类边界条件对应的条件变分问题表达式为:
3.根据权利要求2所述的一种基于fpga平台的优化有限元算法的方法,其特征在于,步骤(1)、单元格剖分;
采用3节点三角形单元对求解区域进行剖分,以a点为原点建立直角坐标系,横轴向右为正方向,纵轴向下为正方向;获得的三角形的面积均为1/2,共e个等大3节点等腰直角三角形,共g个节点,并且g个节点的矢量磁位已知,可以保证在整个求解区域内,三角形互不重叠,也不存在未剖分的遗漏场域;对求解区域中的所有节点按顺序编号,节点编号为1~g,节点编号为总体编号,同时将所有的3节点三角形单元按顺序编号,三角形单元编号为1~e;每个三角形单元的3个节点同样按顺序编号,记为α,β,γ,称为局部编号。
4.根据权利要求3所述的一种基于fpga平台的优化有限元算法的方法,其特征在于,步骤(2)、将泛函的变分问题转化为多元函数的极值问题;根据式(13)边值问题,式(9)、式(10)、式(11)、式(12)对应的条件变分问题为:
a=a0|ad(15)
对于二维问题,原泛函表达式(13)中的体积分项退化成面积分,面积分项则会退化成线积分;由于边值问题式(9)、式(10)、式(11)、式(12)中的第二类边界条件是齐次边界条件,因此泛函表达式中不包含线积分项;将式(14)、式(15)中的泛函在区域ω上的积分表达成在各三角形单元上的积分之和,公式如下:
式中,积分区域为每个三角形剖分单元格的面积;e为单元格总数;
将单元格上的矢量磁位用三角形三个顶点磁位值的线性插值来近似表示,即:
式中,nl为三角形单元三个顶点上的插值基函数,al为三角形单元三个顶点上的矢量磁位,上标e表示该变量与磁场相关;将式(17)代入式(16),得到:
式中:
在式(18)中,由于单元格中的矢量磁位函数采用式(19)来表示,其中插值基函数为经过处理系数的已知函数,节点矢量磁位值为待定系数,因此fe(ae)是以求解区域上全部节点磁位值为变量的多元函数,泛函的变分问题转换为多元函数的极值问题,即:
式中,e为单元格总数;任务变为寻求一组节点磁位值即寻求解向量使得多元函数取得极值,根据多元函数的极值定理,得:
式中以e个单元格矢量磁位值为未知数,但这e个单元格的矢量磁位由g个节点磁位值构成,所以也可认为是g个节点磁位值为未知数的代数方程组,写成矩阵形式,可表示为:
ka=f(22)
为获得该方程组的系数矩阵和右端向量各元素的表达式,需要在每个单元上进行微分和积分运算。
5.根据权利要求4所述的一种基于fpga平台的优化有限元算法的方法,其特征在于,步骤(3)、分析插值基函数的3节点三角形单元格;由式(17)可知,每个3节点三角形单元格都有将式(8)代入其中,得:
将式(23)代入单元格上函数的表达式中对aα、aβ、aγ求偏导,获得代数方程组式(22)中与3节点三角形单元格ε有关的对应项,对应项为3节点三角形单元格ε对单元方程组矩阵ke和单元右端向量fe的贡献,记为:
对上式进行整理,获得:
其中,kexy的求解方法为将对应单元格的磁阻率除以4倍的单元格对应面积然后乘上对应单元格顶点b,c常数的乘积;fex的求解方法为3节点三角形单元格面积乘以载流导体的电流密度的1/3倍;
分析可知,因为将原场域分为e个3节点三角形单元格,因此在计算k矩阵的过程中一共有e个ke矩阵,因为是3节点三角形单元格,所以每个ke矩阵都为3行3列的对称矩阵,矩阵中的对角线元素代表3节点三角形网格中的顶点位置的常数,其余右上角3个不同位置的元素分别代表3节点三角形的3个边的位置的常数;在matlab中实现每个元素的计算。
6.根据权利要求5所述的一种基于fpga平台的优化有限元算法的方法,其特征在于,步骤(4)、插值基函数的3节点三角形单元格各个常数总体合成;
为建立离散化代数方程式(22),需要将单元分析结果即单元格系数矩阵ke和单元右端向量fe的各元素累加到系数矩阵k和右端向量f中,插值基函数的3节点三角形单元格各个常数总体合成的要点为将插值基函数的3节点三角形单元格经过分析后再通过matlab计算得到的各元素的值累加到系数矩阵k和右端向量f中的正确位置;具体做法的如下:
设置系数矩阵k和右端向量f,由于对场域剖分一共有g个节点,所以初始化默认k矩阵为g行g列的矩阵,矩阵内部所有元素暂时填为0;f向量为g维的列向量,向量内部元素暂时填为0;
将计算得到的每个单元格系数矩阵ke和列向量fe进行整合,各元素的下标决定各元素向系数矩阵k和右端向量f中分别累加的位置;将kemn,(m=α,β,γ;n=α,β,γ)累加到系数矩阵k的第m行、第n列元素中去;将累加到右端向量f的第m个元素中去;m与n为节点的局部编号;
因为场域的单元剖分结果,形成多条系数矩阵k中元素kemn的合成,且每个k值的合成所需要的单元格矩阵kemn中的元素个数不尽相同;共计g条右端向量f中fe的合成,且每个f值的合成所需要的单元格向量f中的元素个数不尽相同。
7.根据权利要求6所述的一种基于fpga平台的优化有限元算法的方法,其特征在于,步骤5:将边界条件代入,利用梯度法求解代数方程组;在总体合成完成后,建立总的离散化代数方程式(22),然后根据式(14)、式(15)给出的第一类边界条件对式(22)进行处理;采用强加边界条件,需要在有限元离散化方程组建立后通过对方程组的修改代入原方程组计算;按场域的剖分,共有g个节点,所以共有g个节点的边界条件,所以应在整体合成计算后得到的方程组中取消第m个方程,同时将剩余的方程修改,用矩阵表示,如下:
对于求解ka=b这样的矩阵方程,可采用梯度法来降低计算复杂度;其中a=[a1,...,ag]t,b=[f1-k1,na0n,...fg-kg,na0n,];
令r(k)=b-ka(k),k=0,1,2,3,······为迭代次数;
a(k 1)=a(k) αkr(k)(29)
<>为向量内积运算;对式(28),式(29)进行迭代处理,直到结果收敛;
对强加边界条件的边界上的g个节点,均采用以上方法逐个求解;
由以上分析可知,需要将合成计算后的k元素代入到系数矩阵k,并且对等式右端的右端向量f整合后需要进行整理修改、代入;利用matlab软件编写计算该代数方程组的代码;应求得的是g个g维的列向量a,将这g个g维的列向量a放在同一矩阵中,最终获得一个g阶的方阵;利用matlabcoder功能将求解这一方程组的matlab代码转换为c语言。
8.根据权利要求7所述的一种基于fpga平台的优化有限元算法的方法,其特征在于,步骤6:在主板中搭建适合有限元算法运行的计算机架构;采用vivado作为计算机架构,安装这一集成设计环境后,点击“launchsdk”(运行sdk)后点击“ok”,利用sdk编译工具编译由matlab语言转换而来的c语言文件;利用microusb连接线将主板与电脑连接起来,并根据pynq-z2数据手册正确插接跳线帽之后,打开电源,选择sdk编译界面最上方“xilinx”中的“programfpga”,然后会弹出对应的“programfpga”浮动窗口,再点击“program”,点击sdk编译界面下方的“sdkterminal”,再点击右侧的“ ”,通信端口与主板相连,连接成功后“sdkterminal”界面下方会提示“connectedtocom6at115200”,表明计算机已经与主板连接成功;然后右键工程,选择“runas”中的“startperformanceanalysis”,再选择“runas”中的“launchonhardware(gdb)”将程序下载进主板,开始运行。
技术总结本发明提出一种基于FPGA平台的优化有限元算法的方法。本发明利用并行运算来代替串行运算,并用梯度法优化求解计算复杂度。本发明首先对未知场域场域进行单元剖分,进而对每个单元进行分析,用有限个自由度、由单元插值函数拼接而成的近似解来逼近无限个自由度的精确解,然后将这一过程在FPGA上完成。利用其并行运算的特性来缩短大规模矩阵运算带来的长时间等待。本发明针对复杂的有限元算法得出整体离散化剖分方法以及求解单元的近似定解条件使得适合在微处理器上运行,并利用matlab coder功能将matlab语言转换为C语言使其能够在FPGA内核下运行,利用FPGA并行运算的特性以及梯度法大大减少运算时间,提升有限元算法运算效率。
技术研发人员:颜成钢;阮定;赵明洋;孙垚棋;张继勇;张勇东;沈韬
受保护的技术使用者:杭州电子科技大学
技术研发日:2020.01.07
技术公布日:2020.06.05