Hello,
I have been working on domain decomposition methods using FEniCS to assemble global and local subdomain problems. One way to perform the domain decomposition is to copy local portions of a global mesh into separate local meshes, then assemble subdomain problems on those local meshes.
I have noticed that when using 'CG' function spaces for Poisson problems, everything is copacetic. I can assemble a local subdomain matrix over the local meshes as well as restrict the global matrix into subdomain DOFs, and the resulting matrices are the same. However, when using H(curl) function spaces, the restricted and the assembled matrices differ in sign at a large number of elements in the matrix.
I am wondering if this could be due to cell/facet/edge orientations somehow. I know that if I iterate through each mesh and print cell.orientation() that they are indeed different, and I am worried that this is somehow to blame for the sign difference when computing curls and cross-products.
I would appreciate any insight into this, as well as any information about controlling the orientations of the copied local mesh to match the global mesh.