FreeFEM笔记-adaptmesh函数

标签:
教育 |
分类: openFEM |
adaptmesh函数
ATh = adaptmesh(Th, func1,func2,...)
ATh: 生成的自适应网格; Th: 原始网格; funcN: 函数。
功能:当func的值梯度很大使,可使用adaptmesh进行网格Hessian自适应划分。
其他参数:
hmin,hmax:
最小,大网格尺寸;
errg: 相对几何误差,默认值0.01,在默些情况下必须小于1/sqrt(2),由于几何的约束这一项可能使得某些网格尺寸小于-hmin。
nbvx: 网格划分生成的最大节点数,默认值9000;
nbsmooth: 平滑处理的次数,默认值5;
nbjacoby: 在一次平滑步中平滑计算的迭代步数,默认值6,设置为0为不平滑。
ratio: 平滑比例,当比例 0<=ratio<=1.1时不平滑,默认值1.8,当ratio>1.1时,网格变化速度受制于log(ratio)。这样有助于控制加密区域如激波区域或边界层的厚度。
omega: 平滑过程的松弛因子,默认值1;
iso: 加载到metric上的力为各项同性的,默认值:false;
abserror: 绝对误差,默认值false;
cutoff: 截断误差,默认1e-6;
verbosity: 信息标记;
inquire: 默认值false;
splitpbedge: 小于一半尺寸时分割网格边界,默认值:真;
maxsubdiv: 最大细分次数,默认值:10;
rescaleing: 默认值:真;
keepbackvertices: 默认值:真;
isMetric: 默认值:假;显式给定Hessian函数,eg: adaptmesh(Th,fxx,fxy,fyy,IsMetric=1,....);
power: Hessian指数,默认值1;
thetamax: 最小转角的度数,默认值:10度;
splitin2: 分割所有三角形网格成4个子三角;
metric: metic数组;
nomeshgeneration:如果为真,那么不生成自适应网格;
periodic: 建立周期网格。
用法举例:
网格需要自适应的函数:
border C(t=0,2*pi){x=cos(t);y=sin(t);}
mesh Th= buildmesh(C(20));
func
func
fespace Vh(Th,P1);
Vh fh =u+v;
//plot(Th,fh,fill=1);
int nn = Th.nv;
for(int iter=0;iter < 20; ++iter )
{
fh= u+v;
}
plot(Th,fh,fill=1);
mxio
2014.5.28