//1.定义边长为6的正方形区域
border a0(t=-1,1){x=3;y=3*t;}
border a1(t=1,-1){x=3*t;y=3;}
border a2(t=1,-1){x=-3;y=3*t;}
border a3(t=-1,1){x=3*t;y=-3;}//2.初剖分区域
mesh Th =buildmesh(a0(2)+a1(2)+a2(2)+a3(2));//3.给定网格尺寸函数
fespace Vh(Th,P1);
real hinit =0.5;
Vh h = hinit;// to build a mesh with a given mesh size : meshsize//4.重构网格
Th=adaptmesh(Th,h,IsMetric=1,splitpbedge=1,nbvx=100000);//5.0画网格plot(Th);
结果如下。
2.网格尺寸为函数
定义待剖分区域;
初剖分区域;
给定网格尺寸函数;
重构网格;
//1.定义边长为6的正方形区域
border a0(t=-1,1){x=3;y=3*t;}
border a1(t=1,-1){x=3*t;y=3;}
border a2(t=1,-1){x=-3;y=3*t;}
border a3(t=-1,1){x=3*t;y=-3;}//2.初剖分区域
mesh Th =buildmesh(a0(2)+a1(2)+a2(2)+a3(2));//3.给定网格尺寸函数
fespace Vh(Th,P1);
func hinit =0.2*abs(sqrt(x*y)-1.5)+0.01;
Vh h = hinit;// to build a mesh with a given mesh size : meshsize//4.重构网格,此时需要迭代优化for(int i=0;i<3;++i){
Th=adaptmesh(Th,h,IsMetric=1,splitpbedge=1,nbvx=100000);
h = hinit;plot(Th);}