• 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 - 求解

    直接求解就可以了

  • 相关阅读:
    leetcode_1423. 可获得的最大点数
    leetcode_剑指 Offer 06. 从尾到头打印链表
    leetcode_剑指 Offer 05. 替换空格
    leetcode_49. 字母异位词分组
    leetcode_73. 矩阵置零
    leetcode_26. 删除排序数组中的重复项
    jstack查看JVM堆栈信息
    如何画一张架构图
    百年孤独家谱
    阿尔萨斯(Arthas)入门
  • 原文地址:https://www.cnblogs.com/wghou09/p/14396299.html
Copyright © 2020-2023  润新知