While experimenting with periodic elements on a cubic mesh with an inclusion, I tried to write down a basic loop to display the values of my solution at the interface. The code gives back an array length error telling me that the periodic function has less DOF than the mesh. The following is a minimal script I wrote to reproduce the error.
load "medit" load "mmg" load "msh3" int nn = 10; int[int] rt=[1,2,3,4,5,6]; //required triangles, kept unchanged by mmg; mesh3 Th=cube(nn,nn,nn,[x,y,z]); func sphere = (x-0.5)^2+(y-0.5)^2+(z-0.5)^2-0.2^2; // level_set initialisation of a sphere fespace Vh(Th,P1); Vh phi=sphere; Th=mmg3d(Th,metric=phi,iso=1,ls=0,hausd=0.008,hgrad=1,hmin=0.01,hmax=0.1,mem=1000,requiredTriangle=rt); // implicit meshing by mmg medit("mesh",Th);// display the resulting mesh; fespace Vhp(Th,P1,periodic=[[1,x,z],[3,x,z],[2,y,z],[4,y,z],[5,x,y],[6,x,y]]); //periodic element fespace Vh F; Vhp Fp; cout << " The DOF of the mesh is " << Th.nv << ", The DOF of Vh is " << F.n << ", finally, the DOF of Vhp (periodic elements space) is " << Fp.n << endl;
It gives back the following message :
The DOF of the mesh is 2551, The DOF od Vh is -- FESpace: Nb of Nodes 2551 Nb of DoF 2551 2551, finally, the DOF of Vhp (periodic elements space) is 2220
Can anyone please tell me what I’m missing about the 331 difference in DOF? Thank you in advance for your help ^^