Dear NGsolve comminuity,
I tried to perform adaptive mesh refinement for methods defined on Alfeld splits. I only want to perform refinement for the macromesh.
The initial mesh is given as follows
ngmesh = unit_square.GenerateMesh(maxh=0.2)
ngmesh.SplitAlfeld()
mesh = Mesh(ngmesh)
macromesh = ngmesh.macromesh
macromeshn = Mesh(macromesh)
def SolveBVP():
fes.Update()
gfu.Update()
a.Assemble()
f.Assemble()
print(fes.ndof)
gfu.vec.data += a.mat.Inverse(fes.FreeDofs()) *f.vec
Then after defining the solver and error estimator, I tried to use the following codes to perform refinement based on the macromesh
SolveBVP()
CalcError()
#mesh refinement
macromeshn.Refine()
ngmesh = macromesh
#update sub-triangle
ngmesh.SplitAlfeld()
mesh = Mesh(ngmesh)
macromesh = ngmesh.macromesh
macromeshn = Mesh(macromesh)
However, when I check the fes.ndof, it seems not to change after refinement. I think this is due to the refinement that I used (I refine the macromesh, then fes.Update could not update)
May I ask for some possible suggestions? Many thanks
Best regards,
Lina