记录 JuAFEM 3 -- close!()

本文详细解析了DofHandler.jl中close!()函数的工作原理,该函数用于四边形网格上的Q1元分配自由度(dofs)。通过生成[-1,1]x[-1,1]的2dim四边形网格,演示了如何使用close!()函数,并解释了dh.cell_dofs_offset的作用,记录每个cell上dofs的偏移量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DofHandler.jlclose!()

以下说明,针对四边形网格上的 Q1


为了方便检验程序,我们生成一个 [-1,1]x[-1,1]2dim 四边形网格,以及生成 dh

grid = generate_grid(Quadrilateral, (2, 2));
dh = DofHandler(grid)
push!(dh, :u, 1)
close!(dh);

网格如图中
在这里插入图片描述
其中

  • 1, 2, 3, 为 node 的编号
  • Circle 1, Circle 2, Circle 2, 为 cell 的编号
  • (1), (2), (3), 为 cell dofs 的编号 (Q1元)

分别可以通过输出 grid.cells, grid.nodes, dh.cell_dofs 来检验.


那么,整个 close!() 函数其实就是用来分布 dofs 的,这个 dofs 并不依赖 node 的编号,如果我自己写的话,还是会通过 node face 等的编号来分布 dofs.
另外 dh.cell_dofs_offset 表示记录每个 celldofs 的偏移量(offset),并且为了方便用 dh.cell_dofs_offset 多记录了一个单元,即

  • Circle 1 个单元,dh.cell_dofs_offset[1] == 1
  • Circle 2 个单元,dh.cell_dofs_offset[2] == 5 # (1 + 4), for Q1-element, there are 4-dofs in one cell
  • Circle 3 个单元,dh.cell_dofs_offset[3] == 9 # (1 + 2*4)
  • Circle 4 个单元,dh.cell_dofs_offset[4] == 13 # (1 + 3*4)
  • dh.cell_dofs_offset[5] == 17 # (1 + 4*4)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值