Dear all,
Can anyone please comment on changing labels of the vertices on the edge after adaptmesh()
?
And suggestions to fixate the newly created vertices would be greatly appreciated, if possible.
border m1(t=-0., 1){x=t; y=0.; label=1;};
border m2(t=0., 0.5){x=1.; y=t; label=2;};
border m3(t=0., 0.5){x=1.-t; y=0.5; label=1;};
border m4(t=0.5, 1.){x=0.5; y=t; label=1;};
border m5(t=0.5, 1.){x=1-t; y=1.; label=1;};
border m6(t=0, 1.){x=0; y=1-t; label=1;};
real nn = 20;
mesh Th = buildmesh(m1(nn) + m2(nn/2) + m3(nn/2) + m4(nn/2) + m5(nn/2) + m6(nn));
savemesh(Th, "tmpMesh0.mesh");
//int[int] re=[1,1, 0,1];
//Th=change(Th, refe=re, flabel = 1); // with this, -1717986920 changes to -1
Th = adaptmesh(Th, 1./30., IsMetric=1, nbvx=100000);
savemesh(Th, "tmpMesh.mesh");
Initially (ie “tmpMesh0.mesh”), the labels on the border m1~m6 are either 1 or 2 (no corner ambiguity is found therein).
However, after the adaptmesh()
command shown above, the labels at the corner nodes (intersections between the borders) become random integers, although the nodes are not newly created ones.
For instance, the labels of nodes (x,y) = (1.0, 0.5) and (0, 0) are changed from 1 to -1717986920 and 0, respectively.
So far the problem only occurs at the intersections of the boundaries.
Also, is it possible to manually change the label of the specified node? (it seems changing the label via Th(index).label = *arbitrary integer*
is strictly prohibited.
I am using the latest version of ff++.
Thank you so much for your consideration.