加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

FreeFEM笔记-adaptmesh函数

(2014-05-28 09:46:29)
标签:

教育

分类: openFEM

adaptmesh函数

ATh = adaptmesh(Th, func1,func2,...)

ATh: 生成的自适应网格; Th: 原始网格; funcN: 函数。

功能:当func的值梯度很大使,可使用adaptmesh进行网格Hessian自适应划分。

其他参数:

hmin,hmax: 最小,大网格尺寸;     err: P1插值误差默认值0.01; 

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  u = (10*x^3+y^3) +  atan2(0.001,(sin(5*y)-2*x));
func  v = (10*y^3+x^3) +  atan2(0.01,(sin(5*x)-2*y));

fespace Vh(Th,P1);
Vh fh =u+v;

//plot(Th,fh,fill=1);
int nn = Th.nv;
for(int iter=0;iter < 20; ++iter )
{
  Th = adaptmesh(Th,fh,err=0.05,nbvx=50000,thetamax=30);
  if(abs(Th.nv - nn) < nn*0.01) break;
  nn = Th.nv; 
  plot(Th, cmm = iter + " nv =" + Th.nv );
fh= u+v;
}
plot(Th,fh,fill=1);

FreeFEM笔记-adaptmesh函数
初始网格:
FreeFEM笔记-adaptmesh函数

自适应后网格:

FreeFEM笔记-adaptmesh函数

mxio

2014.5.28

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有