How to define projection of tangential jump between interior and facet

I tried to reproduce the numerical part of this paper: A Strongly Conservative Hybrid DG/Mixed FEM for the Coupling of Stokes and Darcy Flow
They defined the bilinear forms as follows.
[tex]\begin{aligned} a_{S,h}({{\underline{ {{u}}}}}, {{\underline{ {{v}}}}}) :=& ; \sum {T\in \mathcal {T}{h,S}}\int _T2\nu ,\varepsilon ( {u}_T):\varepsilon ( {v}_T),\mathrm {dx} -\int _{\partial T}2\nu ,\varepsilon ( {u}_T) {n}\cdot [![{{\underline{ {{v}}}}}^t ]!],\mathrm {ds} \nonumber \& ; -\int _{\partial T}2\nu ,\varepsilon ( {v}_T) {n}\cdot [![{{\underline{ {{u}}}}}^t ]!],\mathrm {ds} + \int _{\partial T}\nu \frac{\alpha }{h}\Pi [![{{\underline{ {{u}}}}}^t ]!]\cdot \Pi [![{{\underline{ {{v}}}}}^t ]!],\mathrm {ds}, \end{aligned}[/tex]

[tex]\begin{aligned} a_{D}({{\underline{ {{u}}}}}, {{\underline{ {{v}}}}}) :=& ; \sum {T\in \mathcal {T}{h,S}}\int _T K^{-1} {u}_T\cdot {v}_T,\mathrm {dx},\end{aligned}[/tex]

[tex]\begin{aligned} a_{I}({{\underline{ {{u}}}}}, {{\underline{ {{v}}}}}) :=& ; \sum {F\in \mathcal {F}{h,SD}}\int _F \gamma K^{-1/2} {u}_F\cdot {v}_F,\mathrm {ds},\end{aligned}[/tex]

[tex]\begin{aligned} a_h({{\underline{ {{u}}}}}, {{\underline{ {{v}}}}}) : =& ; a_{S,h}({{\underline{ {{u}}}}}, {{\underline{ {{v}}}}}) + a_{D}({{\underline{ {{u}}}}}, {{\underline{ {{v}}}}}) +a_{I}({{\underline{ {{u}}}}}, {{\underline{ {{v}}}}}),\nonumber \ b({{\underline{ {{u}}}}}, q) =& ;-\sum _{T\in \mathcal {T}_h}\int _T {\nabla \cdot } {u}_T q,\mathrm {dx}, \end{aligned}[/tex]

where [tex][[{{\underline{{{u}}}}}^t ]!]= {u}_T^t-{u}_F[/tex] is the (tangential) jump between interior and facet unknowns.
I defined the tangential components and its jumps.

V = HDiv(mesh, order=3, dirichlet=“GammaS|GammaD”)
Vbar=TangentialFacetFESpace (mesh, order = k, dirichlet=“GammaS”)
Q = L2(mesh, order=2)
X = FESpace([V,Vbar, Q,R])
u,ubar, p = X.TrialFunction()
v,vbar, q = X.TestFunction()

du = grad(u)
dv = grad(v)
eps_u = 0.5*(du+du.trans)
eps_v = 0.5*(dv+dv.trans)

def tangent(vec):
return vec - (vec*n)*n

jump_vt = tangent(v)-vbar
jump_ut = tangent(u)-ubar[/code]
But I don’t know how to construct their projection [tex]\Pi [![{{\underline{ {{u}}}}}^t ]!], \Pi [![{{\underline{ {{v}}}}}^t ]!][/tex] in the last term of a_hS.
Could you please tell me how to define projection of tangential jump between interior and facet in NGsolve?

By the way, the sum [tex]a_{D}({{\underline{ {{u}}}}}, {{\underline{ {{v}}}}}) := ; \sum {T\in \mathcal {T}{h,S}}\int _T K^{-1} {u}_T\cdot {v}_T,\mathrm {dx}[/tex] is defined on S instead of D. I think it’s a typo, but I’m not sure.

Thank you so much.

it is explained in this paper, read that one first: Lehrenfeld+Schöberl: “High order exactly divergence-free Hybrid Discontinuous Galerkin Methods for unsteady incompressible flows”, Computer Methods in Applied Mechanics and Engineering Volume 307, 1 August 2016, Pages 339-361

and also Lehrenfeld’s master’s thesis.


Thank you so much for your suggestion. I will read them.