学习step-40的例子.
网格生成函数
在dealii中使用的命名空间,里边包含了一些基本的几何模型网格生成,2维问题只能生成四边形网格,三维问题只能生成六面体网格.
里面有很多函数,作用的大同小异.
对使用到的一个函数进行分析:
hyper_cube (Triangulation< dim, spacedim > &tria, const double left=0., const double right=1., const bool colorize=false)
作用:
生成一个正方形网格.模型尺寸为:(left,left)和(right,right)构成的正方体.
# 参数说明:
tria 是一个用来存放网格数据格式.它的参数说明:有两个参数 dim 和spacedim.
当dim<spacedim时,比如dim=2,spacedim=3,此时网格本质是二维(dim)网格,但其使用的坐标(spacedim)是三维的,即坐标是z方向的坐标值为0.即生成的网格是二维的网格. dim 代表模型网格属性 spacedim 代表模型的空间位置
left 坐标轴方向的最小值
right 坐标轴方向的最大值 当left=-1,right=1时,生成一个网格,顶点坐标(-1,-1),(1,1)的一个立方体.
colorize 表示是否对边界进行染色(标记),当为否的话,默认所有边界的标记都是0;当使用标记的话,x方向上,对应的标记值为0,1(左右),y方向的标记值为2,3(上下),z方向的标记值为4,5.(前后)
参考坐标:
y
|
|
|
|
|__ __ __ __ __ __x
/
/
/
/
z
处理约束的函数
使用到命名空间中的一些函数,该命名空间的主要作用是提供了一些关于向量的操作。其中包括标准矢量的组合,有限元解和连续函数的差的积分,连续函数的插值和投影到有限元空间和其他操作。
里面有很多很方便的函数,具体好的其他功能,之后学习之后更新.
下面主要学习这个边界差值函数:,它有很多的
interpolate_boundary_values(const DoFHandlerType <dim,spacedim>&dof,const types :: boundary_id boundary_component,const Function <spacedim,number>&boundary_function,ConstraintMatrix&constraints,const ComponentMask&component_mask = ComponentMask())
作用:
根据网格的拓扑信息和自由度信息(两个信息存放在dof上),对该模型中制定的边界上使用差值函数boundary_function进行操作,让后将该边界上差值后的值放到constraints矩阵中.componentMarsk在处理向量值问题的时候使用.暂时还不知道作用.
eg:
VectorTools::interpolate_boundary_values (dof_handler,
0,
Functions::ZeroFunction<dim>(),
constraints);
当我这样调用时,就是想把边界id编号为0的边界使用差值函数(Functions::ZeroFunction<dim>()(0差值函数,导致最后所有点的值为0)),放到constranints上.
当我生成网格的时候,没有对边界进行显示标记时,此时所有边界都是标记为0,则使用该函数说明把所有边界各个方向的自由度有约束住了.
constraints就是用来处理约束问题的.
问题
当我就想约束中每个节点上的某些自由度时,估计就应该直接使用该类中的一些函数了.(具体还不太清楚)