More concretely, when you sample a quadratic shear strain (which has a spurious locking term) at these two points and then interpolate linearly between them, the quadratic parasitic term averages out exactly. That is the mechanism of locking removal.
For Q4 (bilinear displacement), the shear strain polynomial spaces follow directly from differentiating the displacement field $w = a_0 + a_1\\xi + a_2\\eta + a_3\\xi\\eta$ with respect to the parametric coordinates; $\\partial w/\\partial\\xi = a_1 + a_3\\eta$ which is constant in $\\xi$, linear in $\\eta$ and similarly for $\\partial w/\\partial\\eta = a_2 + a_3\\xi$ which is linear in $\\xi$, constant in $\\eta$
MITC Type
On a triangle the two natural directions are not enough: the shear along the hypotenuse, $\\gamma_q = (\\gamma_2-\\gamma_1)/\\sqrt{2}$, must be tied as well, so the assumed $\\tilde\\gamma_1$ also depends on tied $\\gamma_2$ values. The triangular elements are therefore built from an assumed strain space and a list of tying conditions by tying_weights, following Lee & Bathe (2004).
FerriteShells.MITC — Type
MITC{N,M,T}Mixed Interpolation of Tensorial Components data for the N-node shell element (Bucalem & Bathe 1993). Eliminates transverse shear locking by evaluating the covariant shear strains $\gamma_\alpha = a_\alpha \cdot d$ at fixed tying points and interpolating back to Gauss points.
The M tying entries are component-tagged: entry k ties the covariant component α_tie[k] at ξ_tie[k], and both h_tie_1 and h_tie_2 span all entries, $\gamma_\alpha(\xi_q) = \sum_k h^\alpha_{qk}\,\gamma_k$. Quadrilateral schemes leave the off-component columns zero ($\gamma_1$ is built from $\gamma_1$ tying values only); triangular ones do not, since the hypotenuse condition couples the two components (Lee & Bathe 2004).
Every scheme is declared the same way: a tying_conditions(::typeof(MITCx)) method returning its tying conditions and the assumed-strain space they are tied against, which the shared MITC{N}(ip_shape, qr, scheme) constructor feeds to tying_weights.
Static fields (N_tie, dN_tie, h_tie_*) are precomputed once at construction. Mutable fields (A_tie, d₀_tie, *_node) are updated each reinit! call.
FerriteShells.MITC9 — Function
MITC{9,12,T}Mixed Interpolation of Tensorial Components data for the 9-node quadrilateral shell element (Bucalem & Bathe 1993).
Tying points (reference domain $[-1,1]^2$), on the $\pm1/\sqrt3$ Gauss lines: $\gamma_1 = a_1 \cdot d$ at $(\pm1/\sqrt3,\ -1), (\pm1/\sqrt3,\ 0), (\pm1/\sqrt3,\ +1)$ $\gamma_2 = a_2 \cdot d$ at $(-1,\ \pm1/\sqrt3), (0,\ \pm1/\sqrt3), (+1,\ \pm1/\sqrt3)$ Each condition ties a single covariant component, so $M = 12$ and the off-component columns of h_tie_1/h_tie_2 vanish.
Assumed field: $\tilde\gamma_1 \in$ span$\{1,\xi_1\}\otimes\{1,\xi_2,\xi_2^2\}$ — linear in $\xi_1$, quadratic in $\xi_2$ — and $\tilde\gamma_2$ its transpose. The $\pm1/\sqrt3$ stations are the superconvergent points of the degree that is dropped.
FerriteShells.MITC4 — Function
MITC{4,4,T}Mixed Interpolation of Tensorial Components data for the 4-node quadrilateral shell element (Dvorkin & Bathe 1984).
Tying points (reference domain $[-1,1]^2$), at the edge midpoints: $\gamma_1 = a_1 \cdot d$ at $(0, \pm1)$ $\gamma_2 = a_2 \cdot d$ at $(\pm1, 0)$ Each condition ties a single covariant component, so $M = 4$ and the off-component columns of h_tie_1/h_tie_2 vanish.
Assumed field: $\tilde\gamma_1 = a_1 + b_1\xi_2$ (constant in $\xi_1$, linear in $\xi_2$) and $\tilde\gamma_2 = a_2 + b_2\xi_1$, the spaces obtained by differentiating the bilinear displacement field $w = c_0 + c_1\xi_1 + c_2\xi_2 + c_3\xi_1\xi_2$.
FerriteShells.MITC6a — Function
MITC{6,10,T}Mixed Interpolation of Tensorial Components data for the 6-node triangular shell element, variant MITC6-a (Lee & Bathe 2004, Eq. 35–39) — linear transverse shear along the edges plus one interior tying point carrying the quadratic part.
Tying points (reference domain $r,s \ge 0$, $r+s \le 1$): the two Gauss stations $1/2 \mp 1/(2\sqrt3)$ of each edge — $\gamma_1$ on $s=0$, $\gamma_2$ on $r=0$, and $\gamma_q = (\gamma_2-\gamma_1)/\sqrt{2}$ on the hypotenuse — plus the centroid $(1/3,1/3)$. The hypotenuse and centroid conditions need both covariant components, giving $M = 10$ entries.
Assumed field (rotated Raviart–Thomas $RT_1$, the MITC7 plate space), Lee & Bathe Eq. (39): $\tilde\gamma_1 = a_1 + b_1 r + c_1 s + s(d r + e s)$, $\tilde\gamma_2 = a_2 + b_2 r + c_2 s - r(d r + e s)$.
Dropping the two interior conditions and the last two basis fields gives the linear variant MITC6-b (Eq. 40–41), which is stiffer in bending-dominated problems.
FerriteShells.MITC3 — Function
MITC{3,4,T}Mixed Interpolation of Tensorial Components data for the 3-node triangular shell element (Lee & Bathe 2004). The transverse shear is assumed constant along each edge, the triangular counterpart of MITC4.
Tying points (reference domain $r,s \ge 0$, $r+s \le 1$), at the edge midpoints: $\gamma_1 = a_1 \cdot d$ at $(1/2, 0)$ $\gamma_2 = a_2 \cdot d$ at $(0, 1/2)$ $\gamma_q = (\gamma_2-\gamma_1)/\sqrt{2}$ at $(1/2, 1/2)$ — the hypotenuse condition, which needs both covariant components there, giving $M = 4$ tying entries.
Assumed field (rotated Raviart–Thomas $RT_0$), Lee & Bathe Eq. (25): $\tilde\gamma_1 = a_1 + c\,s$, $\tilde\gamma_2 = a_2 - c\,r$, i.e. the span of $(1,0)$, $(0,1)$ and $(s,-r)$.
FerriteShells.tying_shear_strains — Function
tying_shear_strains(mitc::MITC{N,M,T}, u_e)Compute the covariant shear strain $\gamma_k = a_{\alpha_k} \cdot d$ of every tying entry k from the current DOF vector u_e (5 DOFs/node: [$u_1$,$u_2$,$u_3$,$\varphi_1$,$\varphi_2$,$\cdots$]). Returns an NTuple of length M, ForwardDiff-safe. Each value subtracts its own reference $A_{\alpha_k}\cdot G_3$, so the tying strains vanish in the reference configuration. Call once before the quadrature-point loop and pass to shear_strains.
FerriteShells.shear_strains — Function
shear_strains(a₁, a₂, d, qp, γ_k, mitc)Return (γ₁, γ₂) at quadrature point qp. With MITC: weighted sum of the tying-entry values from tying_shear_strains. Without MITC: direct dot(a₁, d), dot(a₂, d).
FerriteShells.tying_weights — Function
tying_weights(qr, conds, basis)Build the tying entries and interpolation weights of an assumed transverse-shear field $\tilde\gamma(\xi) = \sum_j c_j P_j(\xi)$ from its tying conditions (Lee & Bathe 2004, §3.2).
basis[j](ξ) -> Vec{2}— the $j$-th assumed field, as covariant components $(\gamma_1,\gamma_2)$.conds[i] = (ξ, w)— condition $w \cdot \tilde\gamma(\xi) = w \cdot \gamma(\xi)$, withwthe tied direction:Ê₁/Ê₂on the $\xi_1$/$\xi_2$ edges,Ê_qon the hypotenuse.
A condition needs the displacement-based $\gamma_\alpha(\xi)$ for every component with $w_\alpha \neq 0$; the union of those $(\xi,\alpha)$ pairs forms the tying entries $k = 1\ldots M$. With C[i,j] = w_i ⋅ P_j(ξ_i) and W[i,k] = w_i[α_k] (entry k located at ξ_i, else 0), the coefficients are $c = C^{-1} W \gamma^\text{tie}$, hence $h_\alpha[q,k] = \sum_j P_j(\xi_q)_\alpha (C^{-1}W)_{jk}$.