deal.ii step-1 Lecture 5,6笔记

Triangulations 意为域的子域

等同于mesh,储存了cell

Triangulation类是cell的集合,cell即FEM中的element

大体是先定义triangulation,再使用GridGenerator::hyper_cube生成,其中refine_global这里是设置为4,意思是把每个方框都四分一下。即2D下一个方形分为4个方形,3D下一个立方对应的是分成8个小立方。后续可以通过grid out输出。

hypershell是定义两个圆形之间的区域

如果需要循环Triangulation里面的cell,则需要以下语句

Triangulation<2>::active_cell_iterator //你可以当作用指针指向cell,active意思是遍历那些active的cell,如果没有active就是遍历所有的
cell=triangulation.begin_active, //第一个cell
endc=triangulation.end() //最后一个cell

for (;cell!endc; ++cell)
for (unsigned int v=0;
v < GeometryInfo<2>::vertices_per_cell; //GeometryInfo<2>::vertices_per_cell储存了每个cell的vertices数量,此处值为0到4,GeometryInfo<3>的值便是8,这里用于遍历该cell的所有vertices
++v)
{
....
}

cell->vertex(v)得到该vertex的坐标。

默认下,deal.ii所有边界的indicator都是0

HyperShellBoundary定义了hypershell的边界,这样在refine的时候,这个例子下的dealii变知道了这是在圆上refine,而不是在这个方形边的线段中间取vertice

set_Boundary 后的第一个变量0即是定义indicator

for (auto cell: triangulation.active_cell_iterators())
  if (cell->center()[1] > 0)
    cell->set_refine_flag ();

这种语句可以只针对y坐标大于0的cell进行refine,如果[0]则表示x坐标

在Triangulation的最后,需要triangulation.reset_manifold(0);,用来清除定义Triangulation时定义的它。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值