版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mifangdebaise/article/details/82934576
DofHandler.jl
中 close!()
以下说明,针对四边形网格上的 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
表示记录每个 cell
上 dofs
的偏移量(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)