DoFs of `N1curl(k)` and `∇CG(k + 1)` regarding the Coulomb gage

Hello,

I have a question about DoFs of N1curl(k) and ∇CG(k + 1) regarding the Coulomb gauge for N1curl elements.

I think that DoFs that I want to suppress in N1curl for the Coulomb gauge are any DoFs which are also included in ∇CG(k + 1) since inner(u, grad(v)) * dx = 0 for all v in CG(k + 1) means div(u) = 0 on the domain in some sense.

But things get complicated since N1curl(k) does not include all of ∇CG(k + 1) but only some of them. If I enforce u \perp \nabla \mathrm{CG}(k + 1), it would be a over-determined system.

I think N1curl(k) includes all of ∇CG(k). But if I only enforce u \perp \nabla \mathrm{CG}(k). The problem is still singular (under-determined) and requires additional regularization. And even after that a solution u might still have some bad DoFs left in it.

Anyone has idea about this approach?
Best

Actually, I realized that for tetrahedral cells, N1curl(k) is designed to exclude all of ∇CG(k + 1) \ ∇CG(k + 1) since \nabla p(\mathbf{x}) \cdot \mathbf{x} = (k + 1) p for a homogeneous polynomial p of order k + 1.
So, \nabla \mathrm{CG}(k + 1) \cap \mathrm{N1curl}(k) = \nabla \mathrm{CG}(k). And it is OK to enforce u \perp \nabla \mathrm{CG}(k) to achieve the Coulomb gauge (in some weak sense) for u \in \mathrm{N1curl}(k).