The issue with periodic BCs is that you have to alter the sparsity pattern and index maps underlying your FunctionSpace
s, no matter how simple or complicated those may be. A general framework for enforcing periodic boundary conditions for scalable solution via MPI is not trivial.
dolfinx_mpc
is very likely the best option for you; its compilation and installation should be straightforward without root access. The syntax here for the periodic Poisson problem is quite similar to old DOLFIN.
If your domain is not a simple shape, and the periodic boundaries are best defined topologically then dolfinx_mpc
is absolutely the way to go as topological searches are available.
And finally: if your periodic boundary’s mesh does not conform on both “sides”, dolfinx_mpc
takes care of this for you with linear combinations of the appropriate finite element bases over non-matching elements. Provided your “support” degrees of freedom are as fine or coarser than your “main” degrees of freedom, you should converge at optimal rates.