Compilation error in code " err code 6 , mpirank 0 " application of boundary conditions

I get this error when I apply periodic boundary conditions. Can any one help me please !
current line = 133
Assertion fail : (im->second == kv)
line :250, in file lgmesh3.cpp
Assertion fail : (im->second == kv)
line :250, in file lgmesh3.cpp
err code 6 , mpirank 0

you find in attached a part of the code and .mesh files
aircc.mesh (78.7 KB)
airco.mesh (91.9 KB)
Mixed_cell_hom.edp (3.4 KB)
pucc.mesh (57.6 KB)
puco.mesh (55.7 KB)

The mesh of face have correct, possible problem of round off.

I have had the code to see if the face mesh are compatible.

for (int i=1; i<=6;i=i+2)
int[int] ll=[i*100], ll1=[(i+1)*100];
meshS Th1 =extract(Th,label=ll);
meshS Th2 =extract(Th,label=ll1);
real s1 =Th1.mesure;
real s2 =Th2.mesure;

	real vx = (int2d(Th1)(x)/s1 - int2d(Th2)(x)/s2)*1.01 ;
	real vy = (int2d(Th1)(y)/s1 - int2d(Th2)(y)/s2)*1.01 ;
	real vz = (int2d(Th1)(z)/s1 - int2d(Th2)(z)/s2)*1.01;
	Th1 = movemesh(Th1,[x-vx,y-vy,z-vz]);
	cout << " move ??? " << vx << " " << vy << " "<< vz << " m=" << s1 << endl;


The next Idea is to try to see the Th1 and Th2 are equal or very close .

with the projection function.

If I had time I try to add this functionality.

Thank you so much.
i try this code and i find :
move ??? -9.2019e-05 -9.39775e-05 -4.03997 m=16
move ??? -4.0401 -2.27204e-05 -3.01004e-06 m=16
move ??? -2.3316e-05 -4.04011 -4.70643e-06 m=16.0001

Do I need to make a mesh or geometry correction ?

remark, the number of vertices i face 100 and 200 are no the same

cout << " Ns ?? " <<Th1.nv <<" "<< Th2.nv << endl;

Ns ?? 1561 1241
Nt ?? 2272 2272

so the Problem is before !!!

Yes, i test also the number of elements and i find that the surfaces have the same number :

then when i reduce the geometry.tolerance on gmsh :
i get other error :

The Numbers of vertices are incorrect, this is Wh y thé périodicité bcp do not works

By round off error you mean it can’t connect the pieces? A long time ago, I was
curious about making a mesh with rational numbers. Floating point is a huge
problem if you are ever going to do equality tests lol. You could object to
things like speed or other factors but at some point maybe you could
convert it to float.