×

用矢量语言组装有限元矩阵的有效方法。 (英语) Zbl 1351.65088号

摘要:最近提出了高效的二维和三维Matlab代码来组装有限元矩阵。在本文中,我们提出了简单、紧凑和高效的矢量化算法,这些算法是这些代码的变体,在任意维上,不使用任何低级语言。它们可以很容易地用许多向量语言实现(例如Matlab、Octave、Python、R、Julia、Scilab、C++with STL等)。这些技术的原理是通用的,我们将其用于组装任意维的几个有限元矩阵{P}(P)_{1} \)有限元情况。我们还将算法扩展到偏微分方程组的情况。然后我们对高阶分段多项式进行了推广。我们从数值上比较了这些算法在Matlab、Octave和Python中的性能,以及在FreeFEM++和编译语言(如C)中的性能。示例表明,与通常认为的不同,性能并不比C差太多:在最佳/最差的情况下,所选向量语言在标量和向量情况下分别比C语言慢2.3/3.5和2.9/4.1倍。我们还提供了数值结果,说明了与标准算法和其他最近的算法相比,这些算法的计算成本。

MSC公司:

65N30型 含偏微分方程边值问题的有限元、Rayleigh-Ritz和Galerkin方法
35J25型 二阶椭圆方程的边值问题
65日元 数值算法的封装方法
65年20月 数值算法的复杂性和性能
PDF格式BibTeX公司 XML格式引用

参考文献:

[1] Alberty,J.、Carstensen,C.、Funken,S.A.、Klose,R.:弹性有限元方法的Matlab实现。计算69(3),239-263(2002)·Zbl 1239.74092号 ·doi:10.1007/s00607-002-1459-8
[2] Anjam,I.,Valdman,J.:二维和三维有限元矩阵的快速MATLAB汇编:边缘元素。申请。数学。计算。267, 252-263 (2015) ·Zbl 1410.65441号
[3] Chen,L.:Matlab中的有限元方法编程。http://www.math.uci.edu/陈龙/226/Ch3FEMCode.pdf(2011)
[4] Chen,L.:IFEM,一个Matlab软件包。http://www.math.uci.edu/陈龙/programming.html(2013)
[5] Chen,Z.:有限元方法及其应用。科学计算。柏林施普林格出版社(2005)·Zbl 1082.65118号
[6] Ciarlet,P.G.:《椭圆问题的有限元方法》,《应用数学经典》第40卷。费城工业和应用数学学会(SIAM)(2002年)·Zbl 0999.65129号 ·数字对象标识代码:10.1137/1.9780898719208
[7] Cuvelier,F.,Japhet,C.,Scarella,G.:用向量语言进行有限元矩阵组装的有效方法。http://hal.archives-ouvertes.fr/hal-00931066v1(2014年)·Zbl 1351.65088号
[8] Cuvelier,F.、Japhet,C.、Scarella,G.:OptFEM软件包。http://www.math.univ-paris13.fr/cuvelier/软件(2015)
[9] Dabrowski,M.、Krotkiewski,M.和Schmid,D.W.:米兰:基于MATLAB的大型问题有限元方法求解器。地球化学。地球物理学。地质学。9(4),Q04030(2008)·doi:10.1029/2007GC001719
[10] Davis,T.A.:稀疏线性系统的直接方法,《算法基础》第2卷。费城工业和应用数学学会(SIAM)(2006年)·Zbl 1119.65021号 ·doi:10.1137/1.9780898718881
[11] Davis,T.A.:SuiteSparse软件包,第4.2.1版。http://官能.cse.tamu.edu/davis/suitesparse.html (2013) ·Zbl 1284.65197号
[12] Dhatt,G.,Lefrançois,E.,Touzot,G.:有限元法。威利,纽约(2012)·Zbl 1386.65002号 ·doi:10.1002/9781118569764
[13] Funken,S.、Praetorius,D.、Wissgott,P.:Matlab中自适应P1-FEM的高效实现。计算。方法应用。数学。11(4),460-490(2011)·Zbl 1284.65197号 ·doi:10.2478/cmam-2011-0026
[14] Geuzaine,C.,Remacle,J.-F.:Gmsh:具有内置预处理和后处理设施的三维有限元网格生成器。国际期刊数字。《方法工程》79(11),1309-1331(2009)·Zbl 1176.74181号 ·doi:10.1002/nme.2579
[15] Hannukainen,A.,Juntunen,M.:用解释语言实现有限元装配(2012)。阿尔托大学预印本
[16] Hecht,F.:freefem++的新发展。J.数字。数学。20(3-4), 251-265 (2012) ·Zbl 1266.68090号
[17] Hesthaven,J.S.,Warburton,T.:节点间断Galerkin方法,应用数学教材第54卷。施普林格,纽约(2008)。算法、分析和应用·Zbl 1134.65068号 ·doi:10.1007/978-0-387-72067-8
[18] Johnson,C.:用有限元法求解偏微分方程。多佛出版公司,Mineola(2009)。1987年版重印·Zbl 1191.65140号
[19] Koko,J.:线性二维弹性的矢量化Matlab代码。科学。程序。15(3), 157-172 (2007)
[20] 惠普兰坦根;蔡,X。;Bock,HG(编辑);Kostina,E.(编辑);Phu,HX(编辑);Rannacher,R.(编辑),《Python用于高性能计算的效率:涉及偏微分方程模板更新的案例研究》,337-357(2008),柏林·doi:10.1007/978-3-540-79409-7_23
[21] Lucquin,B.,Pironneau,O.:科学计算导论。威利,纽约(1998)·Zbl 0899.65062号
[22] 英伟达。Cusp,一个C++模板化的稀疏矩阵库。https://github.com/cusplibrary/cusplibrary网站 (2015)
[23] 英伟达。Thrust,一个基于标准模板库(STL)的CUDA C++模板库。https://github.com/throst/trush (2015)
[24] Quarteroni,A.:微分问题的数值模型,《建模、仿真与应用》第8卷,第2版。斯普林格,米兰(2014)。西尔维娅·夸特罗尼(Silvia Quarteroni)翻译自第五版(2012)意大利语·Zbl 1267.65103号
[25] Quarteroni,A.,Saleri,F.,Gervasio,P.:《利用MATLAB和Octave进行科学计算》,计算科学与工程文本第2卷,第4版。施普林格,海德堡(2014)·兹比尔1306.65001 ·doi:10.1007/978-3642-45367-0
[26] Quarteroni,A.,Valli,A.:偏微分方程的数值逼近,计算数学中Springer级数第23卷。柏林施普林格(1994)·Zbl 0803.65088号
[27] Rahman,T.、Valdman,J.:二维和三维有限元矩阵的快速MATLAB汇编:节点元素。申请。数学。计算。219(13), 7151-7158 (2013) ·Zbl 1288.65169号
[28] Thomée,V.:抛物问题的Galerkin有限元方法,计算数学Springer级数第25卷,第2版。柏林施普林格出版社(2006)·Zbl 1105.65102号
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。