DOLFIN:C++/Python有限元库》日志/诊断/参数【翻译】
【章节目录】
10·3·12 日志/诊断
DOLFIN提供了一个简单的接口来统一处理日志消息,包括警告和错误。 所有消息都收集到单个流中,这使整个程序(包括DOLFIN库)的输出的目的地和格式可由用户控制。
...【章节目录】
DOLFIN提供了一个简单的接口来统一处理日志消息,包括警告和错误。 所有消息都收集到单个流中,这使整个程序(包括DOLFIN库)的输出的目的地和格式可由用户控制。
...【章节目录】
变分问题(偏微分方程的有限元离散化)可以在DOLFIN中使用solve
函数轻松解决。 线性和非线性问题都可以解决。 线性问题必须表示为以下规范形式:寻求
\(u \in V\)
使得
【章节目录】
DOLFIN依靠FEniCS工具链FIAT–UFL–FFC / SFC–UFC来计算有限元变分形式。 使用形式编译器FFC或SFC(第11章和第15章)之一来编译以UFL形式语言表示的变分形式(第17章),DOLFIN使用生成的UFC代码(第16章)来计算(组装)变分形式 。
...【章节目录】
第2章和第3章讨论的有限元的概念(Ciarlet定义)是由DOLFIN FiniteElement类实现的。 此类在C++和Python接口中的实现方式有所不同。
...【章节目录】
DOLFIN的核心部分是其网格库和Mesh类。 网格库为计算网格提供了数据结构和算法,包括网格连通性(重合关系),网格细化,网格划分和网格相交的计算。
...【章节目录】
DOLFIN被组织为库(模块)的集合,每个库都覆盖某个功能区域。 我们在这里回顾这些领域,并解释最常用的类和函数的用途和用法。 回顾是自下而上的; 也就是说,我们首先描述DOLFIN的核心低层功能(线性代数和网格),然后向上移动以描述高层功能。 有关更多详细信息,请参阅FEniCS项目网页上的DOLFIN程序员参考和Logg and Wells(2010)。
...【章节目录】
DOLFIN是一个用作FEniCS主要用户接口的C++/Python库。 在本章中,我们将回顾DOLFIN的功能。 我们还将详细讨论DOLFIN某些关键特性的实现。 有关DOLFIN的设计和实现的一般讨论,请参见Logg and Wells(2010)。
...【章节目录】
第8章中,用于单元张量 \(A_T\) 计算的张量缩并结构不仅可以构造变分形式编译器,而且还可以优化编译器。 对于典型的变分形式,参考张量 \(A^0\) 具有显著的结构,允许以较低计算成本在任意胞元 \(T\) 上计算单元张量 \(A_T\) 。 利用这种结构减少运算次数,自然会导致离散数学中的几个问题。 本章介绍了一些可能的优化,并讨论了构成FErari项目核心的编译时组合优化问题(Kirby等,2006; Kirby和Scott,2007; Kirby和Logg,2008),这是 第12章的主题。
...【章节目录】
在第6章中,对有限元变分问题离散化,我们看到在矩阵和向量组装中的一个重要步骤是计算由下式定义的胞元(单元)张量 \(A_T\)
\[ A_{T,i} = a_T(\phi_{i_\rho}^{T,\rho}, \dots , \phi_{i_2}^{T,2}, \phi_{i_1}^{T,1}) \tag{8.1} \]这里,
\(a_T\)
是对多重线性形式
\(a:V_\rho\times\dots\times V_2\times V_1 \to \mathbb{R}\)
的局部贡献,
\(i=(i_1,i_2,\dots,i_\rho)\)
是长为
\(\rho\)
的多重指标,并且
\(\{\phi_k^{T,j}\}^{n_j}_{k=1}\)
是局部胞元
\(T\)
上的局部有限元空间
\(V_{j,h} \subset V_j,\quad j = 1, 2, \dots, \rho\)
的基底。 在本章中,我们描述了如何通过称为张量表示
的方法来有效地计算胞元张量
\(A_T\)
。
【章节目录】
在本节中,我们研究上一节概述的优化策略对运行时性能的影响。 关键不是要对优化进行严格的分析,而是要提供有关不同策略何时最有效的指示。 我们还将比较正交表示和张量表示的运行时性能(在第8章中进行了介绍),以说明两种方法的优缺点。
...