fenics 笔记 2 —— 程序组成

总的来说,基于 fenics 的程序,可大致划分为 4 个部分:问题域边界条件问题描述求解


1 - 问题域

首先,需要定义需要求解的问题域。通常,问题域可离散为网格单元。此外,为了准确表示问题域中的不同区域,如多种材料、边界等,常常在网格中加入标记。

一般来说,流程如下:

1> 创建网格,即 dolfin.Mesh 。一般来说,可以借助 mashr 从文件中读取,也可以借助内置函数创建简单/规则形状的网格。例如:

mesh = dolfin.UnitSquareMesh(8,8)

2> 创建函数空间,即 dolfin.FunctionSpace 。一般来说,如下定义:

V = dolfin.FunctionSpace(mesh, 'p', 1)

3> 子域 / 标记

在 fenics / dolfin 中,需要区分网格中的不用部分,如不同具有不同参数,或边界等,一般需涉及 子域 以及 标记

子域

dolfin.SubDomain

标记

标记则一般通过 dolfin.MeshFunction 来进行标记,或通过其他软件绘制网格的时候,可以提前加入标记

2 - 边界条件

一般,三种边界条件 dolfin.DirichletBCdolfin.NeumannBCxx

3 - 问题描述

通过变分后,描述需要求解的问题

4 - 求解

直接求解就可以了

原文地址:https://www.cnblogs.com/wghou09/p/14396299.html