Periodic boundary conditions on Gmsh mesh

Hello,

I am trying to solve a problem with periodic BCs on a pair of opposite faces. The 3D mesh is built with Gmsh. I was careful to have identical 2D meshes on the two faces when building the mesh (using the Gmsh command Periodic Surface {...} = {...} Translate {...};).

Everything works fine if I don’t try to impose periodic BCs, but I get an error message that looks like this if I define a FE space with periodic BCs:

Exec error : Periodic 3d:  the both number of face is not the same
   -- number :1
 err code 8 ,  mpirank 3
 vertex : 9 31.1703 0 0 214  Abscisses: s = 31.1703 0  2 0
 missing Border element : 555  105 107 194
 vertex : 282 -17.8123 13.1265 0 312  Abscisses: s = -17.8123 13.1265  23 141
 Exec error : periodic: Sorry one vertex of face is losted

Here is something close to a MWE:

load "msh3"
load "PETSc"        
load "gmsh"
int[int] n2oSaved;
int[int] n2oLoaded;
macro dimension()3// EOM            
include "macro_ddm.idp"             
macro def(i)[i, i#B, i#C, i#D]//   
macro init(i)[i, i, i, i]// EOM    
func Pk = [P1b,P1b,P1b,P1];
mesh3 Th = readmesh3("mesh.mesh");

Mat A;
macro ThN2O()n2oSaved//
createMat(Th, A, Pk); 
fespace Wh(Th, Pk); // works 
fespace Wh(Th, Pk, periodic=[[6,x,y],[7,x,y]]); // does not work

I can send the mesh if needed.

Has anyone faced the same problem or, conversely, managed to use periodic BCs with a Gmsh mesh?

Thank you.

Indeed, we need the mesh.

Here it is: mesh.mesh (243.5 KB).
I modified it slightly in the meantime, so the specific numbers (labels, coordinates etc) in the error message are different, but qualitatively it is the same idea.

Thanks.

Hi,
Did you prj (or someone else) had the chance to have a look? Thank you.